ó
    ½Rjù#  ã                   ó¨   • S r SSKrSSKJr  SSKJr  \" S5      r1 SkrS rS r	 " S	 S
5      r
 " S S\
5      r " S S\5      r " S S\5      rS rg)zCompare two HTML documents.é    N)Ú
HTMLParser)Ú_lazy_re_compilez[\t\n\f\r ]+>   ÚloopÚopenÚasyncÚismapÚmutedÚhiddenÚcheckedÚdefaultÚautoplayÚcontrolsÚdisabledÚmultipleÚnomoduleÚreadonlyÚrequiredÚreversedÚselectedÚ	autofocusÚ	itemscopeÚ	truespeedÚ
novalidateÚplaysinlineÚformnovalidateÚallowfullscreenúdefer c                 ó.   • [         R                  SU 5      $ )NÚ )ÚASCII_WHITESPACEÚsub)Ústrings    Ú<D:\diplom_project\venv\Lib\site-packages\django/test/html.pyÚnormalize_whitespacer$   +   s   € Ü×Ñ  VÓ,Ð,ó    c           	      ó  • / nU  Hv  u  p#US:X  a;  U(       a4  SR                  [        S [        R                  U5       5       5      5      nU[        ;   a  U(       a  X2:X  a  S nOUc  SnUR                  X#45        Mx     U$ )NÚclassr   c              3   ó6   #   • U  H  o(       d  M  Uv •  M     g 7f©N© )Ú.0Úvalues     r#   Ú	<genexpr>Ú'normalize_attributes.<locals>.<genexpr>6   s   é € ÐQÒ*G Ë5—u‘uÒ*Gùs   ‚
�	Ú )ÚjoinÚsortedr    ÚsplitÚBOOLEAN_ATTRIBUTESÚappend)Ú
attributesÚ
normalizedÚnamer,   s       r#   Únormalize_attributesr8   /   s€   € Ø€JÛ!‰ˆØ�7‹?žuð —H‘HÜÑQÔ*:×*@Ñ*@ÀÔ*GÓQÓQóˆEð Ô%Ó%Þ˜E›MØ�øØ‰]ØˆEØ×Ñ˜4˜-Ö(ñ "ð  Ðr%   c                   óZ   • \ rS rSrS rS rS rS rS rSS jr	S r
S	 rS
 rS rS rSrg)ÚElementéD   c                 ó>   • Xl         [        U5      U l        / U l        g r)   )r7   r1   r5   Úchildren)Úselfr7   r5   s      r#   Ú__init__ÚElement.__init__E   s   € ØŒ	Ü  Ó,ˆŒØˆ�r%   c                 óJ  • [        U[        5      (       a|  [        U5      nU R                  (       a_  [        U R                  S   [        5      (       a=  U R                  S==   U-  ss'   [        U R                  S   5      U R                  S'   g OoU R                  (       a^  [        U R                  S   [        5      (       a<  U R                  S   R	                  5       (       a  U R                  R                  5         U(       a  U R                  R                  U5        g g ©Néÿÿÿÿ)Ú
