
    i|E                     (   S r SSKrSSKrSS/r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S	5      r	\R                  " S
5      r
\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r " S S\5      r " S S\R$                  5      r " S S\5      rSS jr\S:X  a  \" 5         gg)z;A parser for SGML, using the derived class as a static DTD.    N
SGMLParserSGMLParseErrorz[&<]zN&([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|<([a-zA-Z][^<>]*|/([a-zA-Z][^<>]*)?|![^<>]*)?z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z&#([0-9]+)[^0-9]z
<[>a-zA-Z]z<[a-zA-Z][-.a-zA-Z0-9]*/z"<([a-zA-Z][-.a-zA-Z0-9]*)/([^/]*)/>z[<>]z[a-zA-Z][-_.a-zA-Z0-9]*ze\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*(\'[^\']*\'|"[^"]*"|[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*))?c                       \ rS rSrSrSrg)r   &   z&Exception raised for all parse errors. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       4/app/mltbenv/lib/python3.13/site-packages/sgmllib.pyr   r   &   s    0r   c                      \ rS rSr\R
                  " S5      rS,S jrS rS r	S r
S rS rS	 rS
 rSrS rS rS rS rS rS rS rS rS rS rS rS rS rS rSSSSSS.rS  rS! r S" r!S# r"S$ r#S% r$S& r%S' r&S( r'S) r(S*r)g+)-r   6   z+&(?:([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+))(;?)c                 0    Xl         U R                  5         g)z#Initialize and reset this instance.N)verboseresetselfr   s     r   __init__SGMLParser.__init__<   s    

r   c                     SU l         SU l        / U l        SU l        SU l        SU l        [        R                  R                  U 5        g)z0Reset this instance. Loses all unprocessed data.N z???r   )	_SGMLParser__starttag_textrawdatastacklasttag
nomoretagsliteral_markupbase
ParserBaser   r   s    r   r   SGMLParser.resetA   sA    #
$$T*r   c                      S=U l         U l        g)zIEnter literal mode (CDATA) till EOF.

Intended for derived classes only.
   N)r    r!   r$   s    r   setnomoretagsSGMLParser.setnomoretagsK   s    
 *+*$,r   c                     SU l         g)z@Enter literal mode (CDATA).

Intended for derived classes only.
r'   N)r!   )r   argss     r   
setliteralSGMLParser.setliteralR   s    
 r   c                 N    U R                   U-   U l         U R                  S5        g)zFeed some data to the parser.

        Call this as often as you want, with as little or as much text
        as you want (may include '
').  (This just saves the text,
        all the processing is done by goahead().)
        r   N)r   goaheadr   datas     r   feedSGMLParser.feedY   s     ||d*Qr   c                 &    U R                  S5        g)zHandle the remaining data.r'   N)r/   r$   s    r   closeSGMLParser.closed   s    Qr   c                     [        U5      eN)r   )r   messages     r   errorSGMLParser.errorh   s    W%%r   c                 n   U R                   nSn[        U5      nX4:  Gal  U R                  (       a  U R                  X#U 5        UnGOD[        R                  X#5      nU(       a  UR                  5       nOUnX6:  a  U R                  X#U 5        UnX4:X  a  GOX#   S:X  Gav  [        R                  X#5      (       aH  U R                  (       a  U R                  X#   5        US-   nM  U R                  U5      nUS:  a  GOUnM  UR                  SU5      (       a%  U R                  U5      nUS:  a  GOYUnSU l	        GM%  U R                  (       a$  XCS-   :  a  U R                  S5        US-   nOGOGMZ  UR                  SU5      (       a  U R                  U5      nUS:  a  GOUnGM  UR                  SU5      (       a   U R                  U5      nUS:  a  GOX7-   nGM  UR                  SU5      (       a  U R                  U5      nUS:  a  GO|UnGM  GO
