
    9iW?                        S r SSKr\R                  " S5      R                  r\R                  " S5      R                  r\R                  " S5      r\R                  " S5      r\R                  " S5      rC " S S	\	5      r
g)
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S rSrSrS rS rS rS rS r	Sr
S	 rSS
 jrSS jrS rS rS rS rS rS rS rSrg)
ParserBase2   zeParser base class which provides some common support methods used
by the SGML/HTML and XHTML parsers.c                 @    U R                   [        L a  [        S5      eg )Nz)_markupbase.ParserBase must be subclassed)	__class__r   RuntimeErrorselfs    \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/future/backports/_markupbase.py__init__ParserBase.__init__6   s#    >>Z';= = (    c                     [        S5      e)Nz.subclasses of ParserBase must override error())NotImplementedError)r
   messages     r   errorParserBase.error;   s    !<> 	>r   c                      SU l         SU l        g )N   r   linenooffsetr	   s    r   resetParserBase.reset?   s    r   c                 2    U R                   U R                  4$ )z&Return current line number and offset.r   r	   s    r   getposParserBase.getposC   s    {{DKK''r   c                     X:  a  U$ U R                   nUR                  SX5      nU(       a4  U R                  U-   U l        UR                  SX5      nX%S-   -
  U l        U$ U R                  U-   U-
  U l        U$ )N
r   )rawdatacountr   rindexr   )r
   ijr    nlinesposs         r   	updateposParserBase.updateposK   sw    6H,,tQ*++.DK..q,CU)DK  ++/!+DKr    c                    U R                   nUS-   nX!U S:X  d   S5       eX#US-    S:X  a  US-   $ X#US-    S;   a  g[        U5      nX#US-    S:X  a  U R                  U5      $ X#   S	:X  a  U R                  U5      $ U R	                  X15      u  pSUS
