
    ^h(                     4   S r SrSS/rSSKrSSKrSSKrSSKrSSKrSSKJ	r	J
r
  SSKJr  SSKJrJr  SS	KJr  SS
KJrJrJrJrJr  SSKJr  SSKJr  SSKJr  SSKJrJrJ r J!r!J"r"  \\#S4   r$\ " S S5      5       r% " S S5      r& " S S5      r'S(S\$S\\$   S\#4S jjr(     S)S\#S\\#   S\)S\)S\\   S\4S jjr*S\#S \#S\)4S! jr+ S(S"\#S#\#S\\$   S\R0                  4S$ jjr,S%\#S\)4S& jr-\.S':X  a#  \R^                  " \0" \-" 5       (       + 5      5        gg)*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)IterableIterator)contextmanager)	dataclassfield)Logger)IOAnyOptionalUnioncast)Grammar)	TokenInfo)NL   )grammarparsepgentokentokenizezos.PathLike[str]c                   Z    \ rS rSr% \\S'   Sr\\   \S'   \" \	S9r
\	\   \S'   S	S jrSrg)
ReleaseRange(   startNend)default_factorytokensc                 V    [        U R                  5      nU R                  U-   U l        g N)lenr   r   r   )selftotal_eatens     O/home/james-whalen/.local/lib/python3.13/site-packages/blib2to3/pgen2/driver.pylockReleaseRange.lock.   s     $++&::+    )r   )returnN)__name__
__module____qualname____firstlineno__int__annotations__r   r   r	   listr   r   r&   __static_attributes__ r(   r%   r   r   (   s-    JC#d3FDI3,r(   r   c                       \ rS rSrS\SS4S jr\S\S    4S j5       rS\	S\4S jr
SS	 jrS\4S
 jrS\	S\4S jrSrg)
TokenProxy3   	generatorr)   Nc                 ,    Xl         SU l        / U l        g )Nr   )_tokens_counter_release_ranges)r#   r6   s     r%   __init__TokenProxy.__init__4   s     35r(   c              #      #    [        U R                  5      nU R                  R                  U5         U v   UR	                  5         g ! UR	                  5         f = f7fr!   )r   r9   r:   appendr&   )r#   release_ranges     r%   releaseTokenProxy.release9   sK     $T]]3##M2	!J  M s   1AA	 A	AApointc                     U R                   S   R                  nU[        U5      :  a  X!   $ U[        U5      :  a7  [        U R                  5      nUR                  U5        U[        U5      :  a  M7  W$ )N)r:   r   r"   nextr8   r>   )r#   rB   eaten_tokensr   s       r%   eatTokenProxy.eatD   sm    ++B/663|$$&&3|,,T\\*##E* 3|,, Lr(   c                     U $ r!   r2   )r#   s    r%   __iter__TokenProxy.__iter__N   s    r(   c                 <   U R                    Ha  nUR                  c   eUR                  UR                  p2X R                  s=::  a  U:  d  MA  O  ME  UR                  U R                  U-
     n  O   [        U R                  5      nU =R                  S-  sl        U$ )Nr   )r:   r   r   r9   r   rE   r8   )r#   r?   r   r   r   s        r%   __next__TokenProxy.__next__Q   s     "11M $$000&,,m.?.?3+++%,,T]]U-BC 2 &Er(   toc                 H     U R                  U5        g! [         a     gf = f)NTF)rG   StopIteration)r#   rO   s     r%   can_advanceTokenProxy.can_advancea   s+    	HHRL   		s    