X#   S:X  a  U R                  (       a  U R                  X#   5        US-   nGM1  [         R                  X#5      nU(       aF  UR#                  S5      nU R%                  U5        UR'                  S5      nX#S-
     S	:w  a  US-
  nGM  [(        R                  X#5      nU(       aF  UR#                  S5      nU R+                  U5        UR'                  S5      nX#S-
     S	:w  a  US-
  nGM  OU R-                  S
5        [.        R                  X#5      nU(       d  U R                  X#   5        US-   nGM>  UR'                  S5      nXd:X  a  OU R                  X#U 5        UnX4:  a  GMl  U(       a  X4:  a  U R                  X#U 5        UnX#S  U l         g )Nr   <r'   z</z<!--<?z<!&;zneither < nor & ??)r   lenr    handle_datainterestingsearchstartstarttagopenmatchr!   parse_starttag
startswithparse_endtagparse_commentparse_piparse_declarationcharrefgrouphandle_charrefend	entityrefhandle_entityrefr:   
incomplete)	r   rQ   r   inrG   jknames	            r   r/   SGMLParser.goaheadn   sj   ,,Le  1.&&w2E%++-a!u  1.AvuzS %%g11||((4aC ++A.A1ueA%%dA..))!,A1ueA#$DL<<E{((-aC %%fa00
 **1-A1ueA%%dA..a(A1ueA%%dA.. ..q1A1ueA / s"<<$$WZ0!Ag1 ;;q>D''-		!As|s*!A!3 ;;q>D))$/		!As|s*!A  

/0 $$W0E  ,aC		!AvWq\*Au ex 15Wq\*Ar{r   =c                 
   U R                   nX!US-    S:w  a  U R                  S5        [        R                  X!S-   5      nU(       d  gUR	                  S5      nU R                  X!S-   U 5        UR                  S5      nXA-
  $ )N   r>   zunexpected call to parse_pi()r   )r   r:   picloserD   rE   	handle_pirQ   )r   rU   r   rG   rW   s        r   rL   SGMLParser.parse_pi   su    ,,QqS>T!JJ67w!,KKNwsA'IIaLs
r   c                     U R                   $ r8   )r   r$   s    r   get_starttag_textSGMLParser.get_starttag_text   s    ###r   c                    S U l         UnU R                  n[        R                  X15      (       a  [        R                  X15      nU(       d  gUR                  SS5      u  pVSU-  U l         UR                  5       nUR                  S5      nU R                  XV5        X2UR                  S5      S-    U l         U$ [        R                  X1S-   5      nU(       d  gUR                  S5      n/ n	X1US-    S:X  a  UnU R                  nO\[        R                  X1S-   5      nU(       d  U R                  S5        UR                  S5      nX1S-   U R                  5       nXPl        Xx:  a  [        R                  X75      nU(       d  OUR                  SSS5      u  pnU(       d  U
nOVUS S S	s=:X  a	  USS  :X  d  O  US S S
s=:X  a	  USS  :X  a  O  OUSS nU R                   R#                  U R$                  U5      nU	R'                  U
R                  5       U45        UR                  S5      nXx:  a  M  X8   S:X  a  US-   nX2U U l         U R)                  XY5        U$ )Nr^   r'   r]   z<%s/r   z<>z!unexpected call to parse_starttag   '"r   )r   r   shorttagopenrG   shorttagrO   lowerrQ   finish_shorttag
endbracketrD   rE   r   tagfindr:   attrfindentity_or_charrefsub_convert_refappendfinish_starttag)r   rU   	start_posr   rG   tagr1   rX   rW   attrsattrnamerest	attrvalues                r   rH   SGMLParser.parse_starttag   s.   #	,,g))
 NN7.EAq)IC#)C<D ))+C		!A  +#*UYYq\A5E#FD H
 !!'Q3/KKNQqS>T!A,,CMM'Q3/E

