§
    øyIfP*  ã                   óT  — d Z dZddgZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddlmZ ddlmZm Z m!Z!m"Z"m#Z# ee$df         Z%e G d„ d¦  «        ¦   «         Z& G d„ d¦  «        Z' G d„ d¦  «        Z(d*de%dee%         de$fd„Z)	 	 	 	 	 d+de$dee$         de*de*dee         defd „Z+d!e$d"e$de*fd#„Z,	 d*d$e$d%e$dee%         dej        fd&„Z-d'e$de*fd(„Z.e/d)k    r$ ej0         e1 e.¦   «          ¦  «        ¦  «         dS dS ),zZParser driver.

This provides a high-level interface to parse a file into a syntax tree.

z#Guido van Rossum <guido@python.org>ÚDriverÚload_grammaré    N)Úcontextmanager)Ú	dataclassÚfield)ÚLogger)	ÚIOÚAnyÚIterableÚIteratorÚListÚOptionalÚTupleÚUnionÚcast)ÚGrammar)ÚGoodTokenInfo)ÚNLé   )ÚgrammarÚparseÚpgenÚtokenÚtokenizezos.PathLike[str]c                   ój   — e Zd ZU eed<   dZee         ed<    ee¬¦  «        Z	e
e         ed<   dd„ZdS )	ÚReleaseRangeÚstartNÚend)Údefault_factoryÚtokensÚreturnc                 óL   — t          | j        ¦  «        }| j        |z   | _        d S ©N)Úlenr    r   r   )ÚselfÚtotal_eatens     úI/var/www/piapp/venv/lib/python3.11/site-packages/blib2to3/pgen2/driver.pyÚlockzReleaseRange.lock-   s#   € Ý˜$œ+Ñ&Ô&ˆØ”: Ñ+ˆŒˆˆó    )r!   N)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__r   r   r   Úlistr    r   r
   r(   © r)   r'   r   r   '   sh   € € € € € € à€J€J�JØ€Cˆ�#ŒÐÐÑØ˜¨dÐ3Ñ3Ô3€FˆD�ŒIÐ3Ð3Ñ3ð,ð ,ð ,ð ,ð ,ð ,r)   r   c                   óz   — e Zd Zdeddfd„Zeded          fd„¦   «         Zdedefd„Z	dd„Z
