
    X_jJ                        d Z ddlZddlZddlZddlmZ ddgZ ej        d          Z	 ej        d          Z
 ej        d	          Z ej        d
          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z G d de          Z G d dej                  ZdS )z;A parser for SGML, using the derived class as a static DTD.    N   )StringIO
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]+|[xX][0-9a-fA-F]+);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]*zi\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)[$]?(\s*=\s*(\'[^\']*\'|"[^"]*"|[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*))?c                       e Zd ZdZdS )r   z&Exception raised for all parse errors.N)__name__
__module____qualname____doc__     T/tmp/sma-radar-test-venv/lib/python3.11/site-packages/feedparser_sgmllib/__init__.pyr   r   -   s        00Dr   c            	           e Zd Z ej        d          Zd?deddfdZd@ fdZe	de
fd            Zej        d	e
ddfd
            Zd@dZd@dZdej        ddfdZde
ddfdZd@dZde
dej        fdZdeddfdZdZdedefdZde
dz  fdZdedefdZdej        e
         de
fdZdedefdZde
de
ddfdZde
d e e!e
e
f                  dej"        d!         fd"Z#de
ddfd#Z$de
d$ej%        ej        gej        f         d e e!e
e
f                  ddfd%Z&de
d$ej%        g ej        f         ddfd&Z'de
ddfd'Z(d(e
de
dz  fd)Z)d*ede
fd+Z*d(e
ddfd,Z+d-d.d/d0d1d2Z,d(e
de
dz  fd3Z-d(e
ddfd4Z.de
dej        fd5Z/de
dej        fd6Z0d7ej        dej        fd8Z1de
dej        fd9Z2de
d e e!e
e
f                  dej        fd:Z3de
dej        fd;Z4d<e
dej        fd=Z5d<e
dej        fd>Z6 xZ7S )Ar   z+&(?:([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+))(;?)FverbosereturnNc                 ~    || _         d| _        t                      | _        d| _        |                                  dS )z#Initialize and reset this instance. r   N)r   _rawdatar   _pending	_retry_atreset)selfr   s     r   __init__zSGMLParser.__init__C   s5    &  



r   c                     d| _         d| _        t                      | _        d| _        g | _        d| _        d| _        d| _        t                      
                                 dS )z0Reset this instance. Loses all unprocessed data.Nr   r   z???)_SGMLParser__starttag_textr   r   r   r   stacklasttag
nomoretagsliteralsuperr   )r   	__class__s    r   r   zSGMLParser.reset^   sU    +/ 

 "
r   c                 8    |                                   | j        S N)_flush_pendingr   r   s    r   rawdatazSGMLParser.rawdataj   s    }r   valuec                 :    || _         t                      | _        d S r$   )r   r   r   )r   r(   s     r   r'   zSGMLParser.rawdatao   s     

r   c                     | j                                         r<| xj        | j                                         z  c_        t	                      | _         dS dS )z9Merge any chunks queued by `feed()` into `self._rawdata`.N)r   tellr   getvaluer   r&   s    r   r%   zSGMLParser._flush_pendingt   sQ     = 	'MMT]33555MM$JJDMMM	' 	'r   c                 "    dx| _         | _        dS )zYEnter literal mode (CDATA) till EOF.

        Intended for derived classes only.
        r   N)r   r    r&   s    r   setnomoretagszSGMLParser.setnomoretags{   s    
 *+*$,,,r   argsc                     d| _         dS )zPEnter literal mode (CDATA).

        Intended for derived classes only.
        r   N)r    )r   r/   s     r   
