Ë
    	š„jW?  ã                   ó  — d Z ddlZ ej                  d«      j                  Z ej                  d«      j                  Z ej                  d«      Z ej                  d«      Z ej                  d«      Z[ G d„ d	e	«      Z
y)
a  Shared support for scanning document type declarations in HTML and XHTML.

Backported for python-future from Python 3.3. Reason: ParserBase is an
old-style class in the Python 2.7 source of markupbase.py, which I suspect
might be the cause of sporadic unit-test failures on travis-ci.org with
test_htmlparser.py.  The test failures look like this:

    ======================================================================

ERROR: test_attr_entity_replacement (future.tests.test_htmlparser.AttributesStrictTestCase)

----------------------------------------------------------------------

Traceback (most recent call last):
  File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 661, in test_attr_entity_replacement
    [("starttag", "a", [("b", "&><"'")])])
  File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 93, in _run_check
    collector = self.get_collector()
  File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 617, in get_collector
    return EventCollector(strict=True)
  File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 27, in __init__
    html.parser.HTMLParser.__init__(self, *args, **kw)
  File "/home/travis/build/edschofield/python-future/future/backports/html/parser.py", line 135, in __init__
    self.reset()
  File "/home/travis/build/edschofield/python-future/future/backports/html/parser.py", line 143, in reset
    _markupbase.ParserBase.reset(self)

TypeError: unbound method reset() must be called with ParserBase instance as first argument (got EventCollector instance instead)

This module is used as a foundation for the html.parser module.  It has no
documented public API and should not be used directly.

é    Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z	]\s*]\s*>z]\s*>c                   ór   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdZ	d„ Z
dd	„Zdd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
ParserBaseziParser base class which provides some common support methods used
    by the SGML/HTML and XHTML parsers.c                 ó>   — | j                   t        u rt        d«      ‚y )Nz)_markupbase.ParserBase must be subclassed)Ú	__class__r   ÚRuntimeError©Úselfs    úS/var/www/html/GAP/venv/lib/python3.12/site-packages/future/backports/_markupbase.pyÚ__init__zParserBase.__init__6   s#   € Ø�>‰>œZÑ'ÜØ;ó=ð =ð (ó    c                 ó   — t        d«      ‚)Nz.subclasses of ParserBase must override error())ÚNotImplementedError)r	   Úmessages     r
   ÚerrorzParserBase.error;   s   € Ü!Ø<ó>ð 	>r   c                 ó    — d| _         d| _        y )Né   r   ©ÚlinenoÚoffsetr   s    r
   ÚresetzParserBase.reset?   s   € ØˆŒØˆ�r   c                 ó2   — | j                   | j                  fS )z&Return current line number and offset.r   r   s    r
   ÚgetposzParserBase.getposC   s   € à�{‰{˜DŸK™KÐ'Ð'r   c                 óð   — ||k\  r|S | j                   }|j                  d||«      }|r6| j                  |z   | _        |j                  d||«      }||dz   z
  | _        |S | j                  |z   |z
  | _        |S )Nú
r   )ÚrawdataÚcountr   Úrindexr   )r	   ÚiÚjr   ÚnlinesÚposs         r
   Ú	updateposzParserBase.updateposK   s   € Ø�Š6ØˆHØ—,‘,ˆØ—‘˜t Q¨Ó*ˆÙØŸ+™+¨Ñ.ˆDŒKØ—.‘.  q¨!Ó,ˆCØ˜S ™U™)ˆDŒKð ˆð Ÿ+™+¨™/¨!Ñ+ˆDŒKØˆr   Ú c                 óv  — | j                   }|dz   }||| dk(  sJ d«       ‚|||dz    dk(  r|dz   S |||dz    dv ryt        |«      }|||dz    dk(  r| j                  |«      S ||   d	k(  r| j                  |«      S | j	                  ||«      \  }}|d
k  r|S |dk(  rd| _        ||k  �r||   }|dk(  r9||dz   | }|dk(  r| j                  |«       |dz   S | j                  |«       |dz   S |dv r t        ||«      }|sy|j                  «       }n›|dv r| j	                  ||«      \  }	}n�|| j
                  v r|dz   }nm|d	k(  rQ|dk(  r| j                  |dz   |«      }nM|t        g d¢«      v r| j                  d|z  «       n)| j                  d«       n| j                  d||   z  «       |d
