
    mi(                     4   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	m
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 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"dz  de!fdZ&	 	 	 	 	 d,de!de!dz  de'de'd edz  defd!Z(d"e!d#e!de'fd$Z)	 d+d%e!d&e!de"dz  dej        fd'Z*d(e!de'fd)Z+e,d*k    r$ ej-         e. 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)IterableIterator)contextmanager)	dataclassfield)Logger)AnyUnioncast)Grammar)	TokenInfo)NL   )grammarparsepgentokentokenizezos.PathLike[str]c                   d    e Zd ZU eed<   dZedz  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     m/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/blib2to3/pgen2/driver.pylockzReleaseRange.lock.   s#    $+&&:+    )r   N)__name__
__module____qualname__int__annotations__r   r	   listr   r   r$    r%   r#   r   r   (   sh         JJJCtd333FD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!   r/   s     r#   __init__zTokenProxy.__init__4   s     35r%   c              #      K   t          | j                  }| j                            |           	 | V  |                                 d S # |                                 w xY wr   )r   r2   r3   appendr$   )r!   release_ranges     r#   releasezTokenProxy.release9   sl      $T]33##M222	!JJJ      M    s   A A"pointc                     | j         d         j        }|t          |          k     r||         S |t          |          k    r<t          | j                  }|                    |           |t          |          k    <|S )N)r3   r   r    nextr1   r6   )r!   r9   eaten_tokensr   s       r#   eatzTokenProxy.eatD   s    +B/63|$$$$&&3|,,,,T\**##E*** 3|,,,, Lr%   c                     | S r   r,   )r!   s    r#   __iter__zTokenProxy.__iter__N   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   )r3   r   r   r2   r   r<   r1   )r!   r7   r   r   r   s        r#   __next__zTokenProxy.__next__Q   s     "1 	' 	'M $000&,m.?3E+++++++++%,T]U-BC , &&Er%   toc                 T    	 |                      |           dS # t          $ r Y dS w xY w)NTF)r>   StopIteration)r!   rC   s     r#   can_advancezTokenProxy.can_advancea   sA    	HHRLLL 4  	 	 	55	s    
'')r   r.   )r&   r'   r(   r   r4   r   r   r8   r)   r>   r@   rB   boolrF   r,   r%   r#   r.   r.   3   s        6# 6$ 6 6 6 6
 !,/ ! ! ! ^!        #     c d      r%   r.   c            	           e Zd Zddededz  ddfdZddee         dede	fd	Z
	 dd
ededz  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&   rI   )r!   r   rI   s      r#   r4   zDriver.__init__m   s)    >&x00F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            nxd}|t          j        t          j        hv r|}|\  }}|	                    d          r!|t          j        t          j        fv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)r.   r   Parserr   setupr   COMMENTr   endswithr   OPopmaprI   rM   tok_nameINDENTr6   r    DEDENTpop_partially_consume_prefixaddtokenr   r)   FSTRING_MIDDLETSTRING_MIDDLE
ParseErrorrootnode)r!   r   rM   rO   plinenocolumnindent_columnstypevaluer   r   	line_textprefix	quintuples_linenos_column_prefix_indent_cols                      r#   parse_tokenszDriver.parse_tokenss   s    6""L&&	e$&1555u5u5sY 6	U 6	UI1:.D%Y((('5000FF3CU2K000%*"(H$$dh&788F%FFH$$ix88F%F((+666%!$>>$'' aKFFux}U+ '''!!')=uf   u|##%%c%jj111 5.%%,0022"&"@"@"U"Uzz$sD//565/BB  /K%%g...Fel333  NFF ~~d## $$5 ) ) ! $$$"#5tUVUOTTTz%%%zr%   filenameencodingc                     t          ||          5 }|                                }ddd           n# 1 swxY w Y   |                     ||          S )z(Parse a file and return the syntax tree.)rq   N)openreadparse_string)r!   rp   rq   rM   streamtexts         r#   
parse_filezDriver.parse_file   s     (X... 	!&;;==D	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!  u---s   377rw   c                 d    t          j         || j                  }|                     ||          S )z*Parse a string and return the syntax tree.)r   )r   r   ro   )r!   rw   rM   r   s       r#   ru   zDriver.parse_string   s/    "4>>>  ///r%   ri   rd   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 )	NrP   r   FrQ   z 	r   T)stripjoinr    r6   )	r!   ri   rd   linescurrent_linecurrent_columnwait_for_nlcharress	            r#   r\   z Driver._partially_consume_prefix   s    	# 	#DD L #4<<#))++ 70G0G ggenn"F3s88::$66666LL...#%L%&N"'K!#!"!" #wwu~~|++r%   r   )F)NF)r&   r'   r(   r   r
   r4   r   r   rG   r   ro   Pathstrrx   ru   r)   tupler\   r,   r%   r#   r   r   l   s'         $ $    F F8I#6 Ft FPR F F F FR JO. ..(+d
.BF.	. . . .0 0 0T 0b 0 0 0 0
, ,S ,U3PS8_ , , , , , ,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.txtrP   .z.pickle)	ospathsplitextr}   mapr   sysversion_infobasename)r   r   headtailnames        r#   _generate_pickle_namer      s    !!"%%JD$v~~$;#c3+;"<"<===	ID w||Irw'7'7'='=>>>r%   Grammar.txtTFgpsaveforcerI   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).)rK   rL   r&   r   _newerr   generate_grammardumpOSErrorr   r   load)r   r   r   r   rI   gs         r#   r   r      s     ~"8,,&(j	r	"	"	"bB 
F2rNN 
!22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"21"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%% 3AJT">9===PTNr2222()9)9.)I)I9UULG\22DAGGDMMMHr%   argsc                      | s!t          t          j        dd                   } t          j        t          j        t          j        d           | D ]}t          |dd           dS )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)levelrv   formatT)r   r   )r   r   argvrK   basicConfigINFOstdoutr   )r   r   s     r#   mainr   +  sk    
  #SXabb\""gl3:mTTTT 0 0Rd$/////4r%   __main__r   )r   NTFN)/__doc__
__author____all__iorK   r   r   r   collections.abcr   r   
contextlibr   dataclassesr   r	   r
   typingr   r   r   blib2to3.pgen2.grammarr   blib2to3.pgen2.tokenizer   blib2to3.pytreer   rP   r   r   r   r   r   r   r   r   r.   r   r   rG   r   r   r   r   r&   exitr)   r,   r%   r#   <module>r      s+    3
^
$ 
			  				  



 . . . . . . . . % % % % % % ( ( ( ( ( ( ( (       # # # # # # # # # # * * * * * * - - - - - -       4 3 3 3 3 3 3 3 3 3 3 3 3 3S$$% , , , , , , , ,6 6 6 6 6 6 6 6rw, w, w, w, w, w, w, w,t d td{ c       d
  	
 TM    26c 6c 6d 6 6 6 6 AE "%26+_   0
 
 
 
 
 
 zCHSSTTVV__ r%   