
    zi                        d Z ddlZddlZddlmZmZmZmZmZ ddl	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 dd	lmZ dd
lmZ ddlmZmZ  G d de          Zdee         dee         fdZd"de dee         defdZ!de dede"fdZ#dede fdZ$de dee%e%f         de"dej&        fdZ'de dej&        fdZ(de de de fdZ)d#dej&        d e%dee          fd!Z*dS )$z/
Parse Python code and perform AST validation.
    N)IterableIteratorListSetTuple)VERSION_TO_FEATURESFeatureTargetVersionsupports_feature)syms)pygram)driver)Grammar)
ParseError)
TokenError)LeafNodec                       e Zd ZdZdS )InvalidInputz7Raised when input source code fails all parse attempts.N)__name__
__module____qualname____doc__     X/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/black/parsing.pyr   r      s        AAAAr   r   target_versionsreturnc                    | s#t           j        t           j        t           j        gS g }t	          | t
          j                  s9t	          | t
          j                  s|                    t           j                   t	          | t
          j	                  s|                    t           j                   t          d | D                       r|                    t           j                   |S )Nc              3   H   K   | ]}t           j        t          |         v V  d S )N)r	   PATTERN_MATCHINGr   ).0vs     r   	<genexpr>zget_grammars.<locals>.<genexpr>-   s0      
W
W!7#':1'==
W
W
W
W
W
Wr   )r   python_grammar_async_keywordspython_grammarpython_grammar_soft_keywordsr   r	   ASYNC_IDENTIFIERSr!   appendASYNC_KEYWORDSany)r   grammarss     r   get_grammarsr-      s     	
 0!/
 	
 H2  >0HII> 	<===OW-CDD /-...

W
W
W
W
WWW =;<<< Or   r   src_txtc                     |                      d          s| dz  } t          t          |                    }i }|D ]}t          j        |          }	 |                    | d          } n# t          $ rm}|j        d         \  }}	|                                 }
	 |
|dz
           }n# t          $ r d}Y nw xY wt          d| d|	 d|           ||j        <   Y d}~d}~wt          $ rE}|j        d         \  }}	t          d| d|	 d|j        d	                    ||j        <   Y d}~d}~ww xY wt          |          dk    sJ |t          |                   }|dt!          |t"                    rt%          t&          j        |g          }|S )
z4Given a string with source, return the lib2to3 Node.
T   z<line number missing in source>zCannot parse: :z: Nr   )endswithr-   setr   Driverparse_stringr   context
splitlines
IndexErrorr   versionr   argslenmax
isinstancer   r   r   
file_input)r.   r   r,   errorsgrammardrvresultpelinenocolumnlinesfaulty_lineteexcs                 r   lib2to3_parserK   6   s   D!! 4C0011HF  mG$$	%%gt44FE 		 		 		Z]NFF&&((E@#FQJ/ @ @ @?@&2AAA&AAKAA' 'F7?######  	 	 	WQZNFF&2@@@&@@BGAJ@@' 'F7?######	 6{{aS[[!t&$ 1dox00MsH   A**
D.4$CB%$C%B41C3B44#CD.);D))D.rA   c                     t          j        |          }	 |                    | d           dS # t          t          t
          f$ r Y dS w xY w)NTF)r   r5   r6   r   r   IndentationError)r.   rA   rB   s      r   matches_grammarrN   `   s_    
-
 
 C$''' t 
$45   uus   . A	A	nodec                 $    t          |           }|S )z7Given a lib2to3 node, return its string representation.)str)rO   codes     r   lib2to3_unparserS   j   s    t99DKr   srcr:   type_commentsc                6    d}t          j        | |||          S )Nz	<unknown>)feature_versionrU   )astparse)rT   r:   rU   filenames       r   parse_single_versionr[   p   s+     H9Xwm   r   c                    d t          dt          j        d         dz             D             }d}t          |d          D ]>}	 t	          | |d          c S # t
          $ r}|st          |          }Y d }~7d }~ww xY wt          |d          D ]&}	 t	          | |d          c S # t
          $ r Y #w xY wt          |          )	Nc                     g | ]}d |fS )   r   )r"   minors     r   
<listcomp>zparse_ast.<locals>.<listcomp>{   s    JJJuE
JJJr   r^   r1    T)reverse)rU   F)rangesysversion_infosortedr[   SyntaxErrorrQ   )rT   versionsfirst_errorr:   es        r   	parse_astrk   y   s   JJa1A!1Dq1H(I(IJJJHK(D111 % %	%'WDIIIIII 	% 	% 	% %!!ff	%
 (D111  	'WEJJJJJJ 	 	 	D	 k
"
""s*   A
A="A88A=B((
B54B5lineendvaluec                     d |                                 D             }|                     |          }|                                S )Nc                 6    g | ]}|                                 S r   )strip)r"   is     r   r`   z_normalize.<locals>.<listcomp>   s     AAA17799AAAr   )r8   joinrp   )rl   rm   stripped
normalizeds       r   
_normalizeru      sI     BAe.>.>.@.@AAAHh''J r   depthc              #     K   t          | t          j                  r,t          | j        t                    r| j        dk    rd| _        d|z   | j        j         dV  t          | j	                  D ]}t          | t          j
                  r n	 t          | |          }n# t          $ r Y >w xY wd|dz   z   | dV  t          |t                    r|D ]}|dk    rXt          | t          j                  r>t          |t          j                  r$|j        D ]}t#          ||dz             E d{V  `t          |t          j                  rt#          ||dz             E d{V  t          |t          j                  rt#          ||dz             E d{V  2t          | t          j                  r,|d	k    r&t          |t                    rt'          d
|          }n2|dk    r*t          |t                    r|                                }n|}d|dz   z   |d|j        j         V  d|z   d| j        j         V  dS )z=Simple visitor generating strings to compare ASTs by content.uNz  (r1   =targets   rm   r0   type_commentz,  # z)  # /)r>   rX   Constantrm   rQ   kind	__class__r   rf   _fields
TypeIgnoregetattrAttributeErrorlistDeleter   eltsstringify_astASTru   rstrip)rO   rv   fieldrm   itemeltrt   s          r   r   r      s      	4&&tz3'' I
 	E\
54>2
5
5
5555%% .W .WdCN++ 	E	#D%00EE 	 	 	H	 #-U------eT"" "	W > > Y&&"444 '"433 '  $y A A#0eai#@#@@@@@@@@@A  cg.. >,T519=========> sw'' 	W$UEAI6666666666
 4..#W$$uc** % (e44

.((Zs-C-C("\\^^

"
UQY'VVVEO<TVVVVVVE\
:
:!8
:
::::::s   B%%
B21B2)r   )r   )+r   rX   rd   typingr   r   r   r   r   
black.moder   r	   r
   r   black.nodesr   blib2to3r   blib2to3.pgen2r   blib2to3.pgen2.grammarr   blib2to3.pgen2.parser   blib2to3.pgen2.tokenizer   blib2to3.pytreer   r   
ValueErrorr   r-   rQ   rK   boolrN   rS   intr   r[   rk   ru   r   r   r   r   <module>r      s    


 



 7 7 7 7 7 7 7 7 7 7 7 7 7 7 T T T T T T T T T T T T             ! ! ! ! ! ! * * * * * * + + + + + + . . . . . . & & & & & & & &B B B B B: B B B#m"4 g    >' '3 '-1H 'RV ' ' ' 'TS 7 t    $ 3    	S#X:>W   #3 #37 # # # #, C C    ?; ?; ?; ?;HSM ?; ?; ?; ?; ?; ?;r   