setliteralzSGMLParser.setliteral   s    
 r   datac                     | j                             |           t          | j                  | j                                         z   | j        k     rdS |                                  |                     d           dS )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().)
        NF)r   writelenr   r+   r   r%   goaheadr   r2   s     r   feedzSGMLParser.feed   su     	D!!!t} 2 2 4 44t~EE FUr   c                 X    |                                   |                     d           dS )zHandle the remaining data.TN)r%   r6   r&   s    r   closezSGMLParser.close   s.     	Tr   messagec                      t          |          r$   )r   )r   r;   s     r   errorzSGMLParser.error   s    W%%%r   endc                    | j         }d}t          |          }||k     r| j        r!|                     |||                    |}nt                              ||          }|r|                                }n|}||k     r|                     |||                    |}||k    rna||         dk    rt                              ||          rI| j	        r!|                     ||                    |dz   }| 
                    |          }|dk     rn|}|                    d|          r(|                     |          }|dk     rn|}d| _	        ?| j	        r(||dz   k    r|                     d           |dz   }nnn|                    d|          r!|                     |          }|dk     rnP|}|                    d|          r$|                     |          }|dk     rn||z   }|                    d|          rI	 |                     |          }n&# t           $ r}t#          |j                  d }~ww xY w|dk     rn|}>n0||         dk    r| j	        r"|                     ||                    |dz   }vt&                              ||          }|rU|                    d          }	|                     |	           |                    d          }||dz
           d	k    r|dz
  }t.                              ||          }|rU|                    d          }	|                     |	           |                    d          }||dz
           d	k    r|dz
  }Zn|                     d
           t4                              ||          }|s"|                     ||                    |dz   }|                    d          }||k    rn&|                     |||                    |}||k     |r%||k     r|                     |||                    |}||d          | _         |dk    r|dk    r|dz  | _        d S d| _        d S )Nr   <r   z</z<!--<?z<!&;zneither < nor & ??   )r'   r5   r   handle_datainterestingsearchstartstarttagopenmatchr    parse_starttag
startswithparse_endtagparse_commentparse_piparse_declarationAssertionErrorr   r/   charrefgrouphandle_charrefr>   	entityrefhandle_entityrefr=   
incompleter   )
r   r>   r'   inrJ   jkr=   names
             r   r6   zSGMLParser.goahead   s   ,LL!ee   1...&&w22E KKMM1uu  1...AAvvqzS  %%gq11 	| !((444E ++A..A1uuA%%dA.. ))!,,A1uuA#$DL< AE{{((---E %%fa00 	
 **1--A1uuA%%dA.. a((A1uuAA%%dA.. 9 22155) 9 9 9,UZ88891uuA s""< $$WQZ000AAgq11  ;;q>>D''---		!Aq1u~,,E!33  ;;q>>D))$///		!Aq1u~,,E 

/000 $$Wa00E   ,,,E		!AAvvWQqS\***AO !eeR  	1q55WQqS\***Aqrr{66a!ee UDNNNDNNNs   H% %
I/II=rX   c                 >   | j         }|||dz            dk    r|                     d           t                              ||dz             }|sdS |                    d          }|                     ||dz   |                    |                    d          }||z
  S )NrD   rA   zunexpected call to parse_pi()r   )r'   r=   picloserG   rH   	handle_pir>   )r   rX   r'   rJ   rZ   s        r   rO   zSGMLParser.parse_pi'  s    ,1q1u9%%JJ6777wA.. 	2KKNNwq1uqy)***IIaLL1ur   c                     | j         S r$   )r   r&   s    r   get_starttag_textzSGMLParser.get_starttag_text3  s    ##r   c                    d | _         |}| j        }t                              ||          rt                              ||          }|sdS |                    dd          \  }}d| d| _         |                                }|                    d          }|                     ||           |||                    d          dz            | _         |S t          
                    ||dz             }|sdS |                    d          }g }	|||dz            dk    r
|}| j        }npt                              ||dz             }|s|                     d           |                    d          }||dz   |                                         }|| _        ||k     rt                              ||          }|sn|                    ddd	          \  }
}}|s|
}ni|d d         d
cxk    r|dd          k    s"n |d d         dcxk    r|dd          k    rn n
|dd         }| j                            | j        |          }|	                    |
                                |f           |                    d          }||k     ||         dk    r|dz   }|||         | _         |                     ||	           |S )Nr_   r   rD   r@   /r   z<>z!unexpected call to parse_starttag   '"r   )r   r'   shorttagopenrJ   shorttagrS   lowerr>   finish_shorttag