:  a  U$ US:X  a  SU l        X4:  Ga  X#   nUS:X  a9  X!S-   U nUS:X  a  U R                  U5        US-   $ U R                  U5        US-   $ US;   a$  [        X#5      nU(       d  gUR                  5       nOUS;   a  U R	                  X15      u  pOX`R
                  ;   a  US-   nOpUS	:X  aT  US:X  a  U R                  US-   U5      nONU[        / SQ5      ;   a  U R                  SU-  5        O(U R                  S5        OU R                  SX#   -  5        US
:  a  U$ X4:  a  GM  g)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_declarationParserBase.parse_declaration[   s     ,,E|t#K%KK#QqS>S q5LQqS>Y& LQqS>T!%%a((Z3
 ,,Q////!/KHq5Hy $&D!e
ACxs1~y($$T* 1u %%d+1uEz(4EEGLL//!/a+++Ecy(221q5!<A%O!PP
 JJG(RSJJCD

7'*DF1uO eP r   c                    U R                   nX1US-    S:X  d   S5       eU R                  US-   U5      u  pEUS:  a  U$ U[        / SQ5      ;   a  [        R	                  X1S-   5      nOCU[        / SQ5      ;   a  [
        R	                  X1S-   5      nOU R                  SX1S-   U -  5        W(       d  gU(       a'  UR                  S5      nU R                  X1S-   U 5        UR                  S5      $ )	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    r:   rA   _markedsectionclosesearch_msmarkedsectioncloser   startr=   r?   )r
   r#   reportr    sectNamer$   matchs          r   r9   ParserBase.parse_marked_section   s    1~&S(SS&ooqsA/q5HsKLL&--gs;E455(//1=EJJDwQRsST~UVAAgc1o.yy|r   c                    U R                   nX1US-    S:w  a  U R                  S5        [        R                  X1S-   5      nU(       d  gU(       a'  UR	                  S5      nU R                  X1S-   U 5        UR                  S5      $ )N   <!--z"unexpected call to parse_comment()r/   r   )r    r   _commentcloserU   rW   handle_commentr?   )r
   r#   rX   r    rZ   r$   s         r   r8   ParserBase.parse_comment   sv    ,,QqS>V#JJ;<$$Wc2AA!Q0yy|r   c                 2   U R                   n[        U5      nUnXT:  Ga  X5   nUS:X  a  X5US-    nUS:X  a  gUS:w  a(  U R                  X%S-   5        U R                  SU-  5        US-   U:X  a  gUS-   U:  a  gX5US-    S:X  a  U R	                  US	S
9nUS	:  a  U$ M  U R                  US-   U5      u  pUS:X  a  gU[        / SQ5      ;  a(  U R                  X%S-   5        U R                  SU-  5        [        U SU-   5      n	U	" XR5      nUS	:  a  U$ OUS:X  a7  US-   U:X  a  gU R                  US-   U5      u  puUS	:  a  U$ X5   S:X  a  US-   nOUS:X  aw  US-   nXT:  a:  X5   R                  5       (       a#  US-   nXT:  a  X5   R                  5       (       a  M#  XT:  a-  X5   S:X  a  U$ U R                  X%5        U R                  S5        OAgUR                  5       (       a  US-   nO%U R                  X%5        U R                  SU-  5        XT:  a  GM  g)N<r+   r/   r,   r   z*unexpected char in internal subset (in %r)r]   r^   r   )rX   )r3   r6   entitynotationz)unknown declaration %r in internal subset_parse_doctype_%;]r-   z%unexpected char after internal subsetz%unexpected char %r in internal subset)	r    r7   r'   r   r8   r:   rA   getattrisspace)
r
   r#   declstartposr    rB   r$   rD   srG   meths
             r   r@    ParserBase._parse_doctype_subset   s>   ,,Le
ACxacN89NN<Q7JJKaOPEa<EQ;QqS>V+**1Q*7A1u //!a%>7s#OPPNN<Q7JJCdJL t%6%=>)q5H cEa<q1ul;q5H:$AAcEe
 2 2 4 4AA e
 2 2 4 45zS( NN<3JJFGE|/

BQFGu ex r   c                     U R                  X5      u  p4US:X  a  gU R                  nSXTS  ;   a  UR                  SU5      S-   $ g)Nr/   r-   r   )r:   r    find)r
   r#   rl   rG   r$   r    s         r   _parse_doctype_element!ParserBase._parse_doctype_element  sJ    //!27,,'"+<<Q'!++r   c                    U R                   nU R                  X5      u  pEX5US-    nUS:X  a  gUS:X  a  US-   $  U R                  XR5      u  pEUS:  a  U$ X5US-    nUS:X  a  gUS:X  ae  SX5S  ;   a  UR                  SU5      S-   nOgX5US-    R                  5       (       a!  US-   nX5US-    R                  5       (       a  M!  X5S  (       d  gOU R                  XR5      u  pEX5US-    nU(       d  gUS;   a3  [	        X55      nU(       a  UR                  5       nOgX5US-    nU(       d  gUS	:X  a7  X5S  S	:X  a  gU R                  US-   U5      u  pEUS:  a  U$ X5US-    nU(       d  gUS:X  a  US-   $ GM:  )
Nr   r)   r/   r-   r   ()'"#)r    r:   rq   rk   r>   r?   )r
   r#   rl   r    rG   r$   rD   rF   s           r   _parse_doctype_attlist!ParserBase._parse_doctype_attlist  s   ,,//!2acN78q5L ooa6GD1u!A#ABwCx'"+%S!,q0A!n,,..AA !n,,..r{ # //!:!A#AEz(4AacNCx2;#%//!a%>q5HacNCx1u] r   c                    U R                  X5      u  p4US:  a  U$ U R                  n XTUS-    nU(       d  gUS:X  a  US-   $ US;   a$  [        XT5      nU(       d  gUR                  5       nOU R                  XB5      u  p4US:  a  U$ Ma  )Nr   r   r/   r-   rw   )r:   r    r>   r?   )r
   r#   rl   rG   r$   r    rD   rF   s           r   _parse_doctype_notation"ParserBase._parse_doctype_notationX  s    //!2q5H,,!A#ACx1uEz(4EEG//!:q5H r   c                    U R                   nX1US-    S:X  a3  US-   n X4US-    nU(       d  gUR                  5       (       a  US-   nOOM-  UnU R                  XB5      u  pdUS:  a  U$  U R                   XDS-    nU(       d  gUS;   a$  [        X45      nU(       a  UR	                  5       nO'gUS:X  a  US-   $ U R                  XB5      u  pdUS:  a  U$ Mk  )Nr   rg   r/   r   rw   r-   )r    rk   r:   r>   r?   )r
   r#   rl   r    r$   rD   rG   rF   s           r   _parse_doctype_entity ParserBase._parse_doctype_entityo  s    ,,QqS>S AAacN99;;AA  A//!2q5HQs#AEz(4Ac1u//!:q5H r   c                 \   U R                   n[        U5      nX:X  a  g[        X15      nU(       aS  UR                  5       nUR	                  5       nU[        U5      -   U:X  a  gUR                  5       UR                  5       4$ U R                  X!5        U R                  SX2US-    -  5        g )N)Nr/   zexpected name token at %r   )	r    r7   _declname_matchgroupstriplowerr?   r'   r   )r
   r#   rl   r    rB   rF   rm   rG   s           r   r:   ParserBase._scan_name  s    ,,L6G'	A779DCF
q ::<((NN<+JJ2 l2o>? @r   c                     g )N )r
   rE   s     r   r=   ParserBase.unknown_decl  s    r   )r;   r   r   N)r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   r'   r;   rH   r9   r8   r@   rr   ry   r|   r   r:   r=   __static_attributes__r   r   r   r   r   2   sa    +=
>( Nd,
@F6r. H@$r   r   )r   recompilerZ   r   r>   r_   rT   rV   objectr   r   r   r   <module>r      sz    D 
**:;AAzz"<=CC 

9%jj. 
 

8, t tr   