K i|E$dZddlZddlZddgZejdZejdZejdZejdZejd Z ejd Z ejd Z ejd Z ejd Z ejdZejdZGddeZGddej$ZGddeZddZedk(reyy)z;A parser for SGML, using the derived class as a static DTD.N SGMLParserSGMLParseErrorz[&<]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./,:;+*%?!&$\(\)_#=~\'"@]*))?ceZdZdZy)rz&Exception raised for all parse errors.N)__name__ __module__ __qualname____doc__M/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sgmllib.pyrr&s0r ceZdZejdZd*dZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZddddddZdZd Zd!Z d"Z!d#Z"d$Z#d%Z$d&Z%d'Z&d(Z'y))+rz+&(?:([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+))(;?)c2||_|jy)z#Initialize and reset this instance.N)verboseresetselfrs r __init__zSGMLParser.__init__<s  r cd|_d|_g|_d|_d|_d|_t jj|y)z0Reset this instance. Loses all unprocessed data.Nz???r) _SGMLParser__starttag_textrawdatastacklasttag nomoretagsliteral _markupbase ParserBaserrs r rzSGMLParser.resetAsA#    $$T*r c dx|_|_y)zYEnter literal mode (CDATA) till EOF. Intended for derived classes only. N)rrrs r setnomoretagszSGMLParser.setnomoretagsKs *+*$,r cd|_y)zPEnter literal mode (CDATA). Intended for derived classes only. r!N)r)rargss r setliteralzSGMLParser.setliteralRs  r cN|j|z|_|jdy)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().) rN)rgoaheadrdatas r feedzSGMLParser.feedYs||d*  Qr c&|jdy)zHandle the remaining data.r!N)r'rs r closezSGMLParser.closeds  Qr ct|N)r)rmessages r errorzSGMLParser.errorhs W%%r c|j}d}t|}||kr$|jr|j||||}ntj ||}|r|j }n|}||kr|j||||}||k(rn||dk(rItj||rA|jr|j|||dz}|j|}|dkrnV|}|jd|r#|j|}|dkrn)|}d|_  |jr#||dzkDr|jd|dz}nn;|jd|r|j|}|dkrn|}i|jd|r|j|}|dkrn||z}|jd|r|j|}|dkrne|}||dk(r|jr|j|||dz}t j||}|rE|j#d}|j%||j'd}||dz d k7r|dz }Ut(j||}|rV|j#d}|j+||j'd}||dz d k7r|dz }|j-d t.j||}|s|j|||dz}|j'd}||k(rn|j||||}||kr$|r||kr|j||||}||d|_y) NrD''- ! Aqs|s*!A!3 ;;q>D))$/ ! Aqs|s*!A /0$$Wa0E  ,aC ! AAv   WQq\ *Au!ex 1q5   WQq\ *Aqr{ r =c|j}|||dzdk7r|jdtj||dz}|sy|j d}|j ||dz||j d}||z S)Nr3zunexpected call to parse_pi()r)rr0picloser9r: handle_pirF)rrJrr<rLs r rAzSGMLParser.parse_pis},, 1QqS>T ! JJ6 7w!, KKN wqsA' IIaLs r c|jSr.)rrs r get_starttag_textzSGMLParser.get_starttag_texts###r cd|_|}|j}tj||rtj||}|sy|j dd\}}d|z|_|j }|jd}|j|||||jddz|_|Stj||dz}|sy|jd}g} |||dzdk(r|}|j}nZtj||dz}|s|jd|jd}||dz|j }||_ ||krtj||}|sn|j ddd\} } } | s| } nR| ddd cxk(r| ddk(sn| ddd cxk(r| ddk(rnn| dd} |j j#|j$| } | j'| j | f|jd}||kr||d k(r|dz}||||_|j)|| |S) NrRr!rQz<%s/rz<>z!unexpected call to parse_starttag'"r)rr shorttagopenr<shorttagrDlowerrFfinish_shorttag endbracketr9r:rtagfindr0attrfindentity_or_charrefsub _convert_refappendfinish_starttag) rrJ start_posrr<tagr)rMrLattrsattrnamerest attrvalues r r=zSGMLParser.parse_starttagsM# ,,   gq ) NN7A.E Aq)IC#)CT !A,,CMM'1Q3/E >? ! A!A#a.&&(CDL!eNN7A.E%(- Aq!(< %HdI$ bqMS:IbcN:bqMS:IbcN: )!BI 2266%%y2 LL(..*I6 7 ! A!e 1: !A&y3 S%(r cJ|jdr8|j|jdxsd|jddzS|jdr6|j|jdxsd|jdzSd|jdzS)NrQz&#%s%sr!rXz&%s;z&%s)rDconvert_charrefgroupsconvert_entityref)rr<s r rdzSGMLParser._convert_ref&s ;;q>'' A7.5<<>!"-- . [[^))%++a.9(Q' (5;;q>) )r c|j}tj||dz}|sy|jd}||dz|j j }||dk(r|dz}|j ||S)Nr!rRrrQr)rr_r9r:stripr] finish_endtag)rrJrr<rLrhs r r?zSGMLParser.parse_endtag1s},,!!'1Q3/ KKNac!n""$**, 1: !A 3r cl|j|g|j||j|yr.)rfr7rs)rrhr)s r r^zSGMLParser.finish_shorttag>s. S"%  3r c( t|d|z}|jj||j|||y#t$rH t|d|z}|j|||Yy#t$r|j ||YYywxYwwxYw)Nstart_r!do_rrR)getattrrrehandle_starttagAttributeErrorunknown_starttag)rrhrimethods r rfzSGMLParser.finish_starttagEs T8c>2F JJ  c "  fe 4   us{3 $$S&%8 " %%c51  s/A B A.B.B  B B  Bc|s/t|jdz }|dkr||j|y||jvr" t|d|z}|j |yt|j}t |D]}|j||k(s|}t|j|kDrl|jd} t|d|z}|r|j||n|j||jd=t|j|kDrkyy#t $r|j|YywxYw#t $rd}Y{wxYw)Nr!rend_rR)r6runknown_endtagrxreport_unbalancedrzrange handle_endtag)rrhfoundr|rJs r rszSGMLParser.finish_endtagWsB Oa'Eqy##C($**$0$T6C<8F**3/ OE5\ 3::a=C' 3$**o%**R.C  v|4""3/##C( 2$**o%&-'', -"  s$D!E!D>=D> EEc||yr.r )rrhr|ris r ryzSGMLParser.handle_starttagvs u r c|yr.r )rrhr|s r rzSGMLParser.handle_endtagzsr cl|jr(td|zdztd|jyy)Nz*** Unbalanced , )*c#sD I *    1'(*r cJeZdZd dZdZdZdZdZdZdZ dZ d Z d Z y ) TestSGMLParserc>d|_tj||y)Nr)testdatarrrs r rzTestSGMLParser.__init__s D'*r c|j|z|_tt|jdk\r|jyy)NF)rr6reprflushr(s r r7zTestSGMLParser.handle_datas6 , tDMM" #r ) JJL *r cZ|j}|rd|_tdt|yy)Nrzdata:)rrrr(s r rzTestSGMLParser.flushs(}} DM '4: & r c|jt|}t|dkDr|dddz|ddz}td|y)ND z...izcomment:)rrr6r)rr)rs r rzTestSGMLParser.handle_commentsC J q6B;#234(A j!r c|j|std|zdzytd|zd|D]\}}t|dzdz|zdzd tdy)Nz start tag:  ? #Jr cF|jtd|zdzy)Nz end tag: rs'A ) *bjj RZZ*+ BJJ> ? "**' (rzz,' rzz45 2::: ; "**S/ RZZ  "**. / 2::G H  \ N+''N+b 4Z4n!H zFr