>?		!AA#a.&&(CLeNN7.E%(-Aq!(<%HI$	bqMS:IbcN:bqMS:IbcN: )!BI 2266%%y2	LL(..*I67		!A e :!A&3S(r   c                 r   UR                  S5      (       a=  U R                  UR                  S5      5      =(       d    SUR                  5       SS  -  $ UR                  S5      (       a;  U R                  UR                  S5      5      =(       d    SUR                  S5      -  $ SUR                  S5      -  $ )Nr]   z&#%s%sr'   rf   z&%s;z&%s)rO   convert_charrefgroupsconvert_entityref)r   rG   s     r   rr   SGMLParser._convert_ref&  s    ;;q>>''A7 .5<<>!"--.[[^^))%++a.9 (Q'( 5;;q>))r   c                    U R                   n[        R                  X!S-   5      nU(       d  gUR                  S5      nX!S-   U R	                  5       R                  5       nX$   S:X  a  US-   nU R                  U5        U$ )Nr'   r^   r   r]   r   )r   rm   rD   rE   striprk   finish_endtag)r   rU   r   rG   rW   rv   s         r   rJ   SGMLParser.parse_endtag1  sw    ,,!!'Q3/KKNc!n""$**,:!A3r   c                 l    U R                  U/ 5        U R                  U5        U R                  U5        g r8   )rt   rB   r   )r   rv   r1   s      r   rl   SGMLParser.finish_shorttag>  s.    S"%3r   c                 &    [        U SU-   5      nU R                  R                  U5        U R                  XU5        g! [         aG     [        U SU-   5      nU R                  XU5         g! [         a    U R                  X5          gf = ff = f)Nstart_r'   do_r   r^   )getattrr   rs   handle_starttagAttributeErrorunknown_starttag)r   rv   rw   methods       r   rt   SGMLParser.finish_starttagE  s    	T8c>2F JJc"  e4  	 us{3
 $$S%8 " %%c1	s-   ? 
B
A-B-BBBBc                    U(       d1  [        U R                  5      S-
  nUS:  a  U R                  U5        g OoXR                  ;  a"   [        U SU-   5      nU R	                  U5        g [        U R                  5      n[        U5       H  nU R                  U   U:X  d  M  UnM     [        U R                  5      U:  ar  U R                  S   n [        U SU-   5      nU(       a  U R                  X5        OU R                  U5        U R                  S	 [        U R                  5      U:  a  Mq  g g ! [
         a    U R                  U5         g f = f! [
         a    S n Nf = f)Nr'   r   end_r^   )rA   r   unknown_endtagr   report_unbalancedr   rangehandle_endtag)r   rv   foundr   rU   s        r   r   SGMLParser.finish_endtagW  s@   

Oa'Eqy##C(  **$0$T6C<8F **3/

OE5\::a=C' "$**o%**R.C v|4 ""3/##C(

2 $**o% & -'', 	- " s$   	D4 E 4EEE$#E$c                     U" U5        g r8   r   )r   rv   r   rw   s       r   r   SGMLParser.handle_starttagv  s	    ur   c                     U" 5         g r8   r   )r   rv   r   s      r   r   SGMLParser.handle_endtagz  s    r   c                 v    U R                   (       a(  [        SU-   S-   5        [        SU R                  5        g g )Nz*** Unbalanced </r   z
*** Stack:)r   printr   r   rv   s     r   r   SGMLParser.report_unbalanced~  s/    <<%+c12,

+ r   c                 ~     [        U5      nSUs=::  a  S::  d   g  gU R                  U5      $ ! [         a     gf = f)z/Convert character reference, may be overridden.Nr      )int
ValueErrorconvert_codepoint)r   rY   rV   s      r   r}   SGMLParser.convert_charref  sM    	D	A A}} %%a((	  		s   / 
<<c                     [        U5      $ r8   )chr)r   	codepoints     r   r   SGMLParser.convert_codepoint  s    9~r   c                 r    U R                  U5      nUc  U R                  U5        gU R                  U5        g)z0Handle character reference, no need to override.N)r}   unknown_charrefrB   r   rY   replacements      r   rP   SGMLParser.handle_charref  s4    **40  &[)r   r=   r   r?   rh   rg   )ltgtampquotaposc                 .    U R                   nX;   a  X!   $ g)zConvert entity references.

As an alternative to overriding this method; one can tailor the
results by setting up the self.entitydefs mapping appropriately.
N)
entitydefs)r   rY   tables      r   r   SGMLParser.convert_entityref  s     =;r   c                 r    U R                  U5      nUc  U R                  U5        gU R                  U5        g)z.Handle entity references, no need to override.N)r   unknown_entityrefrB   r   s      r   rS   SGMLParser.handle_entityref  s4    ,,T2""4([)r   c                     g r8   r   r0   s     r   rB   SGMLParser.handle_data      r   c                     g r8   r   r0   s     r   handle_commentSGMLParser.handle_comment  r   r   c                     g r8   r   )r   decls     r   handle_declSGMLParser.handle_decl  r   r   c                     g r8   r   r0   s     r   r`   SGMLParser.handle_pi  r   r   c                     g r8   r   )r   rv   rw   s      r   r   SGMLParser.unknown_starttag  s    Dr   c                     g r8   r   r   s     r   r   SGMLParser.unknown_endtag  s    4r   c                     g r8   r   r   refs     r   r   SGMLParser.unknown_charref  s    Dr   c                     g r8   r   r   s     r   r   SGMLParser.unknown_entityref  s    dr   )__starttag_textr   r!   r    r   r   r   Nr   )*r	   r
   r   r   recompilerp   r   r   r(   r,   r2   r5   r:   r/   _decl_othercharsrL   rc   rH   rr   rJ   rl   rt   r   r   r   r   r}   r   rP   r   r   rS   rB   r   r   r`   r   r   r   r   r   r   r   r   r   r   6   s    

 $ 
