Ë
    ¹ûàg¥"  ã                   ó´   — d Z ddlZddlmZ ddlmZ ddlmZ  ed«      Zh d£Z	d„ Z
d	„ Z G d
„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zd„ Zy)zCompare two HTML documents.é    N)Ú
HTMLParser)ÚVOID_ELEMENTS)Ú_lazy_re_compilez[\t\n\f\r ]+>   údefer ÚloopÚopenÚasyncÚismapÚmutedÚhiddenÚcheckedÚdefaultÚautoplayÚcontrolsÚdisabledÚmultipleÚnomoduleÚreadonlyÚrequiredÚreversedÚselectedÚ	autofocusÚ	itemscopeÚ	truespeedÚ
novalidateÚplaysinlineÚformnovalidateÚallowfullscreenc                 ó.   — t         j                  d| «      S )Nú )ÚASCII_WHITESPACEÚsub)Ústrings    úN/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/test/html.pyÚnormalize_whitespacer%   -   s   € Ü×Ñ  VÓ,Ð,ó    c           	      óæ   — g }| D ]i  \  }}|dk(  r6|r4dj                  t        d„ t        j                  |«      D «       «      «      }|t        v r
|r||k(  rd }n|€d}|j                  ||f«       Œk |S )NÚclassr    c              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­w©N© )Ú.0Úvalues     r$   ú	<genexpr>z'normalize_attributes.<locals>.<genexpr>8   s   è ø€ ÒQ Ê5”uÑQùs   ‚ŠÚ )ÚjoinÚsortedr!   ÚsplitÚBOOLEAN_ATTRIBUTESÚappend)Ú
attributesÚ
normalizedÚnamer-   s       r$   Únormalize_attributesr8   1   sŠ   € Ø€JØ!ò )‰ˆˆeØ�7Š?™uð —H‘HÜÑQÔ*:×*@Ñ*@ÀÓ*GÔQÓQóˆEð Ô%Ñ%Ù˜E TšMØ‘Øˆ]ØˆEØ×Ñ˜4 ˜-Õ(ð)ð  Ðr&   c                   óP   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚElementc                 ó@   — || _         t        |«      | _        g | _        y r*   )r7   r1   r5   Úchildren)Úselfr7   r5   s      r$   Ú__init__zElement.__init__G   s   € ØˆŒ	Ü  Ó,ˆŒØˆ�r&   c                 ó  — t        |t        «      rqt        |«      }| j                  rºt        | j                  d   t        «      r�| j                  dxx   |z  cc<   t        | j                  d   «      | j                  d<   y | j                  rTt        | j                  d   t        «      r7| j                  d   j	                  «       r| j                  j                  «        |r| j                  j                  |«       y y ©Néÿÿÿÿ)Ú
isinstanceÚstrr%   r<   ÚisspaceÚpopr4   ©r=   Úelements     r$   r4   zElement.appendL   s¼   € Ü�gœsÔ#Ü*¨7Ó3ˆGØ�}Š}¤¨D¯M©M¸"Ñ,=¼sÔ!CØ—‘˜bÓ! WÑ,Ó!Ü$8¸¿¹ÀrÑ9JÓ$K�—‘˜bÑ!ØØ�]Š]ô ˜$Ÿ-™-¨Ñ+¬SÔ1°d·m±mÀBÑ6G×6OÑ6OÔ6QØ—‘×!Ñ!Ô#ÙØ�M‰M× Ñ  Õ)ð r&   c                 ó  ‡— ˆfd„Š ‰| j                   «       t        | j                   «      D ]P  \  }}t        |t        «      r|j	                  «       | j                   |<   Œ4t        |d«      sŒA|j                  «        ŒR y )Nc                 ó˜   •— | rFt        | d   t        «      r3| d   j                  «       | d<   | d   s| j                  «         ‰| «      } | S r@   )rB   rC   ÚrstriprE   )r<   Úrstrip_last_elements    €r$   rK   z-Element.finalize.<locals>.rstrip_last_element]   sH   ø€ ÙœJ x°¡|´SÔ9Ø'¨™|×2Ñ2Ó4�˜‘Ø ’|Ø—L‘L”NÙ2°8Ó<�HØˆOr&   Úfinalize)r<   Ú	enumeraterB   rC   ÚstripÚhasattrrL   )r=   ÚiÚchildrK   s      @r$   rL   zElement.finalize\   sd   ø€ ô	ñ 	˜DŸM™MÔ*Ü! $§-¡-Ó0ò 	!‰HˆAˆuÜ˜%¤Ô%Ø#(§;¡;£=�—‘˜aÒ Ü˜ 
Õ+Ø—‘Õ ñ		!r&   c                 ó´   — t        |d«      r| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k(  S )Nr7   F)rO   r7   r5   r<   rF   s     r$   Ú__eq__zElement.__eq__l   sH   € Ü�w Ô'¨4¯9©9¸¿¹Ò+DØØ�?‰?˜g×0Ñ0Ò0ØØ�}‰} × 0Ñ 0Ñ0Ð0r&   c                 óH   — t        | j                  g| j                  ¢­«      S r*   )Úhashr7   r5   ©r=   s    r$   Ú__hash__zElement.__hash__s   s   € Ü�T—Y‘YÐ1 §¡Ñ1Ó2Ð2r&   c                 ó  — t        |t        «      s| |k(  ryt        |t        «      r| j                  |j                  k(  ryd}d}| j                  D ]¹  }t        |t        «      r/t        |t        «      sŒ$|r||j	                  |«      z  }Œ;||v sŒ@ y||j                  ||¬«      z  }|s|r|c S t        |t        «      sŒq|j                  sŒ~|j                  |   }||k(  r&|dz  }|t        |j                  «      k(  sŒ°|dz  }d}Œ¸d}Œ» |S )Né   r   ©Úcount)rB   rC   ÚRootElementr<   r[   Ú_countÚlen)r=   rG   r[   rP   Úelem_child_idxrQ   Ú
elem_childs          r$   r]   zElement._countv   s  € Ü˜'¤3Ô'¨D°GªOØÜ�gœ{Ô+°·±À×AQÑAQÒ0QØØˆØˆØ—]‘]ò 	+ˆEô ˜%¤Ô%Ü˜g¤sÕ+ÙØ˜UŸ[™[¨Ó1Ñ1™Ø  EÒ)Ù ð �U—\‘\ '°�\Ó7Ñ7�Ù¡Ø’Hô
 ˜g¤{Õ3¸×8HÓ8HØ!(×!1Ñ!1°.Ñ!A�Jà! UÒ*Ø&¨!Ñ+˜à)¬S°×1AÑ1AÓ-BÓBØ ™F˜AØ-.™Nð *+™ð;	+ð< ˆr&   c                 ó.   — | j                  |d¬«      dkD  S )NFrZ   r   ©r]   rF   s     r$   Ú__contains__zElement.__contains__�   s   € Ø�{‰{˜7¨%ˆ{Ó0°1Ñ4Ð4r&   c                 ó(   — | j                  |d¬«      S )NTrZ   rb   rF   s     r$   r[   zElement.count    s   € Ø�{‰{˜7¨$ˆ{Ó/Ð/r&   c                 ó    — | j                   |   S r*   )r<   )r=   Úkeys     r$   Ú__getitem__zElement.__getitem__£   s   € Ø�}‰}˜SÑ!Ð!r&   c           
      óŒ  — d| j                   z  }| j                  D ]  \  }}|�|d|›d|›d�z  }Œ|d|z  z  }Œ | j                  rs|dz  }|dj                  | j                  D �cg c]2  }t	        |t
        «      rt        j                  |«      n