k  r|S ||k  r�Œy)Né   ú<!z$unexpected call to parse_declarationr   ú>)ú-r#   éÿÿÿÿz--ú[r   Údoctyper#   z"'Ú4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)ÚattlistÚlinktypeÚlinkÚelementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r   ÚlenÚparse_commentÚparse_marked_sectionÚ
_scan_nameÚ_decl_othercharsÚhandle_declÚunknown_declÚ_declstringlit_matchÚendÚ_parse_doctype_subsetÚsetr   )
r	   r   r   r   ÚnÚdecltypeÚcÚdataÚmÚnames
             r
   Úparse_declarationzParserBase.parse_declaration[   s  € ð —,‘,ˆØ�‰EˆØ�q˜ˆ|˜tÒ#ÐKÐ%KÓKÐ#Ø�1�Q�q‘Sˆ>˜SÒ à�q‘5ˆLØ�1�Q�q‘Sˆ>˜YÑ&ð ä�‹LˆØ�1�Q�q‘Sˆ>˜TÒ!à×%Ñ% aÓ(Ð(Ø�Q‰Z˜3Òð
 ×,Ñ,¨QÓ/Ð/àŸ/™/¨!¨QÓ/‰KˆH�aØˆqŠ5ØˆHØ�yÒ Ø$&ˆDÔ!Ø�!‹eØ˜‘
ˆAØ�CŠxà˜q ™s 1�~�Ø˜yÒ(Ø×$Ñ$ TÔ*ð ˜1‘u�ð ×%Ñ% dÔ+Ø˜1‘u�Ø�E‰zÜ(¨°!Ó4�ÙØØ—E‘E“G‘ØÐLÑLØŸ/™/¨!¨QÓ/‘�‘aØ�d×+Ñ+Ñ+Ø˜‘E‘Ø�c’à˜yÒ(Ø×2Ñ2°1°q±5¸!Ó<‘AØ¤Ò%OÓ!PÑPð
 —J‘JÐGÈ(ÑRÕSà—J‘JÐCÕDà—
‘
Ø7¸'À!¹*ÑDôFà�1ŠuØ�ðO �!ŒeðP r   c                 óÐ  — | j                   }|||dz    dk(  sJ d«       ‚| j                  |dz   |«      \  }}|dk  r|S |t        g d¢«      v rt        j	                  ||dz   «      }nC|t        g d¢«      v rt
        j	                  ||dz   «      }n| j                  d||dz   | z  «       sy|r(|j                  d«      }| j                  ||dz   | «       |j                  d«      S )	Né   z<![z)unexpected call to parse_marked_section()r   )ÚtempÚcdataÚignoreÚincludeÚrcdata)ÚifÚelseÚendifz+unknown status keyword %r in marked sectionr)   )
r   r4   r;   Ú_markedsectioncloseÚsearchÚ_msmarkedsectioncloser   Ústartr7   r9   )r	   r   Úreportr   ÚsectNamer   Úmatchs          r
   r3   zParserBase.parse_marked_section­   sï   € Ø—‘ˆØ�q˜˜1™ˆ~ Ò&ÐSÐ(SÓSÐ&Ø—o‘o q¨¡s¨AÓ/‰ˆ�!ØˆqŠ5ØˆHØ”sÒKÓLÑLä&×-Ñ-¨g°q¸±sÓ;‰EØœÒ4Ó5Ñ5ä(×/Ñ/°¸¸1¹Ó=‰Eà�J‰JÐDÀwÈqÐQRÉsÐSTÀ~ÑUÔVÙØÙØ—‘˜A“ˆAØ×Ñ˜g a¨¡c¨1˜oÔ.Ø�y‰y˜‹|Ðr   c                 ó   — | j                   }|||dz    dk7  r| j                  d«       t        j                  ||dz   «      }|sy|r(|j	                  d«      }| j                  ||dz   | «       |j                  d«      S )Né   ú<!--z"unexpected call to parse_comment()r)   r   )r   r   Ú_commentcloserN   rP   Úhandle_commentr9   )r	   r   rQ   r   rS   r   s         r
   r2   zParserBase.parse_commentÃ   s|   € Ø—,‘,ˆØ�1�Q�q‘Sˆ>˜VÒ#Ø�J‰JÐ;Ô<Ü×$Ñ$ W¨a°©cÓ2ˆÙØÙØ—‘˜A“ˆAØ×Ñ ¨¨!©¨Q Ô0Ø�y‰y˜‹|Ðr   c                 ó  — | j                   }t        |«      }|}||k  �rå||   }|dk(  ré|||dz    }|dk(  ry|dk7  r)| j                  ||dz   «       | j                  d|z  «       |dz   |k(  ry|dz   |kD  ry|||dz    dk(  r| j	                  |d	¬