endbracketrG   rH   r   tagfindr=   attrfindentity_or_charrefsub_convert_refappendfinish_starttag)r   rX   	start_posr'   rJ   tagr2   r[   rZ   attrsattrnamerest	attrvalues                r   rK   zSGMLParser.parse_starttag7  s   #	,gq)) 	
 NN7A..E rAq))IC#-s:::D ))++C		!A  d+++#*9uyy||a7G+G#HD H
 !!'1q511 	2KKNN1q1u9%%A,CCMM'1q511E @

>???		!A!a%!)$**,,CDL!eeNN7A..E (-Aq!(<(<%HdI 	U$		 bqbMS::::IbccN:::: !}====y~===== !*!B$I 266t7H)TT	LL(..**I6777		!A! !ee" 1:AA&y{3S%(((r   rJ   c                    |                     d          rG|                     |                     d                    pd|                                dd          z  S |                     d          r@|                     |                     d                    pd|                     d          z  S d|                     d          z  S )NrD   z&#%s%sr   rf   z&%s;z&%s)rS   convert_charrefgroupsconvert_entityref)r   rJ   s     r   rr   zSGMLParser._convert_refw  s    ;;q>> 	*''A77X8ellnnUVUWUWFX;XX[[^^ 	*))%++a..99TVekkRSnn=TT5;;q>>))r   c                 0   | j         }t                              ||dz             }|sdS |                    d          }||dz   |                                                                         }||         dk    r|dz   }|                     |           |S )Nr   r_   r   rD   r   )r'   rm   rG   rH   striprk   finish_endtag)r   rX   r'   rJ   rZ   rv   s         r   rM   zSGMLParser.parse_endtag  s    ,!!'1q511 	2KKNNa!eai &&((..001:AA3r   rv   c                     |                      |g            |                     |           |                     |           d S r$   )rt   rE   r   )r   rv   r2   s      r   rl   zSGMLParser.finish_shorttag  sF    S"%%%3r   rw   )r_   r   r   c                 X   	 t          | d|z             }| j                            |           |                     |||           dS # t          $ rW 	 t          | d|z             }|                     |||           Y dS # t          $ r |                     ||           Y Y dS w xY ww xY w)Nstart_r   do_r   r_   )getattrr   rs   handle_starttagAttributeErrorunknown_starttag)r   rv   rw   methods       r   rt   zSGMLParser.finish_starttag  s    	T8c>22F Jc"""  fe4441  	 	 	 us{33
 $$S&%888qq "   %%c5111rrr	s/   A 