defd	„Zd
edefd„ZdS )Ú
TokenProxyÚ	generatorr!   Nc                 ó0   — || _         d| _        g | _        d S )Nr   )Ú_tokensÚ_counterÚ_release_ranges)r%   r3   s     r'   Ú__init__zTokenProxy.__init__3   s   € Ø ˆŒØˆŒØ35ˆÔÐÐr)   c              #   óÊ   K  — t          | j        ¦  «        }| j                             |¦  «         	 | V — |                     ¦   «          d S # |                     ¦   «          w xY wr#   )r   r6   r7   Úappendr(   )r%   Úrelease_ranges     r'   ÚreleasezTokenProxy.release8   sl   è è € å$ T¤]Ñ3Ô3ˆØÔ×#Ò# MÑ2Ô2Ð2ð	!ØˆJˆJˆJð ×ÒÑ Ô Ð Ð Ð øˆM×ÒÑ Ô Ð Ð øøøs   ²A ÁA"Úpointc                 óþ   — | j         d         j        }|t          |¦  «        k     r||         S |t          |¦  «        k    r<t          | j        ¦  «        }|                     |¦  «         |t          |¦  «        k    °<|S )Néÿÿÿÿ)r7   r    r$   Únextr5   r:   )r%   r=   Úeaten_tokensr   s       r'   ÚeatzTokenProxy.eatC   s‚   € ØÔ+¨BÔ/Ô6ˆØ•3�|Ñ$Ô$Ò$Ð$Ø Ô&Ð&à�3˜|Ñ,Ô,Ò,Ð,Ý˜Tœ\Ñ*Ô*�Ø×#Ò# EÑ*Ô*Ð*ð �3˜|Ñ,Ô,Ò,Ð,ð ˆLr)   c                 ó   — | S r#   r0   )r%   s    r'   Ú__iter__zTokenProxy.__iter__M   s   € Øˆr)   c                 óè   — | j         D ]E}|j        €J ‚|j        |j        }}|| j        cxk    r|k     rn Œ.|j        | j        |z
           } nŒFt          | j        ¦  «        }| xj        dz  c_        |S )Nr   )r7   r   r   r6   r    r@   r5   )r%   r;   r   r   r   s        r'   Ú__next__zTokenProxy.__next__P   sœ   € ð "Ô1ð 	'ð 	'ˆMØ Ô$Ð0Ð0Ð0à&Ô,¨mÔ.?�3ˆEØ˜œÐ+Ð+Ò+Ð+¨Ò+Ð+Ð+Ð+Ð+Ø%Ô,¨T¬]¸UÑ-BÔC�Ø�ð ,õ ˜œÑ&Ô&ˆEØˆŒ˜ÑˆŒØˆr)   Útoc                 óT   — 	 |                       |¦  «         dS # t          $ r Y dS w xY w)NTF)rB   ÚStopIteration)r%   rG   s     r'   Úcan_advancezTokenProxy.can_advance`   sA   € ð	Ø�HŠH�R‰LŒLˆLð �4øõ ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ™
'¦')r!   r2   )r*   r+   r,   r
   r8   r   r   r<   r-   rB   rD   rF   ÚboolrJ   r0   r)   r'   r2   r2   2   sÕ   € € € € € ð6 #ð 6¨$ð 6ð 6ð 6ð 6ð
 ð!˜ ,Ô/ð !ð !ð !ñ „^ð!ð˜ð  ð ð ð ð ðð ð ð ð˜#ð ð ð ð ð ˜cð  dð ð ð ð ð ð r)   r2   c            	       óø   — e Zd Zddedee         ddfd„Zddee         de	de
fd	„Zdd
ee         de	de
fd„Zdd
ee         de	de
fd„Z	 ddedee         de	de
fd„Zddede	de
fd„Zdededeeef         fd„ZdS )r   Nr   Úloggerr!   c                 óX   — || _         |€t          j        t          ¦  «        }|| _        d S r#   )r   ÚloggingÚ	getLoggerr*   rM   )r%   r   rM   s      r'   r8   zDriver.__init__l   s)   € ØˆŒØˆ>ÝÔ&¥xÑ0Ô0ˆFØˆŒˆˆr)   Fr    Údebugc                 ó  — t          |¦  «        }t          j        | j        ¦  «        }|                     |¬¦  «         d}d}g }dx}x}	x}
x}}d}|D �] }|\  }}	}
}}|
||fk    rE||f|
k    sJ ||f|
f¦   «         ‚|
\  }}||k     r|d||z
  z  z  }|}d}||k     r||||…         z  }|}|t
          j        t
          j        fv r'||	z  }|\  }}|	                     d¦  «        r|dz  }d}Œ™|t          j
        k    rt          j        |	         }|r1|€J ‚| j                             dt          j        |         |	|¦  «         |t          j        k    r,|                     t#          |	¦  «        ¦  «         ||	z   }d}d}	n=|t          j        k    r-|                     ¦   «         }|                      ||¦  «        \  }}|                     t-          t.          |¦  «        |	||
f¦  «        r|r| j                             d¦  «          nnd}|t          j        t          j        hv r|}|\  }}|	                     d¦  «        r|t          j        k    r|dz  }d}�Œ|
€J ‚t          j        d	||	||
f¦  «        ‚|j        €J ‚|j        S )
z4Parse a series of tokens and return the syntax tree.)Úproxyr   r   NÚ ú
z%s %r (prefix=%r)zStop.zincomplete input)r2   r   ÚParserr   Úsetupr   ÚCOMMENTr   Úendswithr   ÚOPÚopmaprM   rQ   Útok_nameÚINDENTr:   r$   ÚDEDENTÚpopÚ_partially_consume_prefixÚaddtokenr   r-   ÚFSTRING_MIDDLEÚ
ParseErrorÚrootnode)r%   r    rQ   rS   ÚpÚlinenoÚcolumnÚindent_columnsÚtypeÚvaluer   r   Ú	line_textÚprefixÚ	quintupleÚs_linenoÚs_columnÚ_prefixÚ_indent_cols                      r'   Úparse_tokenszDriver.parse_tokensr   s
  € õ ˜6Ñ"Ô"ˆåŒL˜œÑ&Ô&ˆØ	�Š�eˆÑÔÐàˆØˆØ$&ˆØ15Ð5ˆÐ5ˆuÐ5�uÐ5˜s YØˆàð 2	Uñ 2	UˆIØ1:Ñ.ˆD�%˜  YØ˜ Ð(Ò(Ð(Ø Ð'¨5Ò0Ð0Ð0°F¸FÐ3CÀUÐ2KÑ0Ô0Ð0Ø%*Ñ"�˜(Ø˜HÒ$Ð$Ø˜d h°Ñ&7Ñ8Ñ8�FØ%�FØ�FØ˜HÒ$Ð$Ø˜i¨¨x¨Ô8Ñ8�FØ%�FØ�Ô(­(¬+Ð6Ð6Ð6Ø˜%‘�Ø!$‘�˜Ø—>’> $Ñ'Ô'ð Ø˜a‘K�FØ�FØØ•u”xÒÐÝ”} UÔ+�Øð ØÐ'Ð'Ð'Ø”×!Ò!Ø'­¬¸Ô)=¸uÀfñô ð ð •u”|Ò#Ð#Ø×%Ò%¥c¨%¡j¤jÑ1Ô1Ð1Ø  5™.�Ø�Ø��Ø�œÒ%Ð%Ø,×0Ò0Ñ2Ô2�Ø"&×"@Ò"@ÀÈÑ"UÔ"U‘�˜Ø�zŠz�$�s D™/œ/¨5°6¸5°/ÑBÔBð Øð /Ø”K×%Ò% gÑ.Ô.Ð.Ø�ØˆFØ�œ¥e¤lÐ3Ð3Ð3Ø �Ø ‰NˆF�Fð �~Š~˜dÑ#Ô#ð ¨µÔ0DÒ(DÐ(DØ˜!‘�Ø�ùð Ð$Ð$Ð$ÝÔ"Ð#5°t¸UÀVÈUÀOÑTÔTÐTØŒzÐ%Ð%Ð%ØŒzÐr)   Ústreamc                 ón   — t          j        |j        | j        ¬¦  «        }|                      ||¦  «        S )ú*Parse a stream and return the syntax tree.©r   )r   Úgenerate_tokensÚreadliner   rr   )r%   rs   rQ   r    s       r'   Úparse_stream_rawzDriver.parse_stream_raw¶   s1   € åÔ)¨&¬/À4Ä<ÐPÑPÔPˆØ× Ò  ¨Ñ/Ô/Ð/r)   c                 ó.   — |                       ||¦  «        S )ru   )ry   )r%   rs   rQ   s      r'   Úparse_streamzDriver.parse_stream»   s   € à×$Ò$ V¨UÑ3Ô3Ð3r)   ÚfilenameÚencodingc                 ó„   — t          ||¬¦  «        5 }|                      ||¦  «        cddd¦  «         S # 1 swxY w Y   dS )z(Parse a file and return the syntax tree.)r}   N)Úopenr{   )r%   r|   r}   rQ   rs   s        r'   Ú
parse_filezDriver.parse_file¿   s‹   € õ �( XÐ.Ñ.Ô.ð 	4°&Ø×$Ò$ V¨UÑ3Ô3ð	4ð 	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   ’5µ9¼9Útextc                 ó’   — t          j        t          j        |¦  «        j        | j        ¬¦  «        }|                      ||¦  «        S )z*Parse a string and return the syntax tree.rv   )r   rw   ÚioÚStringIOrx   r   rr   )r%   r�   rQ   r    s       r'   Úparse_stringzDriver.parse_stringÆ   sE   € åÔ)ÝŒK˜ÑÔÔ&°´ð
ñ 
ô 
ˆð × Ò  ¨Ñ/Ô/Ð/r)   rl   rg   c                 ól  — g }d}d}d}|D ]“}||z  }|rl|dk    re|                      ¦   «         r6||k     r0d                     |¦  «        }||t          |¦  «        d …         fc S |                     |¦  «         d}d}d}Œu|dv r|dz  }Œ|dk    rd}Œˆ|dk    rd}Œ‘d}Œ”d                     |¦  «        |fS )	NrT   r   FrU   z 	r   úT)ÚstripÚjoinr$   r:   )	r%   rl   rg   ÚlinesÚcurrent_lineÚcurrent_columnÚwait_for_nlÚcharÚress	            r'   r`   z Driver._partially_consume_prefixÍ   s  € ØˆØˆØˆØˆØð 	#ð 	#ˆDØ˜DÑ ˆLØð #Ø˜4’<�<Ø#×)Ò)Ñ+Ô+ð 7°ÀÒ0GÐ0GØ Ÿgšg e™nœn˜Ø" F­3¨s©8¬8¨:¨:Ô$6Ð6Ð6Ð6Ð6à—L’L Ñ.Ô.Ð.Ø#%�LØ%&�NØ"'�KøØ˜��Ø !Ñ#��Ø˜’�à!"��Ø˜’�Ø!"��ð #��Ø�wŠw�u‰~Œ~˜|Ð+Ð+r)   r#   )F)NF)r*   r+   r,   r   r   r   r8   r   r   rK   r   rr   r	   Ústrry   r{   ÚPathr€   r…   r-   r   r`   r0   r)   r'   r   r   k   sŒ  € € € € € ðð  ð °¸&Ô1Að ÈTð ð ð ð ðBð B 8¨MÔ#:ð BÀ4ð BÐTVð Bð Bð Bð BðH0ð 0 r¨#¤wð 0°tð 0Èð 0ð 0ð 0ð 0ð
4ð 4 2 c¤7ð 4°4ð 4ÀBð 4ð 4ð 4ð 4ð
 MRð4ð 4Øð4Ø(0°¬ð4ØEIð4à	ð4ð 4ð 4ð 4ð0ð 0 ð 0¨Tð 0¸bð 0ð 0ð 0ð 0ð,°ð ,¸Sð ,ÀUÈ3ÐPSÈ8Ä_ð ,ð ,ð ,ð ,ð ,ð ,r)   ÚgtÚ	cache_dirr!   c                 óN  — t           j                             | ¦  «        \  }}|dk    rd}||z   d                     t	          t
          t          j        ¦  «        ¦  «        z   dz   }|r=t           j                             |t           j                             |¦  «        ¦  «        S |S )Nz.txtrT   ú.z.pickle)	ÚosÚpathÚsplitextr‰   Úmapr�   ÚsysÚversion_infoÚbasename)r’   r“   ÚheadÚtailÚnames        r'   Ú_generate_pickle_namer    ë   sˆ   € Ý”×!Ò! "Ñ%Ô%�J€Dˆ$Øˆv‚~€~ØˆØ�$‰;˜Ÿš¥#¥c­3Ô+;Ñ"<Ô"<Ñ=Ô=Ñ=À	ÑI€DØð ÝŒw�|Š|˜I¥r¤w×'7Ò'7¸Ñ'=Ô'=Ñ>Ô>Ð>àˆr)   úGrammar.txtTFÚgpÚsaveÚforcerM   c                 óR  — |€t          j        t          ¦  «        }|€t          | ¦  «        n|}|st	          || ¦  «        s>t          j        | ¦  «        }|r'	 |                     |¦  «         n9# t          $ r Y n-w xY wn(t          j
        ¦   «         }|                     |¦  «         |S )z'Load the grammar (maybe from a pickle).)rO   rP   r*   r    Ú_newerr   Úgenerate_grammarÚdumpÚOSErrorr   r   Úload)r’   r¢   r£   r¤   rM   Úgs         r'   r   r   ö   s½   € ð €~ÝÔ"¥8Ñ,Ô,ˆØ&( jÕ	˜rÑ	"Ô	"Ð	"°b€BØð 