«      }|d	k  r|S Œ„| j                  |dz   |«      \  }}|dk(  ry|t        g d¢«      vr)| j                  ||dz   «       | j                  d|z  «       t        | d|z   «      }	 |	||«      }|d	k  rí|S |dk(  r6|dz   |k(  ry| j                  |dz   |«      \  }}|d	k  r|S ||   dk(  r¶|dz   }n°|dk(  ro|dz   }||k  r1||   j                  «       r|dz   }||k  r||   j                  «       rŒ||k  r.||   dk(  r|S | j                  ||«       | j                  d«       n=y|j                  «       r|dz   }n&| j                  ||«       | j                  d|z  «       ||k  r�Œåy)Nú<r%   r)   r&   r   z*unexpected char in internal subset (in %r)rU   rV   r   )rQ   )r-   r0   ÚentityÚnotationz)unknown declaration %r in internal subsetÚ_parse_doctype_ú%ú;ú]r'   z%unexpected char after internal subsetz%unexpected char %r in internal subset)	r   r1   r"   r   r2   r4   r;   ÚgetattrÚisspace)
r	   r   Údeclstartposr   r<   r   r>   ÚsrA   Úmeths
             r
   r:   z ParserBase._parse_doctype_subsetÑ   sV  € Ø—,‘,ˆÜ�‹LˆØˆØ�!‹eØ˜‘
ˆAØ�CŠxØ˜A˜a ™c�N�Ø˜’8àØ˜’9Ø—N‘N <°°Q±Ô7Ø—J‘JÐKÈaÑOÔPØ˜‘E˜a’<àØ˜‘E˜Q’;àØ˜1˜Q˜q™S�> VÒ+Ø×*Ñ*¨1°QÐ*Ó7�AØ˜1’uØ ˜ØØŸ/™/¨!¨a©%°Ó>‘��aØ˜’7ØØœsÒ#OÓPÑPØ—N‘N <°°Q±Ô7Ø—J‘JØCÀdÑJôLô ˜tÐ%6¸Ñ%=Ó>�Ù˜˜LÓ)�Ø�q’5Ø�HØ�c’à˜‘E˜a’<àØ—‘ q¨1¡u¨lÓ;‘��1Ø�q’5Ø�HØ˜1‘: Ò$Ø˜A™‘AØ�c’Ø˜‘E�Ø˜!’e ¨¡
× 2Ñ 2Ô 4Ø˜A™�Að ˜!’e ¨¡
× 2Ñ 2Õ 4à�q’5Ø˜q‘z SÒ(Ø ˜Ø—N‘N <°Ô3Ø—J‘JÐFÕGàØ—‘”Ø˜‘E‘à—‘˜|¨QÔ/Ø—
‘
ÐBÀQÑFÔGðu �!Œeðx r   c                 óŠ   — | j                  ||«      \  }}|dk(  ry| j                  }d||d  v r|j                  d|«      dz   S y)Nr)   r'   r   )r4   r   Úfind)r	   r   rc   rA   r   r   s         r
   Ú_parse_doctype_elementz!ParserBase._parse_doctype_element  sP   € Ø—/‘/ ! \Ó2‰ˆˆaØ�Š7Øà—,‘,ˆØ�'˜!˜"�+ÑØ—<‘<  QÓ'¨!Ñ+Ð+Ør   c                 ó¦  — | j                   }| j                  ||«      \  }}|||dz    }|dk(  ry|dk(  r|dz   S 	 | j                  ||«      \  }}|dk  r|S |||dz    }|dk(  ry|dk(  rVd||d  v r|j                  d|«      dz   }ny|||dz    j                  «       r|dz   }|||dz    j                  «       rŒ||d  sy| j                  ||«      \  }}|||dz    }|sy|dv r+t	        ||«      }|r|j                  «       }ny|||dz    }|sy|d	k(  r3||d  d	k(  ry| j                  |dz   |«      \  }}|dk  r|S |||dz    }|sy|dk(  r|dz   S �Œ)