t        |«      ‘Œ4 c}«      z  }|d| j                   z  z  }|S |d	z  }|S c c}w )
Nz<%sr    z="ú"z %sz>
r/   z
</%s>ú>)r7   r5   r<   r0   rB   rC   ÚhtmlÚescape)r=   Úoutputrf   r-   Úcs        r$   Ú__str__zElement.__str__¦   sØ   € Ø˜Ÿ™Ñ"ˆØŸ/™/ò 	&‰JˆC�ØÐ ÙªªUÐ3Ñ3‘à˜% #™+Ñ%‘ð		&ð
 �=Š=Ø�e‰OˆFØ�b—g‘gð "Ÿ]™]öàô '1°´CÔ&8”D—K‘K ”N¼cÀ!»fÑDòóñ ˆFð �i $§)¡)Ñ+Ñ+ˆFð ˆð �c‰MˆFØˆùòs   Á&7C
c                 ó   — t        | «      S r*   )rC   rV   s    r$   Ú__repr__zElement.__repr__º   s   € Ü�4‹yÐr&   N)T)Ú__name__Ú
__module__Ú__qualname__r>   r4   rL   rS   rW   r]   rc   r[   rg   ro   rq   r+   r&   r$   r:   r:   F   s:   „ òò
*ò !ò 1ò3ó%òN5ò0ò"òó(r&   r:   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r\   c                 ó&   •— t         ‰| �  d d«       y )Nr+   )Úsuperr>   ©r=   Ú	__class__s    €r$   r>   zRootElement.__init__¿   s   ø€ Ü‰Ñ˜˜rÕ"r&   c           	      óº   — dj                  | j                  D �cg c]2  }t        |t        «      rt	        j
                  |«      n