B)B &B)  B% B)$B%%B)c                 V   t                               |          x}|                    d          }|s5t          | j                  dz
  }|dk     r|                     |           d S n|| j        vrQ	 t          | d|z              |                     |           n%# t          $ r |                     |           Y nw xY wd S t          | j                  }t          t          | j                            D ]'\  }}||k    rt          | j                  dz
  |z
  } n(t          | j                  |k    rq| j        d         }t          | d|z   d           }||                     ||           n|                     |           | j        d= t          | j                  |k    od S d S )Nr   r   end_r_   )rn   rJ   rS   r5   r   unknown_endtagr   report_unbalancedr   	enumeratereversedhandle_endtag)r   rv   rJ   foundrX   	stack_tagr   s          r   r   zSGMLParser.finish_endtag  s   ]]3'''E4++a..C 	
OOa'Eqyy##C(((  $*$$0D&3,/// **3//// & - - -'',,,,,- 
OOE )(4:*>*> ? ?  9##
OOa/!3EE $ $*oo%%*R.C3:4#t3T3TF!""3////##C(((
2 $*oo%%%%%%s   3B B>=B>r   c                      ||           d S r$   r   )r   rv   r   rw   s       r   r   zSGMLParser.handle_starttag  s     	ur   c                      |             d S r$   r   )r   rv   r   s      r   r   zSGMLParser.handle_endtag  s    r   c                 l    | j         r,t          d|z   dz              t          d| j                   d S d S )Nz*** Unbalanced </r   z
*** Stack:)r   printr   r   rv   s     r   r   zSGMLParser.report_unbalanced  sG    < 	,%+c1222,
+++++	, 	,r   r\   c                     	 t          |          }n# t          $ r Y dS w xY wd|cxk    rdk    sn dS |                     |          S )z/Convert character reference, may be overridden.Nr      )int
ValueErrorconvert_codepoint)r   r\   rY   s      r   r|   zSGMLParser.convert_charref  sf    	D		AA 	 	 	44	A}}}}}}}}4%%a(((s    
  	codepointc                      t          |          S r$   )chr)r   r   s     r   r   zSGMLParser.convert_codepoint  s    9~~r   c                     |                      |          }||                     |           dS |                     |           dS )z0Handle character reference, no need to override.N)r|   unknown_charrefrE   r   r\   replacements      r   rT   zSGMLParser.handle_charref  sO    **400  &&&&&[)))))r   r@   r   rB   rh   rg   )ltgtampquotaposc                 ,    | j         }||v r||         S dS )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   r\   tables      r   r~   zSGMLParser.convert_entityref  s#     5==;4r   c                     |                      |          }||                     |           dS |                     |           dS )z.Handle entity references, no need to override.N)r~   unknown_entityrefrE   r   s      r   rV   zSGMLParser.handle_entityref  sO    ,,T22""4((((([)))))r   c                     d S r$   r   r7   s     r   rE   zSGMLParser.handle_data      r   c                     d S r$   r   r7   s     r   handle_commentzSGMLParser.handle_comment  r   r   declc                     d S r$   r   )r   r   s     r   handle_declzSGMLParser.handle_decl  r   r   c                     d S r$   r   r7   s     r   ra   zSGMLParser.handle_pi  r   r   c                     d S r$   r   )r   rv   rw   s      r   r   zSGMLParser.unknown_starttag  r   r   c                     d S r$   r   r   s     r   r   zSGMLParser.unknown_endtag  r   r   refc                     d S r$   r   r   r   s     r   r   zSGMLParser.unknown_charref  r   r   c                     d S r$   r   r   s     r   r   zSGMLParser.unknown_entityref  r   r   )F)r   N)8r	   r
   r   recompilerp   boolr   r   propertystrr'   setterr%   r.   tAnyr1   r8   r:   NoReturnr=   r6   _decl_othercharsr   rO   rc   rK   Matchrr   rM   rl   listtupleLiteralrt   r   Callabler   r   r   r|   r   rT   r   r~   rV   rE   r   r   ra   r   r   r   r   __classcell__)r"   s   @r   r   r   ?   s       "
#PQQ      6
 
 
 
 
 
     X ^#S #T # # # ^#' ' ' '+ + + + $         "   &S &QZ & & & &z4 zD z z z z| 
# 
# 
 
 
 
$3: $ $ $ $= = = = = =@*"(3- *C * * * *
c 
c 
 
 
 
 3  c  d        #E#s(O4	
8	   (     @ !
AE7AE> :CGcSVhCX	    ajQU.C     ,S ,T , , , ,
)C )C$J ) ) ) )3 3    *3 *4 * * * * 3sCMMJ
c 
cDj 
 
 
 
*S *T * * * *     3 15     !%    c ae    C U38_0E !%    # !%    3 15    S QU        r   )r   _markupbaser   typingr   _compatr   __all__r   rF   rW   rU   rR   rI   ri   rj   r`   rm   rn   ro   RuntimeErrorr   
ParserBaser   r   r   r   <module>r      s   A A     				          )
* bj  RZ 
 BJ>??	
"*3
4
4rz,''rz4552::;;
"*S//RZ

"*/
0
02:G 	 	 	 	 	\ 	 	 	$_ _ _ _ _' _ _ _ _ _r   