•F˜2˜r‘N”Nð 
Ý!Ô2°2Ñ6Ô6ˆØð 	ðØ—’�r‘
”
�
�
øÝð ð ð à�ðøøøð	õ ŒOÑÔˆØ	�Šˆr‰
Œ
ˆ
Ø€Hs   ÁA. Á.
A;Á:A;ÚaÚbc                 ó  — t           j                             | ¦  «        sdS t           j                             |¦  «        sdS t           j                             | ¦  «        t           j                             |¦  «        k    S )z0Inquire whether file a was written since file b.FT)r–   r—   ÚexistsÚgetmtime)r¬   r­   s     r'   r¦   r¦     sc   € åŒ7�>Š>˜!ÑÔð ØˆuÝŒ7�>Š>˜!ÑÔð ØˆtÝŒ7×Ò˜AÑÔ¥"¤'×"2Ò"2°1Ñ"5Ô"5Ò5Ð5r)   ÚpackageÚgrammar_sourcec                 ój  — t           j                             |¦  «        r%|rt          ||¦  «        nd}t	          ||¬¦  «        S t          t           j                             |¦  «        |¦  «        }t          j        | |¦  «        }|€J ‚t          j	        ¦   «         }| 
                    |¦  «         |S )aÙ  Normally, loads a pickled grammar by doing
        pkgutil.get_data(package, pickled_grammar)
    where *pickled_grammar* is computed from *grammar_source* by adding the
    Python version and using a ``.pickle`` extension.

    However, if *grammar_source* is an extant file, load_grammar(grammar_source)
    is called instead. This facilitates using a packaged grammar file when needed
    but preserves load_grammar's automatic regeneration behavior when possible.

    N)r¢   )r–   r—   Úisfiler    r   rœ   ÚpkgutilÚget_datar   r   Úloads)r±   r²   r“   r¢   Úpickled_nameÚdatar«   s          r'   Úload_packaged_grammarrº     s¦   € õ 
