
    4pfW?                         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
dS )
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                   t    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dS )
ParserBaseziParser base class which provides some common support methods used
    by the SGML/HTML and XHTML parsers.c                 @    | j         t          u rt          d          d S )Nz)_markupbase.ParserBase must be subclassed)	__class__r   RuntimeErrorselfs    \/var/www/html/nettyfy-visnx/env/lib/python3.11/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| _        d S )N   r   linenooffsetr   s    r
   resetzParserBase.reset?   s    r   c                     | j         | j        fS )z&Return current line number and offset.r   r   s    r
   getposzParserBase.getposC   s    {DK''r   c                     ||k    r|S | j         }|                    d||          }|r4| j        |z   | _        |                    d||          }||dz   z
  | _        n| j        |z   |z
  | _        |S )N
r   )rawdatacountr   rindexr   )r	   ijr   nlinesposs         r
   	updateposzParserBase.updateposK   s    66H,tQ** 	,+.DK..q!,,CSU)DKK+/!+DKr    c                 2   | j         }|dz   }|||         dk    s
J d            |||dz            dk    r|dz   S |||dz            dv rdS t          |          }|||dz            dk    r|                     |          S ||         d	k    r|                     |          S |                     ||          \  }}|d
k     r|S |dk    rd| _        ||k     r@||         }|dk    rC||dz   |         }|dk    r|                     |           n|                     |           |dz   S |dv r)t          ||          }|sdS |	                                }n|dv r|                     ||          \  }	}n|| j        v r|dz   }n|d	k    rb|dk    r| 
                    |dz   |          }n`|t          g d          v r|                     d|z             n4|                     d           n|                     d||         z             |d
k     r|S ||k     @dS )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s|t###%K###1QqS5>S  q5L1QqS5>Y&& 2LL1QqS5>T!!%%a(((QZ3
 ,,Q/////!Q//KHaq55Hy  $&D!!ee
ACxxqs1u~y(($$T**** %%d+++1uEzz(!44 2EEGGLLL//!Q//aad+++Ecy((221q5!<<AA%O%O%O!P!PPP
 JJG(RSSSSJJCDDDD

7'!*DF F F1uuO !eeP rr   r   c                 <   | j         }|||dz            dk    s
J d            |                     |dz   |          \  }}|dk     r|S |t          g d          v rt                              ||dz             }nU|t          g d          v rt
                              ||dz             }n#|                     d||dz   |         z             |sdS |r5|                    d          }|                     ||dz   |                    |	                    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u~&&&(S&&&ooqsA//!q55HsKKKLLLL&--gqs;;EE4445555(//1==EEJJDwqQRsSTu~UVVV 	2 	/AAgac1fo...yy||r   c                 8   | j         }|||dz            dk    r|                     d           t                              ||dz             }|sdS |r5|                    d          }|                     ||dz   |                    |                    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    ,1QqS5>V##JJ;<<<$$Wac22 	2 	1AA!Q000yy||r   c                    | j         }t          |          }|}||k     r[||         }|dk    r$|||dz            }|dk    rdS |dk    r1|                     ||dz              |                     d|z             |dz   |k    rdS |dz   |k    rdS |||dz            dk    r |                     |d	
          }|d	k     r|S |                     |dz   |          \  }}|dk    rdS |t          g d          vr1|                     ||dz              |                     d|z             t          | d|z             }	 |	||          }|d	k     r|S n!|dk    rA|dz   |k    rdS |                     |dz   |          \  }}|d	k     r|S ||         dk    r|dz   }n|dk    r|dz   }||k     r?||                                         r%|dz   }||k     r||                                         %||k     r:||         dk    r|S |                     ||           |                     d           nJdS |                                r|dz   }n.|                     ||           |                     d|z             ||k     [dS )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   s   ,LL!ee
ACxxAacEN88299NN<Q777JJKaOPPPEa<<2EQ;;21QqS5>V++**1Q*77A1uu //!a%>>a772s#O#O#OPPPPNN<Q777JJCdJL L L t%6%=>>DL))q55H cEa<<2q1ul;;1q55H1:$$AAcE!ee
 2 2 4 4eAA !ee
 2 2 4 4eq55qzS(( NN<333JJFGGGG2 HE|Q///

BQFGGGu !eex rr   c                     |                      ||          \  }}|dk    rdS | j        }d||d          v r|                    d|          dz   S dS )Nr)   r'   r   )r4   r   find)r	   r   rc   rA   r   r   s         r
   _parse_doctype_elementz!ParserBase._parse_doctype_element  s_    //!\22a772,'!""+<<Q''!++rr   c                 l   | j         }|                     ||          \  }}|||dz            }|dk    rdS |dk    r|dz   S 	 |                     ||          \  }}|dk     r|S |||dz            }|dk    rdS |dk    rxd||d          v r|                    d|          dz   }ndS |||dz                                            r$|dz   }|||dz                                            $||d          sdS n|                     ||          \  }}|||dz            }|sdS |dv r:t	          ||          }|r|                                }ndS |||dz            }|sdS |d	k    rE||d          d	k    rdS |                     |dz   |          \  }}|dk     r|S |||dz            }|sdS |dk    r|dz   S t)
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  sE   ,//!\22aAacEN77288q5L.	 ooa66GD!1uu!A#ABwwrCxx'!""+%%S!,,q0AA2a!en,,.. AA a!en,,.. qrr{ 2 //!\::a!A#A rEzz(!44 AA2AacEN 2Cxx122;#%%2//!a%>>aq55HAacEN 2Cxx1u].	r   c                 *   |                      ||          \  }}|dk     r|S | j        }	 |||dz            }|sdS |dk    r|dz   S |dv r)t          ||          }|sdS |                                }n!|                      ||          \  }}|dk     r|S k)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2aq55H,	!A#A rCxx1uEzz(!44 2EEGG//!\::aq55H	r   c                    | j         }|||dz            dk    r4|dz   }	 |||dz            }|sdS |                                r|dz   }nn-n|}|                     ||          \  }}|dk     r|S 	 | j         ||dz            }|sdS |dv r)t          ||          }|r|                                }n.dS |dk    r|dz   S |                     ||          \  }}|dk     r|S p)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  s4   ,1QqS5>S  AAAacEN 299;; AAA A//!\22aq55H	QqsU#A rEzz(!44 AA2c1u//!\::aq55H	r   c                    | j         }t          |          }||k    rdS t          ||          }|rh|                                }|                                }|t          |          z   |k    rdS |                                |                                fS |                     ||           |                     d|||dz            z             d S )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    ,LL668GQ'' 		@		A7799DCFF
q  x::<<((NN<+++JJ2 l2o!=>? @ @ @ @ @r   c                     d S )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   s       + += = =
> > >  ( ( (   N N Nd   ,
 
 
 
@ @ @F  6 6 6r  .     H@ @ @$    r   r   )r~   recompilerS   ru   r8   rW   rM   rO   objectr   rz   r   r
   <module>r      s      D 
			"*:;;A!rz"<==C 
9%% bj.. 
 #
8,, t t t t t t t t t tr   