Nr   r#   r)   r'   r   ú(ú)ú'"ú#)r   r4   rg   rb   r8   r9   )r	   r   rc   r   rA   r   r>   r@   s           r
   Ú_parse_doctype_attlistz!ParserBase._parse_doctype_attlist  s¿  € Ø—,‘,ˆØ—/‘/ ! \Ó2‰ˆˆaØ�A�a˜‘cˆNˆØ�Š7ØØ�Š8Ø�q‘5ˆLØð —o‘o a¨Ó6‰GˆD�!Ø�1ŠuØ�Ø˜˜!˜A™#�ˆAØ�BŠwØØ�CŠxà˜' ! "˜+Ñ%ØŸ™ S¨!Ó,¨qÑ0‘AàØ˜a  !¡�n×,Ñ,Ô.Ø˜A™�Að ˜a  !¡�n×,Ñ,Õ.à˜q˜r‘{ààŸ/™/¨!¨\Ó:‘��aØ˜˜!˜A™#�ˆAÙØØ�E‰zÜ(¨°!Ó4�ÙØŸ™›‘AàØ˜A˜a ™c�N�ÙØØ�CŠxØ˜1˜2�; #Ò%àØŸ/™/¨!¨a©%°Ó>‘��aØ�q’5Ø�HØ˜A˜a ™c�N�ÙØØ�CŠxà˜1‘u�ñ] r   c                 ó   — | j                  ||«      \  }}|dk  r|S | j                  }	 |||dz    }|sy|dk(  r|dz   S |dv r t        ||«      }|sy|j                  «       }n| j                  ||«      \  }}|dk  r|S ŒV)Nr   r   r)   r'   rl   )r4   r   r8   r9   )r	   r   rc   rA   r   r   r>   r@   s           r
   Ú_parse_doctype_notationz"ParserBase._parse_doctype_notationX  sœ   € Ø—/‘/ ! \Ó2‰ˆˆaØˆqŠ5ØˆHØ—,‘,ˆØØ˜˜!˜A™#�ˆAÙàØ�CŠxØ˜1‘u�Ø�E‰zÜ(¨°!Ó4�ÙØØ—E‘E“G‘àŸ/™/¨!¨\Ó:‘��aØ�q’5Ø�Hð r   c                 ó€  — | j                   }|||dz    dk(  r)|dz   }	 |||dz    }|sy|j                  «       r|dz   }nnŒ#|}| j                  ||«      \  }}|dk  r|S 	 | j                   ||dz    }|sy|dv r t        ||«      }|r|j	                  «       }n'y|dk(  r|dz   S | j                  ||«      \  }}|dk  r|S Œ`)Nr   r^   r)   r   rl   r'   )r   rb   r4   r8   r9   )r	   r   rc   r   r   r>   rA   r@   s           r
   Ú_parse_doctype_entityz ParserBase._parse_doctype_entityo  sõ   € Ø—,‘,ˆØ�1�Q�q‘Sˆ>˜SÒ Ø�A‘ˆAØØ˜A˜a ™c�N�ÙØØ—9‘9”;Ø˜A™‘Aàð ð ˆAØ—/‘/ ! \Ó2‰ˆˆaØˆqŠ5ØˆHØØ—‘˜Q˜q ™sÐ#ˆAÙØØ�E‰zÜ(¨°!Ó4�ÙØŸ™›‘AàØ�c’Ø˜1‘u�àŸ/™/¨!¨\Ó:‘��aØ�q’5Ø�Hð r   c                 óV  — | j                   }t        |«      }||k(  ryt        ||«      }|rR|j                  «       }|j	                  «       }|t        |«      z   |k(  ry|j                  «       |j                  «       fS | j                  ||«       | j                  d|||dz    z  «       y )N)Nr)   zexpected name token at %ré   )	r   r1   Ú_declname_matchÚgroupÚstripÚlowerr9   r"   r   )r	   r   rc   r   r<   r@   rd   rA   s           r
   r4   zParserBase._scan_name“  sž   € Ø—,‘,ˆÜ�‹LˆØ�Š6ØÜ˜G QÓ'ˆÙØ—‘“	ˆAØ—7‘7“9ˆDØ”C˜“F‘
˜qÒ ØØ—:‘:“< §¡£Ð(Ð(à�N‰N˜<¨Ô+Ø�J‰JÐ2Ø  ¨l¸2©oÐ>ñ?õ @r   c                  ó   — y )N© )r	   r?   s     r
   r7   zParserBase.unknown_decl¥  s   € Ør   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r"   r5   rB   r3   r2   r:   rh   rn   rp   rr   r4   r7   rz   r   r
   r   r   2   sa   „ ñ+ò=ò
>òò(òð ÐòNódó,
ò@òFò6òrò. òH@ó$r   r   )r~   ÚreÚcompilerS   ru   r8   rW   rM   rO   Úobjectr   rz   r   r
   ú<module>r‚      s„   ðñ óD 
à�"—*‘*Ð:Ó;×AÑA€Ø!�r—z‘zÐ"<Ó=×CÑCÐ Ø�—
‘
˜9Ó%€Ø �b—j‘j Ó.Ð ð
 #˜Ÿ
™
 8Ó,Ð àôt�õ tr   