„w‡~‚~�nÑ%Ô%ð 3ØAJÐTÕ" >°9Ñ=Ô=Ð=ÐPTˆÝ˜N¨rÐ2Ñ2Ô2Ð2Ý(­¬×)9Ò)9¸.Ñ)IÔ)IÈ9ÑUÔU€LÝÔ˜G \Ñ2Ô2€DØÐÐÐÝŒÑÔ€AØ‡G‚GˆD�M„M€MØ€Hr)   Úargsc                  óÐ   — | s!t          t          j        dd…         ¦  «        } t          j        t          j        t          j        d¬¦  «         | D ]}t          |dd¬¦  «         ŒdS )z�Main program, when run as a script: produce grammar pickle files.

    Calls load_grammar for each argument, a path to a grammar text file.
    r   Nz%(message)s)Úlevelrs   ÚformatT)r£   r¤   )Útuplerš   ÚargvrO   ÚbasicConfigÚINFOÚstdoutr   )r»   r’   s     r'   ÚmainrÄ   0  sk   € ð
 ð #Ý•S”X˜a˜b˜b”\Ñ"Ô"ˆÝÔ�gœlµ3´:ÀmÐTÑTÔTÐTØð 0ð 0ˆÝ�R˜d¨$Ð/Ñ/Ô/Ð/Ð/Øˆ4r)   Ú__main__r#   )r¡   NTFN)2Ú__doc__Ú