t        |«      ‘Œ4 c}«      S c c}w )Nr/   )r0   r<   rB   rC   rk   rl   )r=   rn   s     r$   ro   zRootElement.__str__Â   sB   € Ø�w‰wØGKÇ}Á}ÖUÀ!œz¨!¬SÔ1ŒT�[‰[˜Œ^´s¸1³vÑ=ÒUó
ð 	
ùÚUs   š7A)rr   rs   rt   r>   ro   Ú__classcell__©ry   s   @r$   r\   r\   ¾   s   ø„ ô#ö
r&   r\   c                   ó   — e Zd Zy)ÚHTMLParseErrorN)rr   rs   rt   r+   r&   r$   r~   r~   È   s   „ Ør&   r~   c                   óT   ‡ — e Zd Zˆ fd„Zd„ Zd	d„Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zˆ xZS )
ÚParserc                 ó\   •— t         ‰| �  «        t        «       | _        g | _        i | _        y r*   )rw   r>   r\   ÚrootÚ	open_tagsÚelement_positionsrx   s    €r$   r>   zParser.__init__Í   s&   ø€ Ü‰ÑÔÜ“MˆŒ	ØˆŒØ!#ˆÕr&   c                 ó6   — t        || j                  «       «      ‚r*   )r~   Úgetpos)r=   Úmsgs     r$   ÚerrorzParser.errorÓ   s   € Ü˜S $§+¡+£-Ó0Ð0r&   c                 óž   — |s|r| j                   |   }|€| j                  «       }t        |d«      r|j                  |j                  f}d|z  S )NÚlinenozLine %d, Column %d)r„   r†   rO   rŠ   Úoffset)r=   ÚpositionrG   s      r$   Úformat_positionzParser.format_positionÖ   sO   € Ù™GØ×-Ñ-¨gÑ6ˆHØÐØ—{‘{“}ˆHÜ�8˜XÔ&Ø—‘¨¯©Ð7ˆHØ# hÑ.Ð.r&   c                 óP   — | j                   r| j                   d   S | j                  S r@   )rƒ   r‚   rV   s    r$   ÚcurrentzParser.currentß   s"   € à�>Š>Ø—>‘> "Ñ%Ð%à—9‘9Ðr&   c                 ó\   — | j                  ||«       |t        vr| j                  |«       y y r*   )Úhandle_starttagr   Úhandle_endtag)r=   ÚtagÚattrss      r$   Úhandle_startendtagzParser.handle_startendtagæ   s-   € Ø×Ñ˜S %Ô(Ø”mÑ#Ø×Ñ˜sÕ#ð $r&   c                 óè   — t        |«      }t        ||«      }| j                  j                  |«       |t        vr| j
                  j                  |«       | j                  «       | j                  |<   y r*   )r8   r:   r�   r4   r   rƒ   r†   r„   )r=   r“   r”   rG   s       r$   r‘   zParser.handle_starttagë   sZ   € Ü$ UÓ+ˆÜ˜#˜uÓ%ˆØ�‰×Ñ˜GÔ$Ø”mÑ#Ø�N‰N×!Ñ! 'Ô*Ø*.¯+©+«-ˆ×Ñ˜wÒ'r&   c                 ót  — | j                   s&| j                  d|›d| j                  «       ›d�«       | j                   j                  «       }|j                  |k7  r]| j                   s&| j                  d|›d| j                  «       ›d�«       | j                   j                  «       }|j                  |k7  rŒ\y y )NzUnexpected end tag `z` (ú))rƒ   rˆ   r�   rE   r7   )r=   r“   rG   s      r$   r’   zParser.handle_endtagó   s‡   € Ø�~Š~Ø�JŠJº¸d×>RÑ>RÕ>TÐUÔVØ—.‘.×$Ñ$Ó&ˆØ�l‰l˜cÒ!Ø—>’>Ø—
’
Ú69¸4×;OÑ;OÕ;QÐRôð —n‘n×(Ñ(Ó*ˆGð �l‰l˜cÕ!r&   c                 ó:   — | j                   j                  |«       y r*   )r�   r4   )r=   Údatas     r$   Úhandle_datazParser.handle_dataþ   s   € Ø�‰×Ñ˜DÕ!r&   )NN)rr   rs   rt   r>   rˆ   r�   Úpropertyr�   r•   r‘   r’   r›   r{   r|   s   @r$   r€   r€   Ì   s:   ø„ ô$ò1ó/ð ñó ðò$ò
8ò	+ö"r&   r€   c                 ó  — t        «       }|j                  | «       |j                  «        |j                  }|j	                  «        t        |j                  «      dk(  r,t        |j                  d   t        «      s|j                  d   }|S )zü
    Take a string that contains HTML and turn it into a Python object structure
    that can be easily compared against other HTML on semantic equivalence.
    Syntactical differences like which quotation is used on arguments will be
    ignored.
    rY   r   )	r€   ÚfeedÚcloser‚   rL   r^   r<   rB   rC   )rk   ÚparserÚdocuments      r$   Ú
parse_htmlr¢     sq   € ô ‹X€FØ
‡K�K�ÔØ
‡L�L„NØ�{‰{€HØ×ÑÔä
ˆ8×ÑÓ Ò"¬:°h×6GÑ6GÈÑ6JÌCÔ+PØ×$Ñ$ QÑ'ˆØ€Or&   )Ú__doc__rk   Úhtml.parserr   Údjango.utils.htmlr   Údjango.utils.regex_helperr   r!   r3   r%   r8   r:   r\   Ú	Exceptionr~   r€   r¢   r+   r&   r$   ú<module>r¨      sj   ðÙ !ã Ý "å +Ý 6ñ
 $ OÓ4Ð òÐ ò<-ò÷*uñ uôp
�'ô 
ô	�Yô 	ô3"ˆZô 3"ólr&   