isinstanceÚstrr$   r=   ÚisspaceÚpopr4   ©r>   Úelements     r#   r4   ÚElement.appendJ   sÉ   € Ü�gœs×#Ñ#Ü*¨7Ó3ˆGØ�}�}¤¨D¯M©M¸"Ñ,=¼s×!CÑ!CØ—‘˜bÓ! WÑ,Ó!Ü$8¸¿¹ÀrÑ9JÓ$K�—‘˜bÑ!ØøØ�]�]ô ˜$Ÿ-™-¨Ñ+¬S×1Ñ1°d·m±mÀBÑ6G×6OÑ6O×6QÑ6QØ—‘×!Ñ!Ô#ÞØ�M‰M× Ñ  Õ)ð r%   c                 ó   ^• U4S jmT" U R                   5        [        U R                   5       H\  u  p[        U[        5      (       a  UR	                  5       U R                   U'   M9  [        US5      (       d  ML  UR                  5         M^     g )Nc                 ó¶   >• U (       aP  [        U S   [        5      (       a8  U S   R                  5       U S'   U S   (       d  U R                  5         T" U 5      n U $ rB   )rD   rE   ÚrstriprG   )r=   Úrstrip_last_elements    €r#   rN   Ú-Element.finalize.<locals>.rstrip_last_element[   sK   ø€ ÞœJ x°¡|´S×9Ñ9Ø'¨™|×2Ñ2Ó4�˜‘Ø —|Ø—L‘L”NÙ2°8Ó<�HØˆOr%   Úfinalize)r=   Ú	enumeraterD   rE   ÚstripÚhasattrrP   )r>   ÚiÚchildrN   s      @r#   rP   ÚElement.finalizeZ   sc   ø€ õ	ñ 	˜DŸM™MÔ*Ü! $§-¡-Ö0‰HˆAÜ˜%¤×%Ñ%Ø#(§;¡;£=�—‘˜aÓ Ü˜ 
×+Ó+Ø—‘Ö ò	 1r%   c                 óÂ   • [        US5      (       a  U R                  UR                  :w  a  gU R                  UR                  :w  a  gU R                  UR                  :H  $ )Nr7   F)rS   r7   r5   r=   rH   s     r#   Ú__eq__ÚElement.__eq__j   sK   € Ü�w ×'Ñ'¨4¯9©9¸¿¹Ó+DØØ�?‰?˜g×0Ñ0Ó0ØØ�}‰} × 0Ñ 0Ñ0Ð0r%   c                 óH   • [        U R                  /U R                  Q75      $ r)   )Úhashr7   r5   ©r>   s    r#   Ú__hash__ÚElement.__hash__q   s   € Ü�T—Y‘YÐ1 §¡Ñ1Ó2Ð2r%   c                 ó„  • [        U[        5      (       d  X:X  a  g[        U[        5      (       a  U R                  UR                  :X  a  gSnSnU R                   Hà  n[        U[        5      (       a<  [        U[        5      (       a%  U(       a  X5R	                  U5      -  nMI  X;   a    gMR  MT  X5R                  XS9-  nU(       d  U(       a  Us  $ [        U[        5      (       d  MŽ  UR                  (       d  M¡  UR                  U   nXe:X  a)  US-  nU[        UR                  5      :X  a	  US-  nSnMÜ  MÞ  SnMâ     U$ )Né   r   ©Úcount)rD   rE   ÚRootElementr=   rb   Ú_countÚlen)r>   rI   rb   rT   Úelem_child_idxrU   Ú
elem_childs          r#   rd   ÚElement._countt   s   € Ü˜'¤3×'Ñ'¨D«OØÜ�gœ{×+Ñ+°·±À×AQÑAQÓ0QØØˆØˆØ—]”]ˆEô ˜%¤×%Ñ%Ü˜g¤s×+Ñ+ÞØŸ[™[¨Ó1Ñ1šØ Ó)Ù ñ *ñ ,ð —\‘\ '�\Ð7Ñ7�Þ¦Ø’Hô
 ˜g¤{×3Ó3¸×8H×8HÑ8HØ!(×!1Ñ!1°.Ñ!A�Jà!Ó*Ø&¨!Ñ+˜à)¬S°×1AÑ1AÓ-BÓBØ ™F˜AØ-.šNñ Cð
 *+šñ; #ð< ˆr%   c                 ó(   • U R                  USS9S:„  $ )NFra   r   ©rd   rH   s     r#   Ú__contains__ÚElement.__contains__›   s   € Ø�{‰{˜7¨%ˆ{Ð0°1Ñ4Ð4r%   c                 ó"   • U R                  USS9$ )NTra   rj   rH   s     r#   rb   ÚElement.countž   s   € Ø�{‰{˜7¨$ˆ{Ð/Ð/r%   c                 ó    • U R                   U   $ r)   )r=   )r>   Úkeys     r#   Ú__getitem__ÚElement.__getitem__¡   s   € Ø�}‰}˜SÑ!Ð!r%   c           
      ó²  • SU R                   -  nU R                   H   u  p#Ub  USU< SU< S3-  nM  USU-  -  nM"     U R                  (       a|  US-  nUSR                  U R                   Vs/ s H9  n[	        U[
        5      (       a  [        R                  " U5      O
[        U5      PM;     sn5      -  nUSU R                   -  -  nU$ US	-  nU$ s  snf )
Nz<%sr   z="Ú"z %sz>
r/   z
</%s>Ú>)r7   r5   r=   r0   rD   rE   ÚhtmlÚescape)r>   Úoutputrp   r,   Úcs        r#   Ú__str__ÚElement.__str__¤   sÙ   € Ø˜Ÿ™Ñ"ˆØŸ/œ/‰JˆCØÑ Ù««UÐ3Ñ3’à˜% #™+Ñ%’ñ	 *ð
 �=�=Ø�e‰OˆFØ�b—g‘gð "Ÿ]š]óâ*˜ô '1°´C×&8Ñ&8”D—K’K ”N¼cÀ!»fÒDÙ*ñóñ ˆFð �i $§)¡)Ñ+Ñ+ˆFð ˆð �c‰MˆFØˆùòs   Á0A C
c                 ó   • [        U 5      $ r)   )rE   r\   s    r#   Ú__repr__ÚElement.__repr__¸   s   € Ü�4‹yÐr%   )r5   r=   r7   N)T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r?   r4   rP   rX   r]   rd   rk   rb   rq   rz   r}   Ú__static_attributes__r*   r%   r#   r:   r:   D   s:   † òò
*ò !ò 1ò3ô%òN5ò0ò"òõ(r%   r:   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )rc   é¼   c                 ó&   >• [         TU ]  S S5        g )Nr*   )Úsuperr?   ©r>   Ú	__class__s    €r#   r?   ÚRootElement.__init__½   s   ø€ Ü‰Ñ˜˜rÕ"r%   c           	      óÌ   • SR                  U R                   Vs/ s H9  n[        U[        5      (       a  [        R
                  " U5      O
[        U5      PM;     sn5      $ s  snf )Nr/   )r0   r=   rD   rE   rv   rw   )r>   ry   s     r#   rz   ÚRootElement.__str__À   sI   € Ø�w‰wØGKÇ}Â}ÓUÂ}À!œz¨!¬S×1Ñ1ŒT�[Š[˜Œ^´s¸1³vÒ=Á}ÑUó
ð 	
ùÚUs   šA A!r*   )r   r€   r�   r‚   r?   rz   rƒ   Ú__classcell__©r‰   s   @r#   rc   rc   ¼   s   ø† õ#÷
ð 
r%   rc   c                   ó   • \ rS rSrSrg)ÚHTMLParseErroréÆ   r*   N)r   r€   r�   r‚   rƒ   r*   r%   r#   r�   r�   Æ   s   † Úr%   r�   c                   óh   ^ • \ rS rSr1 SkrU 4S jrS rSS jr\S 5       r	S r
S rS	 rS
 rSrU =r$ )ÚParseréÊ   >   ÚbrÚhrÚcolÚimgÚwbrÚareaÚbaseÚlinkÚmetaÚembedÚframeÚinputÚparamÚtrackÚsourceÚspacerc                 ó\   >• [         TU ]  5         [        5       U l        / U l        0 U l        g r)   )r‡   r?   rc   ÚrootÚ	open_tagsÚelement_positionsrˆ   s    €r#   r?   ÚParser.__init__à   s&   ø€ Ü‰ÑÔÜ“MˆŒ	ØˆŒØ!#ˆÕr%   c                 ó4   • [        XR                  5       5      er)   )r�   Úgetpos)r>   Úmsgs     r#   ÚerrorÚParser.erroræ   s   € Ü˜S§+¡+£-Ó0Ð0r%   c                 ó¾   • U(       d  U(       a  U R                   U   nUc  U R                  5       n[        US5      (       a  UR                  UR                  4nSU-  $ )NÚlinenozLine %d, Column %d)r¨   r«   rS   r°   Úoffset)r>   ÚpositionrI   s      r#   Úformat_positionÚParser.format_positioné   sR   € ÞžGØ×-Ñ-¨gÑ6ˆHØÑØ—{‘{“}ˆHÜ�8˜X×&Ñ&Ø—‘¨¯©Ð7ˆHØ# hÑ.Ð.r%   c                 óZ   • U R                   (       a  U R                   S   $ U R                  $ rB   )r§   r¦   r\   s    r#   ÚcurrentÚParser.currentò   s"   € à�>�>Ø—>‘> "Ñ%Ð%à—9‘9Ðr%   c                 óh   • U R                  X5        XR                  ;  a  U R                  U5        g g r)   )Úhandle_starttagÚSELF_CLOSING_TAGSÚhandle_endtag)r>   ÚtagÚattrss      r#   Úhandle_startendtagÚParser.handle_startendtagù   s/   € Ø×Ñ˜SÔ(Ø×,Ñ,Ó,Ø×Ñ˜sÕ#ð -r%   c                 óô   • [        U5      n[        X5      nU R                  R                  U5        XR                  ;  a  U R
                  R                  U5        U R                  5       U R                  U'   g r)   )r8   r:   r¶   r4   rº   r§   r«   r¨   )r>   r¼   r½   rI   s       r#   r¹   ÚParser.handle_starttagþ   s\   € Ü$ UÓ+ˆÜ˜#Ó%ˆØ�‰×Ñ˜GÔ$Ø×,Ñ,Ó,Ø�N‰N×!Ñ! 'Ô*Ø*.¯+©+«-ˆ×Ñ˜wÒ'r%   c                 ó–  • U R                   (       d(  U R                  SU< SU R                  5       < S35        U R                   R                  5       nUR                  U:w  af  U R                   (       d(  U R                  SU< SU R                  5       < S35        U R                   R                  5       nUR                  U:w  a  Me  g g )NzUnexpected end tag `z` (Ú))r§   r­   r³   rG   r7   )r>   r¼   rI   s      r#   r»   Ú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                 ó:   • U R                   R                  U5        g r)   )r¶   r4   )r>   Údatas     r#   Úhandle_dataÚParser.handle_data  s   € Ø�‰×Ñ˜DÕ!r%   )r¨   r§   r¦   )NN)r   r€   r�   r‚   rº   r?   r­   r³   Úpropertyr¶   r¾   r¹   r»   rÇ   rƒ   r�   rŽ   s   @r#   r“   r“   Ê   sG   ø† òÐõ($ò1ô/ð ñó ðò$ò
8ò	+÷"ð "r%   r“   c                 ó(  • [        5       nUR                  U 5        UR                  5         UR                  nUR	                  5         [        UR                  5      S:X  a1  [        UR                  S   [        5      (       d  UR                  S   nU$ )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.
r`   r   )	r“   ÚfeedÚcloser¦   rP   re   r=   rD   rE   )rv   ÚparserÚdocuments      r#   Ú
parse_htmlrÏ     st   € ô ‹X€FØ
‡K�K�ÔØ
‡L�L„NØ�{‰{€HØ×ÑÔä
ˆ8×ÑÓ Ó"¬:°h×6GÑ6GÈÑ6JÌC×+PÑ+PØ×$Ñ$ QÑ'ˆØ€Or%   )Ú__doc__rv   Úhtml.parserr   Údjango.utils.regex_helperr   r    r3   r$   r8   r:   rc   Ú	Exceptionr�   r“   rÏ   r*   r%   r#   Ú<module>rÔ      si   ðÙ !Û Ý "å 6ñ
 $ OÓ4Ð òÐ ò<-ò÷*uñ uôp
�'ô 
ô	�Yô 	ôH"ˆZô H"óVr%   