__author__Ú__all__rƒ   rO   r–   rµ   rš   Ú
contextlibr   Údataclassesr   r   r   Útypingr	   r
   r   r   r   r   r   r   r   Úblib2to3.pgen2.grammarr   Úblib2to3.pgen2.tokenizer   Úblib2to3.pytreer   rT   r   r   r   r   r   r�   r‘   r   r2   r   r    rK   r   r¦   rº   rÄ   r*   Úexitr-   r0   r)   r'   ú<module>rÐ      s8  ððð ð 3€
à�^Ð
$€ð 
€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rà *Ð *Ð *Ð *Ð *Ð *Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3àˆSÐ$Ð$Ô%€ð ð,ð ,ð ,ð ,ð ,ñ ,ô ,ñ „ð,ð6ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ðr},ð },ð },ð },ð },ñ },ô },ð },ð@ð ˜dð ¨x¸¬~ð Èð ð ð ð ð ØØØØ#ðð Øðà�Œðð ðð ð	ð
 �VÔðð ðð ð ð ð26ˆcð 6�cð 6˜dð 6ð 6ð 6ð 6ð DHðð ØðØ"%ðØ2:¸4´.ðà„_ðð ð ð ð0
�ð 
˜ð 
ð 
ð 
ð 
ð ˆzÒÐØ€C„HˆSˆS�T�T‘V”V�‰_Œ_ÑÔÐÐÐð Ðr)   