!!)r9   r:   r8   )r)   r4   )r*   r+   r,   r-   r   r;   r   r   r@   r.   rG   rJ   rM   boolrR   r1   r2   r(   r%   r4   r4   3   sl    6# 6$ 6
 !,/ ! !  #  c d r(   r4   c            	           \ rS rSrSS\S\\   SS4S jjrSS\\	   S\
S\4S	 jjr SS
\S\\   S\
S\4S jjrSS\S\
S\4S jjrS\S\S\\\4   4S jrSrg)r   l   Nr   loggerr)   c                 V    Xl         Uc  [        R                  " [        5      nX l        g r!   )r   logging	getLoggerr*   rW   )r#   r   rW   s      r%   r;   Driver.__init__m   s!    >&&x0Fr(   r   debugc                 >   [        U5      n[        R                  " U R                  5      nUR	                  US9  SnSn/ nS=n=n	=n
=pSnU GH  nUu  ppnXU4:w  a8  XV4U
::  d
   XV4U
45       eU
u  nnX_:  a  USX-
  -  -  nUnSnUU:  a	  XUU -  nUnU[
        R                  [
        R                  4;   a'  X-  nUu  pVU	R                  S5      (       a  US-  nSnM  U[        R                  :X  a  [        R                  U	   nU(       a3  Uc   eU R                  R                  S[        R                  U   X5        U[        R                  :X  a#  UR!                  [#        U	5      5        X-   nSnSn	O9U[        R$                  :X  a%  UR'                  5       nU R)                  UU5      u  nnUR+                  [-        [.        U5      XU
45      (       a$  U(       a  U R                  R                  S5          OSnU[        R                  [        R$                  1;   a  WnUu  pVU	R                  S5      (       d  GM  U[        R0                  :w  d  GM  US-  nSnGM     U
c   e[        R2                  " S	XX45      eUR4                  c   eUR4                  $ )
z4Parse a series of tokens and return the syntax tree.)proxyr   r   N 
z%s %r (prefix=%r)zStop.zincomplete input)r4   r   Parserr   setupr   COMMENTr   endswithr   OPopmaprW   r\   tok_nameINDENTr>   r"   DEDENTpop_partially_consume_prefixaddtokenr   r.   FSTRING_MIDDLE
ParseErrorrootnode)r#   r   r\   r^   plinenocolumnindent_columnstypevaluer   r   	line_textprefix	quintuples_linenos_column_prefix_indent_cols                      r%   parse_tokensDriver.parse_tokenss   s    6"LL&	e$&1555u5u5sI1:.DY(('50KF3CU2KK0%*"($dh&788F%FFH$x88F%F(((++66!$>>$''aKFFuxx}}U+'''!!')=u u||#%%c%j1 .%,002"&"@"@"Uzz$sD/55/BBKK%%g.Fell33  NF ~~d##0D0D(D!] b $$$""#5tVOTTzz%%%zzr(   filenameencodingc                     [        XS9 nUR                  5       nSSS5        U R                  WU5      $ ! , (       d  f       N = f)z(Parse a file and return the syntax tree.)r   N)openreadparse_string)r#   r   r   r\   streamtexts         r%   
parse_fileDriver.parse_file   s:     (.&;;=D /  u-- /.s	   5
Ar   c                 `    [         R                   " XR                  S9nU R                  X25      $ )z*Parse a string and return the syntax tree.)r   )r   r   r}   )r#   r   r\   r   s       r%   r   Driver.parse_string   s'    ""4>  //r(   rw   rr   c                 `   / nSnSnSnU H  nXG-  nU(       a]  US:X  aU  UR                  5       (       a'  XR:  a"  SR                  U5      nX[        U5      S  4s  $ UR                  U5        SnSnSnMi  Mk  US;   a  US-  nMx  US:X  a  SnM  US:X  a  SnM  SnM     SR                  U5      U4$ )	Nr_   r   Fr`   z 	r   T)stripjoinr"   r>   )	r#   rw   rr   linescurrent_linecurrent_columnwait_for_nlcharress	            r%   rk    Driver._partially_consume_prefix   s    D L4<#))++0G ggen"3s8:$666LL.#%L%&N"'K   !#!"!" #+ , wwu~|++r(   )r   rW   r!   )F)NF)r*   r+   r,   r-   r   r   r
   r;   r   r   rT   r   r}   Pathstrr   r   r.   tuplerk   r1   r2   r(   r%   r   r   l   s     &1A T B8I#6 Bt BPR BJ MR..(0.EI.	.0 0T 0b 0
, ,S ,U3PS8_ ,r(   gt	cache_dirr)   c                 J   [         R                  R                  U 5      u  p#US:X  a  SnX#-   SR                  [	        [
        [        R                  5      5      -   S-   nU(       a=  [         R                  R                  U[         R                  R                  U5      5      $ U$ )Nz.txtr_   .z.pickle)	ospathsplitextr   mapr   sysversion_infobasename)r   r   headtailnames        r%   _generate_pickle_namer      sw    !!"%JDv~;#c3+;+;"<==	IDww||Irww'7'7'=>>r(   gpsaveforcerW   c                 d   Uc  [         R                  " [        5      nUc  [        U 5      OUnU(       d  [	        X5      (       d4  [
        R                  " U 5      nU(       a   UR                  U5        U$  U$ [        R                  " 5       nUR                  U5        U$ ! [         a     U$ f = f)z'Load the grammar (maybe from a pickle).)rY   rZ   r*   r   _newerr   generate_grammardumpOSErrorr   r   load)r   r   r   r   rW   gs         r%   r   r      s     ~""8,&(j	r	"bBF2NN!2226r
 H  H OO	r
H   Hs   #B! !
B/.B/abc                    [         R                  R                  U 5      (       d  g[         R                  R                  U5      (       d  g[         R                  R                  U 5      [         R                  R                  U5      :  $ )z0Inquire whether file a was written since file b.FT)r   r   existsgetmtime)r   r   s     r%   r   r     sW    77>>!77>>!77A"''"2"21"555r(   packagegrammar_sourcec                 \   [         R                  R                  U5      (       a  U(       a  [        X5      OSn[	        XS9$ [        [         R                  R                  U5      U5      n[        R                  " X5      nUc   e[        R                  " 5       nUR                  U5        U$ )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     
ww~~n%%AJ">=PTN22()9)9.)I9ULG2DAGGDMHr(   argsc                      U (       d  [        [        R                  SS 5      n [        R                  " [        R
                  [        R                  SS9  U  H  n[        USSS9  M     g)zMain 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)levelr   formatT)r   r   )r   r   argvrY   basicConfigINFOstdoutr   )r   r   s     r%   mainr   '  sN    
 SXXab\"gll3::mTRd$/ r(   __main__r!   )zGrammar.txtNTFN)1__doc__
__author____all__iorY   r   r   r   collections.abcr   r   
contextlibr   dataclassesr   r	   r
   typingr   r   r   r   r   blib2to3.pgen2.grammarr   blib2to3.pgen2.tokenizer   blib2to3.pytreer   r_   r   r   r   r   r   r   r   r   r4   r   r   rT   r   r   r   r   r*   exitr.   r2   r(   r%   <module>r      s   3
^
$ 
  	  
 . % (  1 1 * -  4 3S$$% , , ,6 6rs, s,ld x~   #  	
 V 26c 6c 6d 6 DH"%2:4.__0
 
 
 zHHSTV_ r(   