++	&c#N 
$;|*
 $>,
)* c#sDI 
* 1'(*r   c                   T    \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestSGMLParseri  c                 <    SU l         [        R                  X5        g )Nr   )testdatar   r   r   s     r   r   TestSGMLParser.__init__  s    D*r   c                     U R                   U-   U l         [        [        U R                   5      5      S:  a  U R                  5         g g )NF   )r   rA   reprflushr0   s     r   rB   TestSGMLParser.handle_data  s6    ,tDMM"#r)JJL *r   c                 d    U R                   nU(       a  SU l         [        S[        U5      5        g g )Nr   zdata:)r   r   r   r0   s     r   r   TestSGMLParser.flush  s(    }}DM'4:& r   c                     U R                  5         [        U5      n[        U5      S:  a  US S S-   USS  -   n[        SU5        g )ND       z...izcomment:)r   r   rA   r   )r   r1   rs      r   r   TestSGMLParser.handle_comment  sC    

Jq6B;#234(Aj!r   c                     U R                  5         U(       d  [        SU-   S-   5        g [        SU-   SS9  U H  u  p4[        US-   S-   U-   S-   SS9  M     [        S5        g )Nzstart tag: <r    )rQ   r[   rh   r   r   )r   rv   rw   rY   values        r   r   TestSGMLParser.unknown_starttag  s_    

.3&,-.3&C0$dSj3&.4#>  %#Jr   c                 F    U R                  5         [        SU-   S-   5        g )Nzend tag: </r   r   r   s     r   r   TestSGMLParser.unknown_endtag  s    

mc!C'(r   c                 F    U R                  5         [        SU-   S-   5        g )Nz*** unknown entity ref: &r@   r   r   s     r   r    TestSGMLParser.unknown_entityref  s    

)C/#56r   c                 F    U R                  5         [        SU-   S-   5        g )Nz*** unknown char ref: &#r@   r   r   s     r   r   TestSGMLParser.unknown_charref  s    

(3.45r   c                 F    U R                  5         [        SU-   S-   5        g )Nz*** unknown decl: []r   r0   s     r   unknown_declTestSGMLParser.unknown_decl  s    

#d*S01r   c                 N    [         R                  U 5        U R                  5         g r8   )r   r5   r   r$   s    r   r5   TestSGMLParser.close  s    

r   )r   Nr   )r	   r
   r   r   r   rB   r   r   r   r   r   r   r   r5   r   r   r   r   r   r     s4    +
')762r   r   c                    SS K nU c  UR                  SS  n U (       a  U S   S:X  a  U SS  n [        nO[        nU (       a  U S   nOSnUS:X  a  UR                  nO [        US5      nWR                  5       nXAR                  La  UR                  5         U" 5       nU H  nUR                  U5        M     UR                  5         g ! [         a(  n[        USU5        UR                  S5         S nANS nAff = f)Nr   r'   z-sz	test.html-r   :)sysargvr   r   stdinopenIOErrorr   exitreadr5   r2   )	r+   r   klassfilefmsgr1   xcs	            r   testr    s    |xx|Q4ABxAws{II	T3A
 668D				A	q	 GGI  	$S!HHQKK	s   C 
C:C55C:__main__r8   )r   r"   r   __all__r   rC   rT   rR   rN   rF   ri   rj   r_   rm   rn   ro   RuntimeErrorr   r#   r   r   r  r	   r   r   r   <module>r     s   A  	)
* jj ZZ * +

 JJ>?	
**'
(zz,'zz45:::;
**S/ZZ

**.
/::GH
	\ 	 N+'' N+b4Z 4n!H zF r   