
    i                    ^   % S SK Jr  S SKrS SKrS SK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  S SKJr  S S	KJrJr  S S
KJr  S SKJr  \(       a  S SKJrJrJr  S SKJr  S SK J!r!J"r"J#r#   " S S\	5      r$SS\$RJ                  S.         SS jjr&SS.       SS jjr'      SS jr(SS jr)SSSSS.r*\ " S S5      5       r+\" SSS 9 " S! S"\+5      5       r,\" SSS 9 " S# S$\+5      5       r-\" SSS 9 " S% S&\+5      5       r.\" SSS 9 " S' S(\+5      5       r/\" SSS 9 " S) S*\+5      5       r0\" SSS 9 " S+ S,\+5      5       r1\" SSS 9 " S- S.\+5      5       r2\" SSS 9 " S/ S0\+5      5       r3\" SSS 9 " S1 S2\+5      5       r4\" SSS 9 " S3 S4\+5      5       r5\" SSS 9 " S5 S6\+5      5       r6\" SSS 9 " S7 S8\+5      5       r7\" SSS 9 " S9 S:\+5      5       r8\" SSS 9 " S; S<\+5      5       r9\" SSS 9 " S= S>\+5      5       r:\" SSS 9 " S? S@\+5      5       r;\" SSS 9 " SA SB\+5      5       r<\" SSS 9 " SC SD\+5      5       r=\" SSS 9 " SE SF\+5      5       r>\" SSS 9 " SG SH\+5      5       r?\" SSS 9 " SI SJ\+5      5       r@\" SSS 9 " SK SL\+5      5       rA\" SSS 9 " SM SN\+5      5       rB\" SSS 9 " SO SP\+5      5       rC\" SSS 9 " SQ SR\+5      5       rD\" SSS 9 " SS ST\+5      5       rE\" SSS 9 " SU SV\+5      5       rF\" SSS 9 " SW SX\+5      5       rG\" SSS 9 " SY SZ\+5      5       rH\" SSS 9 " S[ S\\+5      5       rI\" SSS 9 " S] S^\+5      5       rJ\R                  S_\R                  S`\R                  Sa\R                  Sb0rO\R                  Sa\R                  Sc\R                  Sd\R                  Se\R                  Sf\R                  Sg\R                  Sh\R                  Si\R                  Sj\R                  Sk\R                  Sl\R                  Sm\R                  Sb0r]\R                  Sn\R                  So0r`\R                  Sp\R                  Sq\R                  Sr\R                  Ss\R                  St\R                  Su\R                  Sv\R                  Sw\R                  Sx\R                  Sy0
rk0 \@Sz _\2S{ _\9S| _\6S} _\>S~ _\GS _\CS _\3S _\?S _\DS _\4S _\,S _\FS _\/S _\HS _\-S _\.S _\0S \8S \AS \=S \7S \;S \<S \IS \JS \1S \5S \:S \BS \ES 0ErlSS jrmSS jrnSS jroSS jrpSS jrqSS jrrSS jrsSSSSS.               SS jjrtSS jruSS jrvSS.         SS jjrwSS jrxSS jrySS.         SS jjrzSSS jjr{SS jr|SS jr}SS jr~SSS jjrSS jrSS jrSS jrSS jrSS jrSSSS.             SS jjrSSS.           SS jjrSS jrSS jrSS jr " S S\5      r0 \GR                  \n_\GR                  \o_\GR                  \p_\GR                  \q_\GR                  \r_\GR                   \s_\GR"                  \t_\GR$                  \u_\GR&                  \v_\GR(                  \w_\GR*                  \x_\GR,                  \y_\GR.                  \z_\GR0                  \{_\GR2                  \|_\GR4                  \}_\GR6                  \~_\GR8                  \\GR:                  \\GR<                  \\GR>                  \\GR@                  \\GRB                  \\GRD                  \\GRF                  \\GRH                  \\GRJ                  \\GRL                  \0ErS\S'   SS jrSSS.         SS jjrSS\GRV                  SS.             SS jjrSr\" \SS9r\" \S\S-  S9r\" \SS9r\" \S\S-  S9r\" \SS9r\" \S\S-  S9r\" \SS9r\" \S\S-  S9rg)    )annotationsN)	dataclass)fields)IntEnumauto)partial)TYPE_CHECKINGAnyProtocol)get_parameters)LogLevelParameterKind)NameResolutionError)logger)IterableIteratorSequence)Path)ClassFunctionModulec                  :   \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       rSrg)_OperatorPrecedence    N)__name__
__module____qualname____firstlineno__r   NONEYIELDASSIGNSTARREDLAMBDAIF_ELSEORANDNOTCOMP_MEMB_IDBIT_ORBIT_XORBIT_ANDLEFT_RIGHT_SHIFTADD_SUBMUL_DIV_REMAINPOS_NEG_BIT_NOTEXPONENTAWAITCALL_ATTRIBUTEATOMIC__static_attributes__r       V/home/james-whalen/.local/lib/python3.13/site-packages/griffe/_internal/expressions.pyr   r      s     6DFEVFfGVFfG	B
&C
&C6LVFfGfGvfGVNfOvHFEVNVFr6   r   TF)flatis_leftouter_precedencec             #  r  #    [        U [        5      (       a  [        U 5      nSnXC:  a  SnOwXC:X  ar  [        U [        5      =(       d&    [        U [        5      =(       a    U R
                  S:H  nU(       a
  U(       a  SnO$[        U [        [        45      (       a	  U(       d  SnU(       a,  Sv   U(       a  U R                  SS9 S h  vN   OU v   Sv   g U(       a  U R                  SS9 S h  vN   g U v   g [        U [        5      (       a  U  H  n[        XqX2S9 S h  vN   M     g U v   g  Nh NB N7f)NFT**(r8   )r8   r:   r9   )

isinstanceExpr_get_precedence	ExprIfExp	ExprBinOpoperator
ExprBoolOpiteratetuple_yield)elementr8   r9   r:   element_precedenceneeds_parensis_right_assocelems           r7   rJ   rJ   B   s     '4  ,W50L3'; 7I.K73C3Ct3K  #'LGi%<==g#I"???555ID111M	GU	#	#Dd@Pbbb   6
 2
 cs6   CD7D1	'D70D311D7"D5#D73D75D7r>   c             #  6  #    [        U 5      n [        [        U5      U[        R                  S9 Sh  vN   U HC  n[        X[        R                  S9 Sh  vN   [        XB[        R                  S9 Sh  vN   ME     g NN! [
         a     gf = f N; N7f)zApply a separator between elements.

The caller is assumed to provide their own grouping
(e.g. lists, tuples, slice) and will prevent parentheses from being added.
r8   r:   N)iterrJ   nextr   r    StopIteration)elementsjointr8   itrK   s        r7   _joinrX   m   s      
hB $r(@S@X@XYYY %=P=U=UVVV'?R?W?WXXX  	Z  	WXsU   B%B BB  BBB9B:	BB 
BBBBBc                    [        U [        5      (       a  [        U 40 UD6$ [        U [        5      (       a  U  Vs/ s H  n[	        U40 UD6PM     sn$ U $ s  snf N)rA   rB   _expr_as_dictlist_field_as_dict)rK   kwargsrO   s      r7   r]   r]      sX     '4  W///'4  ;BC74t.v.7CCN Ds   ArB   c           
         [        [        U 5      S S9 Vs0 s H?  nUR                  S:w  d  M  UR                  [        [	        XR                  5      40 UD6_MA     nnU R
                  US'   U$ s  snf )Nc                    U R                   $ rZ   )name)fs    r7   <lambda>_expr_as_dict.<locals>.<lambda>   s    r6   )keyparentcls)sorted	getfieldsra   r]   getattr	classname)
expressionr^   fieldr   s       r7   r[   r[      sw     Ij17GHHE::! 	N

N7:zz#BMfMMH  
 ((F5MMs
   A0.A0rI   dictr\   set)ztyping.Tupleztyping.Dictztyping.Listz
typing.Setc                      \ rS rSrSrSS jrSS jrSS.SS jjrSS jrSS	 jr	\
SS
 j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       rSrg)rB      zBase class for expressions.c                L    SR                  S U R                  SS9 5       5      $ )N c              3  h   #    U  H(  n[        U[        5      (       a  UOUR                  v   M*     g 7frZ   )rA   strra   ).0rO   s     r7   	<genexpr>Expr.__str__.<locals>.<genexpr>   s'     hPgz$44t$))CPgs   02Tr>   )joinrH   selfs    r7   __str__Expr.__str__   s'    wwhPTP\P\bfP\Pghhhr6   c              #  >   #    U R                  SS9 Sh  vN   g N7f)z.Iterate on the expression syntax and elements.Fr>   N)rH   rz   s    r7   __iter__Expr.__iter__   s     <<U<+++s   Tr>   c             #  $   #    S Sh  vN   g N7f)aw  Iterate on the expression elements.

Parameters:
    flat: Expressions are trees.

        When flat is false, this method iterates only on the first layer of the tree.
        To iterate on all the subparts of the expression, you have to do so recursively.
        It allows to handle each subpart specifically (for example subscripts, attribute, etc.),
        without them getting rendered as strings.

        On the contrary, when flat is true, the whole tree is flattened as a sequence
        of strings and instances of [Names][griffe.ExprName].

Yields:
    Strings and names when flat, strings and expressions otherwise.
r   Nr   r{   r8   s     r7   rH   Expr.iterate   s     " s   c                    U $ )zModernize the expression.

For example, use PEP 604 type unions `|` instead of `typing.Union`.

Returns:
    A modernized expression.
r   rz   s    r7   	modernizeExpr.modernize   s	     r6   c                    [        U 40 UD6$ )zReturn the expression as a dictionary.

Parameters:
    **kwargs: Configuration options (none available yet).


Returns:
    A dictionary.
)r[   )r{   r^   s     r7   as_dictExpr.as_dict   s     T,V,,r6   c                .    U R                   R                  $ )zThe expression class name.)	__class__r   rz   s    r7   rk   Expr.classname   s     ~~&&&r6   c                    [        U 5      $ z%Path of the expressed name/attribute.ru   rz   s    r7   path	Expr.path        4yr6   c                    [        U 5      $ r   r   rz   s    r7   canonical_pathExpr.canonical_path   r   r6   c                    U R                   R                  SS5      S   R                  SS5      S   R                  S5      $ )z/Name of the expressed name/attribute/parameter..   r=   r?   )r   rsplitsplitremovesuffixrz   s    r7   canonical_nameExpr.canonical_name   s@     ""))#q1"5;;CCBGTTUXYYr6   c                N    [        U [        5      =(       a    U R                  S:H  $ )z4Whether this attribute is annotated with `ClassVar`.ClassVarrA   ExprSubscriptr   rz   s    r7   is_classvarExpr.is_classvar   !     $.T43F3F*3TTr6   c                j    [        U [        5      =(       a    U R                  R                  5       S:H  $ )z#Whether this expression is a tuple.rI   )rA   r   r   lowerrz   s    r7   is_tupleExpr.is_tuple   s+     $.Y43F3F3L3L3NRY3YYr6   c                N    [        U [        5      =(       a    U R                  S:H  $ )z'Whether this expression is an iterator.r   r   rz   s    r7   is_iteratorExpr.is_iterator   r   r6   c                N    [        U [        5      =(       a    U R                  S:H  $ )z'Whether this expression is a generator.	Generatorr   rz   s    r7   is_generatorExpr.is_generator   s!     $.U43F3F+3UUr6   r   Nreturnru   )r   Iterator[str | Expr]r8   boolr   r   )r   rB   )r^   r
   r   dict[str, Any]r   r   )r   r   r   r   __doc__r|   r   rH   r   r   propertyrk   r   r   r   r   r   r   r   r5   r   r6   r7   rB   rB      s    %i, '+ &
- ' '     Z Z
 U U Z Z U U V Vr6   )eqslotsc                      \ rS rSr% SrS\S'    SS.SS jjrSS jrSS	 jr\	SS
 j5       r
\	SS j5       r\	SS j5       r\	SS j5       rSrg)ExprAttribute   zAttributes like `a.b`.zlist[str | Expr]valuesTr>   c             #     #    [        U 5      n[        U R                  S   XSS9 S h  vN   U R                  SS   H  nSv   [        X1US9 S h  vN   M     g  N1 N7f)Nr   Tr@   r   r   rQ   )rC   rJ   r   )r{   r8   
precedencevalues       r7   rH   ExprAttribute.iterate  s_     $T*
$++a.tZ^___[[_EIeLLL % 	` Ms!   'AA'AA
AAc                    [         R                  U R                  5      =n(       a  [        XR                  R
                  S9$ U $ N)rf   )_modern_typesgetr   ExprNamelastrf   r{   moderns     r7   r   ExprAttribute.modernize  s8    "&&t':':;;6;F99+;+;<<r6   c                v    UR                   c  U R                  Ul         U R                  R                  U5        g)zXAppend a name to this attribute.

Parameters:
    value: The expression name to append.
N)rf   r   r   append)r{   r   s     r7   r   ExprAttribute.append  s+     <<99EL5!r6   c                     U R                   S   $ )z/The last part of this attribute (on the right).r   r   rz   s    r7   r   ExprAttribute.last  s    
 {{2r6   c                     U R                   S   $ )z/The first part of this attribute (on the left).r   r   rz   s    r7   firstExprAttribute.first$  s     {{1~r6   c                .    U R                   R                  $ )zThe path of this attribute.)r   r   rz   s    r7   r   ExprAttribute.path)  s     yy~~r6   c                .    U R                   R                  $ )z%The canonical path of this attribute.)r   r   rz   s    r7   r   ExprAttribute.canonical_path.  s     yy'''r6   r   Nr   )r   zExprName | ExprAttribute)r   r   r   Noner   r   )r   
str | Exprr   )r   r   r   r   r   __annotations__rH   r   r   r   r   r   r   r   r5   r   r6   r7   r   r      sq     2&* M
"       ( (r6   r   c                  P    \ rS rSr% SrS\S'    S\S'    S\S'    SS	.SS
 jjrSrg)rE   i4  zBinary operations like `a + b`.r   leftru   rF   rightTr>   c             #  @  #    [        U 5      nUnU R                  S:X  a-  [        U R                  [        5      (       a  [        US-
  5      n[        U R                  XSS9 S h  vN   SU R                   S3v   [        U R                  XSS9 S h  vN   g  N4 N7f)Nr<   r   Tr@    F)rC   rF   rA   r   ExprUnaryOpr   rJ   r   )r{   r8   r   right_precedences       r7   rH   ExprBinOp.iterate?  s     $T*
%==D Z

K%H%H2:>B$))$UYZZZ$--""$**4\abbb 	[bs$   A#B%B&.BBBBr   Nr   r   r   r   r   r   r   rH   r5   r   r6   r7   rE   rE   4  s.    )
M&* c cr6   rE   c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)rG   iJ  z!Boolean operations like `a or b`.ru   rF   Sequence[str | Expr]r   Tr>   c             #     #    [        U 5      n[        U R                  5      n[        [	        U5      XSS9 S h  vN   U H(  nSU R
                   S3v   [        XAUSS9 S h  vN   M*     g  N3 N7f)NTr@   r   F)rC   rR   r   rJ   rS   rF   )r{   r8   r   rW   r   s        r7   rH   ExprBoolOp.iterateS  sp     $T*
$++$r(TXYYYEdmm_A&&eUZ[[[  	Z \s!   8A2A.)A2$A0%
A20A2r   Nr   r   r   r6   r7   rG   rG   J  s%    +M  &* \ \r6   rG   c                  X    \ rS rSr% SrS\S'    S\S'    \SS j5       rSS	.SS
 jjrSr	g)ExprCalli\  zCalls like `f()`.rB   functionr   	argumentsc                .    U R                   R                  $ z1The canonical path of this subscript's left part.)r   r   rz   s    r7   r   ExprCall.canonical_pathe  s     }}+++r6   Tr>   c             #     #    [        U R                  U[        U 5      S9 S h  vN   Sv   [        U R                  SUS9 S h  vN   Sv   g  N* N7f)NrQ   r=   , r>   r?   )rJ   r   rC   rX   r   r   s     r7   rH   ExprCall.iteratej  sJ     $--d_UYEZ[[[	D999	 	\9s!   "AA AA
AAr   Nr   r   )
r   r   r   r   r   r   r   r   rH   r5   r   r6   r7   r   r   \  s7    N##, , '+  r6   r   c                  P    \ rS rSr% SrS\S'    S\S'    S\S'    S	S
.SS jjrSrg)ExprCompareiq  zComparisons like `a > b`.r   r   zSequence[str]	operatorsr   comparatorsTr>   c             #     #    [        U 5      n[        U R                  XSS9 S h  vN   [        U R                  U R
                  5       H  u  p4SU S3v   [        XAUS9 S h  vN   M!     g  NH N7f)NTr@   r   rQ   )rC   rJ   r   zipr   r   )r{   r8   r   opcomps        r7   rH   ExprCompare.iterate|  sl     $T*
$))$UYZZZDNND,<,<=HBbT)Od
KKK > 	[ Ls!   $A3A/>A3%A1&
A31A3r   Nr   r   r   r6   r7   r   r   q  s/    #
%%&* L Lr6   r   c                  `    \ rS rSr% SrS\S'    S\S'    S\S'    SrS	\S
'    SS.SS jjrSrg)ExprComprehensioni  z(Comprehensions like `a for b in c if d`.r   targetiterabler   
conditionsFr   is_asyncTr>   c             #  (  #    U R                   (       a  Sv   Sv   [        U R                  US9 S h  vN   Sv   [        U R                  US9 S h  vN   U R                  (       a"  Sv   [        U R                  SUS9 S h  vN   g g  NX N: N
7f)Nzasync zfor r>   z in  if )r  rJ   r   r  r  rX   r   s     r7   rH   ExprComprehension.iterate  sx     ==N$++D111$--d333??LT__f4@@@  	23 As3   1BBBB1BBBBBr   Nr   )	r   r   r   r   r   r   r  rH   r5   r   r6   r7   r   r     s<    2;$$9Hd%&* 	A 	Ar6   r   c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprConstanti  zConstants like `"a"` or `1`.ru   r   Tr>   c             #  (   #    U R                   v   g 7frZ   )r   r   s     r7   rH   ExprConstant.iterate  s     jjs   r   Nr   r   r   r6   r7   r  r    s    &J&*  r6   r  c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)ExprDicti  zDictionaries like `{"a": 0}`.zSequence[str | Expr | None]keysr   r   Tr>   c             #     #    Sv   [        S [        U R                  U R                  5       5       SUS9 S h  vN   Sv   g  N	7f)N{c              3  :   #    U  H  u  pUc  SOUSU4v   M     g 7f)Nr   : r   )rv   re   r   s      r7   rw   #ExprDict.iterate.<locals>.<genexpr>  s!     iMhzsfdE:Mhs   r   r>   })rX   r   r  r   r   s     r7   rH   ExprDict.iterate  sK     	iSQUQZQZ\`\g\gMhi
 	
 	

 		
s   8AA
Ar   Nr   r   r   r6   r7   r  r    s$    '
%%  &*  r6   r  c                  P    \ rS rSr% SrS\S'    S\S'    S\S'    SS	.SS
 jjrSrg)ExprDictCompi  z0Dict comprehensions like `{k: v for k, v in a}`.r   re   r   Sequence[Expr]
generatorsTr>   c             #     #    Sv   [        U R                  US9 S h  vN   Sv   [        U R                  US9 S h  vN   Sv   [        U R                  SUS9 S h  vN   Sv   g  NJ N, N7f)Nr  r>   r  r   r  )rJ   re   r   rX   r  r   s     r7   rH   ExprDictComp.iterate  sb     	$((...
$**4000	#D999	 	/09s1   A/A)A/A+ A/A- 
A/+A/-A/r   Nr   r   r   r6   r7   r  r    s,    :	O!&*  r6   r  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprExtSlicei  z Extended slice like `a[x:y, z]`.r   dimsTr>   c             #  J   #    [        U R                  SUS9 S h  vN   g  N7f)Nr   r>   )rX   r  r   s     r7   rH   ExprExtSlice.iterate  s     Dt444s   #!#r   Nr   r   r   r6   r7   r  r    s    *
&* 5 5r6   r  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprFormattedi  z Formatted string like `{1 + 1}`.r   r   Tr>   c             #  v   #    Sv   [        U R                  U[        R                  S9 S h  vN   Sv   g  N	7f)Nr  rQ   r  )rJ   r   r   r    r   s     r7   rH   ExprFormatted.iterate  s2     	$**4BUBZBZ[[[	 	\s   +97
9r   Nr   r   r   r6   r7   r!  r!    s    *&*  r6   r!  c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)ExprGeneratorExpi  z5Generator expressions like `a for b in c for d in e`.r   rK   r  r  Tr>   c             #     #    [        U R                  US9 S h  vN   Sv   [        U R                  SUS9 S h  vN   g  N& N7f)Nr>   r   rJ   rK   rX   r  r   s     r7   rH   ExprGeneratorExp.iterate  s<     $,,T222	#D999 	39s   AA AAAAr   Nr   r   r   r6   r7   r%  r%    s$    ?!&* : :r6   r%  c                  P    \ rS rSr% SrS\S'    S\S'    S\S'    SS.SS	 jjrS
rg)rD   i  z Conditions like `a if b else c`.r   bodytestorelseTr>   c             #    #    [        U 5      n[        U R                  XSS9 S h  vN   Sv   [        US-   5      n[        U R                  XS9 S h  vN   Sv   [        U R                  [        5      (       a"  U R                  R                  US9 S h  vN   g [        U R                  XSS9 S h  vN   g  N Ni N' N7f)	NTr@   r  r   rQ   z else r>   F)	rC   rJ   r*  r   r+  rA   r,  rD   rH   )r{   r8   r   test_outer_precedences       r7   rH   ExprIfExp.iterate  s     $T*
$))$UYZZZ !4JN C$))$WWW dkk9--{{***555dkk[`aaa 	[
 	X 6asF   $CB<-CB>ACC C6C7C>C CCr   Nr   r   r   r6   r7   rD   rD     s/    *

&* b br6   rD   c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprJoinedStri  z!Joined strings like `f"a {b} c"`.r   r   Tr>   c             #  Z   #    Sv   [        U R                  SUS9 S h  vN   Sv   g  N	7f)Nzf'rs   r>   ')rX   r   r   s     r7   rH   ExprJoinedStr.iterate   s*     
bt444	 	5   +)
+r   Nr   r   r   r6   r7   r1  r1    s    +  &*  r6   r1  c                  v   ^  \ rS rSr% SrS\S'    S\S'    SrS\S	'    \SU 4S
 jj5       rSS.SS jjr	Sr
U =r$ )ExprKeywordi&  zKeyword arguments like `a=b`.ru   ra   r   r   NExpr | Noner   c                   > U R                   (       a&  U R                   R                   SU R                   S3$ [        [        U ]  $ )zPath of the expressed keyword.r=   r?   )r   r   ra   superr7  )r{   r   s    r7   r   ExprKeyword.canonical_pathA  s;     ==mm2231TYYKqAA[$66r6   Tr>   c             #  l   #    U R                   v   Sv   [        U R                  US9 S h  vN   g  N7f)N=r>   )ra   rJ   r   r   s     r7   rH   ExprKeyword.iterateH  s'     ii	$**4000s   *424r   r   r   )r   r   r   r   r   r   r   r   r   rH   r5   __classcell__)r   s   @r7   r7  r7  &  sG    '
I" !Hk I7 7 '+ 1 1r6   r7  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprVarPositionaliN  z,Variadic positional parameters like `*args`.rB   r   Tr>   c             #  P   #    Sv   [        U R                  US9 S h  vN   g  N7f)N*r>   rJ   r   r   s     r7   rH   ExprVarPositional.iterateU  s     	$**4000   &$&r   Nr   r   r   r6   r7   rA  rA  N  s    6K&* 1 1r6   rA  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprVarKeywordiZ  z,Variadic keyword parameters like `**kwargs`.rB   r   Tr>   c             #  P   #    Sv   [        U R                  US9 S h  vN   g  N7f)Nr<   r>   rD  r   s     r7   rH   ExprVarKeyword.iteratea  s     
$**4000rF  r   Nr   r   r   r6   r7   rH  rH  Z  s    6K&* 1 1r6   rH  c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)
ExprLambdaif  z(Lambda expressions like `lambda a: a.b`.zSequence[ExprParameter]
parametersr   r*  Tr>   c             #    #    SnSnSn[        U R                  5      nSv   U(       a  Sv   [        U R                  S5       GH^  u  pgUR                  [        R
                  L a  SnOUR                  [        R                  L a  Sv   OsUR                  [        R                  L a  Sv   OQUR                  [        R                  L a
  U(       d  SnO*UR                  [        R                  L a  U(       d  SnSv   UR                  [        R
                  La  U(       a  SnS	v   UR                  v   UR                  (       aN  UR                  [        R                  [        R                  4;  a   S
v   [        UR                  US9 S h  vN   Xe:  d  GMZ  Sv   GMa     Sv   [        U R                  U[        R                  S9 S h  vN   g  NE N7f)NFlambdar   r   TrC  r<   z*, z/, r=  r>   r   r  rQ   )lenrM  	enumeratekindr   positional_onlyvar_positionalvar_keywordpositional_or_keywordkeyword_onlyra   defaultrJ   r*  r   r    )r{   r8   pos_only	pos_or_kwkw_onlylengthindex	parameters           r7   rH   ExprLambda.iterateo  sf    	T__%I )$//1 =E~~!>!>>=#?#??	=#<#<<
=#F#FFy 	=#=#==g~~]%B%BBx ..   Y^^M<X<XZgZsZs;t%t	!)"3"3$???~
) !>* 
$))$ATAYAYZZZ @
 	[s*   FGGG3GGGGr   Nr   r   r   r6   r7   rL  rL  f  s&    2''
&* [ [r6   rL  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprListi  zLists like `[0, 1, 2]`.r  rU   Tr>   c             #  Z   #    Sv   [        U R                  SUS9 S h  vN   Sv   g  N	7f)N[r   r>   ]rX   rU   r   s     r7   rH   ExprList.iterate  *     	4888	 	9r5  r   Nr   r   r   r6   r7   ra  ra    s    !&*  r6   ra  c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)ExprListCompi  z*List comprehensions like `[a for b in c]`.r   rK   r  r  Tr>   c             #     #    Sv   [        U R                  US9 S h  vN   Sv   [        U R                  SUS9 S h  vN   Sv   g  N* N7f)Nrc  r>   r   rd  r'  r   s     r7   rH   ExprListComp.iterate  F     	$,,T222	#D999	 	39    AA	 AA 
AAr   Nr   r   r   r6   r7   ri  ri    s$    4!&*  r6   ri  c                      \ rS rSr% SrS\S'    SrS\S'    SrS\S	'    SS
 jrSS.SS jjr	SS jr
\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)r   i  zLThis class represents a Python object identified by a name in a given scope.ru   ra   Nz1str | ExprName | Module | Class | Function | Nonerf   
str | Nonememberc                j    [        U[        5      (       a  U R                  UR                  :H  $ [        $ )zXTwo name expressions are equal if they have the same `name` value (`parent` is ignored).)rA   r   ra   NotImplemented)r{   others     r7   __eq__ExprName.__eq__  s(    eX&&99

**r6   Tr>   c             #     #    U v   g 7frZ   r   r   s     r7   rH   ExprName.iterate  s
     
s   c                x    [         R                  U R                  5      =n(       a  [        XR                  S9$ U $ r   )r   r   r   r   rf   r   s     r7   r   ExprName.modernize  s2    "&&t':':;;6;F;;77r6   c                    [        U R                  [        5      (       a%  U R                  R                   SU R                   3$ U R                  $ )zThe full, resolved name.

If it was given when creating the name, return that.
If a callable was given, call it and return its result.
It the name cannot be resolved, return the source.
r   )rA   rf   r   r   ra   rz   s    r7   r   ExprName.path  s?     dkk8,,kk&&'q44yyr6   c                   U R                   c  U R                  $ [        U R                   [        5      (       a%  U R                   R                   SU R                   3$ [        U R                   [
        5      (       a  U R                    SU R                   3$ U R                   R                  R                  U R                  U R                   5      n UR                  U R                  5      $ ! [         a    U R                  s $ f = f)z2The canonical name (resolved one, not alias name).r   )rf   ra   rA   r   r   ru   membersr   rp  resolver   )r{   rf   s     r7   r   ExprName.canonical_path  s     ;;99dkk8,,kk001499+>>dkk3''kk]!DII;//$$((dkkB	>>$)),," 	99	s   C. .DDc                     U R                   R                  U R                   R                  U R                  5         $ ! [         a&    U R                   R
                  U R                     s $ f = f)z(The resolved object this name refers to.)rf   modules_collectionr~  ra   	Exceptionresolvedrz   s    r7   r  ExprName.resolved  sW    	3;;11$++2E2Edii2PQQ 	3;;''		22	3s   ;> -A.-A.c                t     U R                   R                  n[        S U 5       5      $ ! [         a     gf = f)z3Whether this name resolves to an enumeration class.Fc              3  n   #    U  H+  n[        U[        5      =(       a    UR                  S :H  v   M-     g7f)z	enum.EnumN)rA   rB   r   )rv   bases     r7   rw   )ExprName.is_enum_class.<locals>.<genexpr>  s-     c]bUY:dD)Pd.A.A[.PP]bs   35)r  basesr  any)r{   r  s     r7   is_enum_classExprName.is_enum_class  s>    	MM''E c]bccc  		s   * 
77c                P     U R                   R                  $ ! [         a     gf = f)z6Whether this name resolves to an enumeration instance.F)rf   r  r  rz   s    r7   is_enum_instanceExprName.is_enum_instance  s)    	;;,,, 		s    
%%c                |     U R                   S:H  =(       a    U R                  R                  $ ! [         a     gf = f)z3Whether this name resolves to an enumeration value.r   F)ra   rf   r  r  rz   s    r7   is_enum_valueExprName.is_enum_value  s7    	99'HDKK,H,HH 		s   +. 
;;c                     SU R                   ;   $ )z/Whether this name resolves to a type parameter.rc  )r   rz   s    r7   is_type_parameterExprName.is_type_parameter  s     d))))r6   r   )rs  objectr   r   )r8   r   r   zIterator[ExprName]r   r   )r   zModule | Class | Noner   )r   r   r   r   r   r   rf   rp  rt  rH   r   r   r   r   r  r  r  r  r  r5   r   r6   r7   r   r     s    V
I@DF=D/FJ4 '+ 
 	 	   3 3 	d 	d     * *r6   r   c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)ExprNamedExpri  z+Named/assignment expressions like `a := b`.rB   r   r   r   Tr>   c             #     #    [        U R                  US9 S h  vN   Sv   [        U R                  US9 S h  vN   g  N% N7f)Nr>   z := )rJ   r   r   r   s     r7   rH   ExprNamedExpr.iterate  s:     $++D111$**4000 	20s   AA AAAAr   Nr   r   r   r6   r7   r  r    s#    5L&* 1 1r6   r  c                  h    \ rS rSr% SrS\S'    \R                  rS\S'    Sr	S\S	'    Sr
S
\S'   Srg)ExprParameteri  z4Parameters in function signatures like `a: int = 0`.ru   ra   r   rR  Nr8  
annotationstr | Expr | NonerX  r   )r   r   r   r   r   r   r   rV  rR  r  rX  r5   r   r6   r7   r  r    s;    >
I'==D-="J"!%G%r6   r  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprSeti*  zSets like `{0, 1, 2}`.r   rU   Tr>   c             #  Z   #    Sv   [        U R                  SUS9 S h  vN   Sv   g  N	7f)Nr  r   r>   r  re  r   s     r7   rH   ExprSet.iterate1  rg  r5  r   Nr   r   r   r6   r7   r  r  *  s     ""&*  r6   r  c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)ExprSetCompi7  z)Set comprehensions like `{a for b in c}`.r   rK   r  r  Tr>   c             #     #    Sv   [        U R                  US9 S h  vN   Sv   [        U R                  SUS9 S h  vN   Sv   g  N* N7f)Nr  r>   r   r  r'  r   s     r7   rH   ExprSetComp.iterate@  rl  rm  r   Nr   r   r   r6   r7   r  r  7  s$    3!&*  r6   r  c                  \    \ rS rSr% SrSrS\S'    SrS\S'    SrS\S'    SS	.SS
 jjr	Sr
g)	ExprSliceiH  zSlices like `[a:b:c]`.Nr  r   upperstepTr>   c             #     #    U R                   b  [        U R                   US9 S h  vN   Sv   U R                  b  [        U R                  US9 S h  vN   U R                  b!  Sv   [        U R                  US9 S h  vN   g g  N` N5 N
7f)Nr>   :)r   rJ   r  r  r   s     r7   rH   ExprSlice.iterateS  s}     ::!djjt444	::!djjt44499 Idiid333 !	 5 5 4s3   %BB,BB
,BBB
BBr   r   )r   r   r   r   r   r   r   r  r  rH   r5   r   r6   r7   r  r  H  s<     #E##E#"D
"&* 4 4r6   r  c                      \ rS rSr% SrS\S'    S\S'    SS.SS jjr\SS	 j5       rSS
 jr	\
SS j5       r\
SS j5       rSrg)r   i^  zSubscripts like `a[b]`.r   r   sliceTr>   c             #     #    [        U R                  U[        U 5      S9 S h  vN   Sv   [        U R                  U[        R
                  S9 S h  vN   Sv   g  N8 N7f)NrQ   rc  rd  )rJ   r   rC   r  r   r    r   s     r7   rH   ExprSubscript.iterateg  sT     $))$QUAVWWW	$**4BUBZBZ[[[		 	X 	\s!   "A!A.A!A
A!A!c                f   [        U 5      S:X  aX  U u  p#[        U[        5      (       a  UR                  5       n[        U[        5      (       a  UR                  5       n[	        X!US9$ [
        R                  U S S US9nU S   n[        U[        5      (       a  UR                  5       n[	        X!US9$ )N   r   rF   r   r   r   )rP  rA   rB   r   rE   r   	_to_binop)rU   r   r   r   s       r7   r  ExprSubscript._to_binopn  s    x=A"KD$%%~~'%&&)$5AA&&x}&<eT""OO%Edu==r6   c                N   U R                   S:X  a$  U R                  U R                  R                  SS9$ U R                   S:X  aP  [	        U R                  [
        5      (       a  U R                  OU R                  R                  5       n[        USSS9$ [        [	        U R                  [
        5      (       a  U R                  OU R                  R                  5       [	        U R                  [
        5      (       a  U R                  S9$ U R                  R                  5       S9$ )Nztyping.Union|r  ztyping.Optionalr   r  )r   r  )
r   r  r  rU   rA   ru   r   rE   r   r   )r{   r   s     r7   r   ExprSubscript.modernize~  s    .0>>$**"5"5#>>>"33!+DJJ!<!<4::$**BVBVBXD$FCC(C88dii>Q>Q>S *4::s ; ;$**
 	
AEAUAUAW
 	
r6   c                    [        U R                  [        5      (       a  U R                  $ U R                  R                  $ )z'The path of this subscript's left part.)rA   r   ru   r   rz   s    r7   r   ExprSubscript.path  s-     dii%%99yy~~r6   c                    [        U R                  [        5      (       a  U R                  $ U R                  R                  $ r   )rA   r   ru   r   rz   s    r7   r   ExprSubscript.canonical_path  s/     dii%%99yy'''r6   r   Nr   )rU   r  r   ru   r   rE   )r   zExprBinOp | ExprSubscriptr   )r   r   r   r   r   r   rH   staticmethodr  r   r   r   r   r5   r   r6   r7   r   r   ^  s`    !
&*  > >	
   ( (r6   r   c                  R    \ rS rSr% SrS\S'    SrS\S'    SS	.SS
 jjrSS jrSr	g)	ExprTuplei  zTuples like `(0, 1, 2)`.r   rU   Fr   implicitTr>   c             #     #    U R                   (       d  Sv   [        U R                  SUS9 S h  vN   [        U R                  5      S:X  a  Sv   U R                   (       d  Sv   g g  N87f)Nr=   r   r>   r   ,r?   )r  rX   rU   rP  r   s     r7   rH   ExprTuple.iterate  sS     }}I4888t}}"I}}I  	9s   .A+A)9A+c           	         [        U R                   Vs/ s H*  n[        U[        5      (       a  UOUR	                  5       PM,     snU R
                  S9$ s  snf )N)rU   r  )r  rU   rA   ru   r   r  )r{   els     r7   r   ExprTuple.modernize  sF    NRmm\mJr3//bR\\^Cm\]]
 	
\s   1Ar   Nr   )r   r  )
r   r   r   r   r   r   r  rH   r   r5   r   r6   r7   r  r    s(    """HdZ&* 
r6   r  c                  D    \ rS rSr% SrS\S'    S\S'    SS.SS	 jjrS
rg)r   i  zUnary operations like `-1`.ru   rF   r   r   Tr>   c             #     #    U R                   v   U R                   S:X  a  Sv   [        U R                  U[        U 5      S9 S h  vN   g  N7f)Nnotr   rQ   )rF   rJ   r   rC   r   s     r7   rH   ExprUnaryOp.iterate  s<     mm==E!I$**4/RVBWXXXs   AAAAr   Nr   r   r   r6   r7   r   r     s%    %M&* Y Yr6   r   c                  <    \ rS rSr% SrSrS\S'    SS.S
S jjrS	rg)	ExprYieldi  z Yield statements like `yield a`.Nr  r   Tr>   c             #  t   #    Sv   U R                   b!  Sv   [        U R                   US9 S h  vN   g g  N7f)Nyieldr   r>   )r   rJ   r   s     r7   rH   ExprYield.iterate  s5     ::!Idjjt444 "4s   -868r   r   )	r   r   r   r   r   r   r   rH   r5   r   r6   r7   r  r    s     *#E#&* 5 5r6   r  c                  8    \ rS rSr% SrS\S'    SS.S
S jjrSrg	)ExprYieldFromi  z%Yield statements like `yield from a`.r   r   Tr>   c             #  P   #    Sv   [        U R                  US9 S h  vN   g  N7f)Nzyield from r>   rD  r   s     r7   rH   ExprYieldFrom.iterate  s     $**4000rF  r   Nr   r   r   r6   r7   r  r    s    /&* 1 1r6   r  ~r  +-&r  ^///<<@%rC  r<   >>andorz==z!=<z<=>z>=iszis notinznot inc                "    [         R                  $ rZ   r   r4   _s    r7   rc   rc         +22r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc         /66r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   	      077r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   
  r  r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     r  r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     s    ,33r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     s    *11r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     r  r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     r  r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     s    .55r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     r  r6   c                "    [         R                  $ rZ   r   r3   r  s    r7   rc   rc         0??r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     r  r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc     s    +::r6   c                v    S[         R                  0R                  U R                  [         R                  5      $ )Nr  )r   r(   r   rF   r0   es    r7   rc   rc     s(    E#6#:#:;??

L_LoLopr6   c                   [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  S.U R                     $ )N)r<   rC  r  r  r  r  r  r  r  r  r  r  r  )	r   r1   r/   r.   r-   r,   r+   r*   rF   r  s    r7   rc   rc     s    !** // // //!00 // (( ((!22!22 (( (( '' jjr6   c                ^    [         R                  [         R                  S.U R                     $ )N)r  r  )r   r'   r&   rF   r  s    r7   rc   rc   '  s#    "5"9"9ATAWAWXYZYcYcdr6   c                "    [         R                  $ rZ   )r   r)   r  s    r7   rc   rc   (  s    .;;r6   c                "    [         R                  $ rZ   )r   r%   r  s    r7   rc   rc   )  s    ,44r6   c                "    [         R                  $ rZ   )r   r"   r  s    r7   rc   rc   *  r  r6   c                "    [         R                  $ rZ   r   r$   r  s    r7   rc   rc   +  s    -44r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   -  s     3 : :r6   c                "    [         R                  $ rZ   r   r#   r  s    r7   rc   rc   .  s    !4!<!<r6   c                "    [         R                  $ rZ   r	  r  s    r7   rc   rc   /  s    199r6   c                "    [         R                  $ rZ   r   r!   r  s    r7   rc   rc   0  s    ,22r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   1  s    066r6   c                "    [         R                  $ rZ   r   r    r  s    r7   rc   rc   4  s    !4!9!9r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   5  s    /44r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   6  s    .33r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   7  s    055r6   c                "    [         R                  $ rZ   r  r  s    r7   rc   rc   8  s    ,11r6   c                N    [         R                  [        U 5      S 5      " U 5      $ )Nc                "    [         R                  $ rZ   r  r  s    r7   rc   !_get_precedence.<locals>.<lambda>=  s    5H5M5Mr6   )_precedence_mapr   type)exprs    r7   rC   rC   <  s    tDz+MNtTTr6   c                   [        U R                  U40 UD6n[        U[        5      (       a&  UR	                  [        U R                  5      5        U$ [        U[
        5      (       a!  [        U[        U R                  U5      /5      $ [        U[        5      (       a!  [        U[        U R                  S5      /5      $ [        U[        U R                  5      /5      $ )Nru   )_buildr   rA   r   r   r   attrru   )noderf   r^   r   s       r7   _build_attributer  @  s    $**f//D$&&HTYY'($!!dHTYY$=>??$dHTYY$>?@@$ 3455r6   c           	         [        [        U R                  U40 UD6[        [	        U R
                  5         [        U R                  U40 UD65      $ rZ   )rE   r  r   _binary_op_mapr  r   r   r  rf   r^   s      r7   _build_binopr"  L  sE    tyy&+F+tDGG}%tzz6,V, r6   c                    [        [        [        U R                  5         U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )rG   _bool_op_mapr  r   r   r  )r  rf   r^   r   s       r7   _build_boolopr%  T  sB    T$'']#6:kkBkU	(	(kB Bs   A
c                    [        U R                  U40 UD6nU R                   Vs/ s H  n[        XA40 UD6PM     nnU R                   Vs/ s H  n[        Xa4SU0UD6PM     nn[	        U/ UQUQ5      $ s  snf s  snf )Nr   )r  funcargskeywordsr   )r  rf   r^   r   argpositional_argskwargkeyword_argss           r7   _build_callr.  [  s    dii262H@D		J	vc4V4	OJTXTaTabTa5F5F8FvFTaLbH??,?@@ Kbs   A6A;c                    [        [        U R                  U40 UD6U R                   Vs/ s H  n[        [        U5         PM     snU R                   Vs/ s H  n[        XA40 UD6PM     sn5      $ s  snf s  snf rZ   )r   r  r   ops_compare_op_mapr  r   )r  rf   r^   r   r   s        r7   _build_comparer2  b  sk    tyy&+F+-1XX6Xrb	"X6484D4DE4DD	'	'4DE 6Es   A3
A8c                    [        [        U R                  U4SS0UD6[        U R                  U40 UD6U R                   Vs/ s H  n[        X140 UD6PM     sn[        U R                  5      S9$ s  snf )Ncompr_targetT)r  )r   r  r   rR   ifsr   r  )r  rf   r^   	conditions       r7   _build_comprehensionr7  j  sl    t{{F@@@tyy&+F+>BhhGh		,V	,hGdmm$	  	Hs   A1)in_formatted_strin_joined_strparse_stringsliteral_stringsc                  [        U R                  [        5      (       ae  U(       a  U(       d  U R                  $ U(       aD  U(       d=   [        U R                  SS[        R
                  SS9n[        UR                  U40 UD6$ [        S5      S 0R                  [        U R                  5      [        5      " U R                  5      $ ! [         a$    [        R                  " SU R                  5         Nrf = f)Nevalz<string-annotation>r   )modefilenameflagsoptimizezTried and failed to parse %r as Python code, falling back to using it as a string literal (postponed annotations might help: https://peps.python.org/pep-0563/).c                    g)Nz...r   r  s    r7   rc   !_build_constant.<locals>.<lambda>  s    r6   )rA   r   ru   compileastPyCF_ONLY_ASTr  r*  SyntaxErrorr   debugr  r   repr)r  rf   r8  r9  r:  r;  r^   parseds           r7   _build_constantrK  s  s     $**c""!1::
= JJ2++ fkk6<V<<I'++D,<dCDJJOO  \ JJ	s   	%C
 
+C87C8c                    [        U R                   Vs/ s H  o3c  S O[        X140 UD6PM     snU R                   Vs/ s H  n[        XA40 UD6PM     sn5      $ s  snf s  snf rZ   )r  r  r  r   )r  rf   r^   re   r   s        r7   _build_dictrM    s\    KO99U9C&"?"?	?9U6:kkBkU	(	(kB UBs
   AA 
c                    [        [        U R                  U40 UD6[        U R                  U40 UD6U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )r  r  re   r   r  r  rf   r^   gens       r7   _build_dictcomprQ    s[    txx*6*tzz6,V,26//B/3	&v	&/B  	Cs    A)r8  c               F    [        [        U R                  U4SS0UD65      $ )Nr8  T)r!  r  r   )r  rf   r8  r^   s       r7   _build_formattedrS    s$     

FTTTVTUUr6   c                    [        [        U R                  U40 UD6U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )r%  r  eltr  rO  s       r7   _build_generatorexprV    sE    txx*6*26//B/3	&v	&/B B   A
c           	         [        [        U R                  U40 UD6[        U R                  U40 UD6[        U R                  U40 UD65      $ rZ   )rD   r  r*  r+  r,  r!  s      r7   _build_ifexprY    sH    tyy&+F+tyy&+F+t{{F-f- r6   )r9  c          
     p    [        U R                   Vs/ s H  n[        XA4SS0UD6PM     sn5      $ s  snf )Nr9  T)r1  r   r  )r  rf   r9  r^   r   s        r7   _build_joinedstrr[    s:     [_[f[fg[fRW&MdMfM[fghhgs   3c                    U R                   c   [        [        U R                  U40 UD65      $ [	        U R                   [        U R                  U40 UD6US9$ )N)r   )r*  rH  r  r   r7  )r  rf   r   r^   s       r7   _build_keywordr]    sK    xxfTZZB6BCCtxx

F!Ef!EPXYYr6   c                    [        [        U R                  5       VVVVs/ s H1  u  p4pV[        UUS [	        U[
        5      (       a  UO	[        XaSS9S9PM3     snnnn[        U R                  U40 UD6S9$ s  snnnnf )NF)rf   r:  )ra   rR  r  rX  )rM  r*  )	rL  r   r(  r  rA   ru   safe_get_expressionr  r*  )r  rf   r^   ra   r  rR  rX  s          r7   _build_lambdar`    s     +9*C

 +D& gs++  (uU +D

 DIIv00 

s   8A6c           
     l    [        U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )ra  eltsr  r  rf   r^   r  s       r7   _build_listrd    s-    DIIFIbVB1&1IFGGF   1c                    [        [        U R                  U40 UD6U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )ri  r  rU  r  rO  s       r7   _build_listcomprg    sF    txx:6:fjfufu<vfu_bVC=ZSY=Zfu<vww<vrW  c                .    [        U R                  X5      $ rZ   )r   id)r  rf   rp  r^   s       r7   _build_namerj    s    DGGV,,r6   c                n    [        [        U R                  U40 UD6[        U R                  U40 UD65      $ rZ   )r  r  r   r   r!  s      r7   _build_named_exprrl    s1    V>v>tzzSY@d]c@deer6   c           
     l    [        U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )r  rb  r  rc  s       r7   
_build_setrn    s-    499E9RF2009EFFEre  c                    [        [        U R                  U40 UD6U R                   Vs/ s H  n[        X140 UD6PM     sn5      $ s  snf rZ   )r  r  rU  r  rO  s       r7   _build_setcomprp    sF    vdhh9&9eietet;uet^aF3<YRX<Yet;uvv;urW  c           	         [        U R                  c  S O[        U R                  U40 UD6U R                  c  S O[        U R                  U40 UD6U R                  c  S 5      $ [        U R                  U40 UD65      $ rZ   )r  r   r  r  r  r!  s      r7   _build_slicerr    sv    

"tzz6(LV(L

"tzz6(LV(L		!  (.dii'J6'J r6   c                B    [        [        U R                  U40 UD65      $ rZ   )rA  r  r   r!  s      r7   _build_starredrt    s    VDJJA&ABBr6   r:  r;  subscript_slicec                  [        U R                  U40 UD6nU(       aI  [        U[        [        45      (       a  UR
                  S;   a  Sn[        U R                  U4SUSS.UD6nO[        U R                  U4SS0UD6n[        Xg5      $ )N>   typing.Literaltyping_extensions.LiteralTru  rv  )r  r   rA   r   r   r   r  r   )r  rf   r:  r;  rv  r^   r   
slice_exprs           r7   _build_subscriptr{    s     $**f//Dd]H5664;N;N S
 <
 #OJJ
 + 
 

 DJJOOO
**r6   )rv  r4  c          
     |    [        U R                   Vs/ s H  n[        XQ40 UD6PM     snU=(       d    US9$ s  snf )N)r  )r  rb  r  )r  rf   rv  r4  r^   r  s         r7   _build_tupler}  $  s8     TYYGYrfR262YGRaRqeqrrGs   9c                x    [        [        [        U R                  5         [	        U R
                  U40 UD65      $ rZ   )r   _unary_op_mapr  r   r  operandr!  s      r7   _build_unaryopr  /  s-    }T$'']3VDLL&5[TZ5[\\r6   c                h    [        U R                  c  S 5      $ [        U R                  U40 UD65      $ rZ   )r  r   r  r!  s      r7   _build_yieldr  3  s/    TZZ/TZZVDJJ5YRX5YZZr6   c                B    [        [        U R                  U40 UD65      $ rZ   )r  r  r   r!  s      r7   _build_yield_fromr  7  s    

F=f=>>r6   c                      \ rS rSrSS jrSrg)_BuildCallablei;  c                    g rZ   r   )r{   r  rf   r^   s       r7   __call___BuildCallable.__call__<  s    RUr6   r   N)r  r
   rf   Module | Classr^   r
   r   rB   )r   r   r   r   r  r5   r   r6   r7   r  r  ;  s    Ur6   r  zdict[type, _BuildCallable]	_node_mapc               4    [         [        U 5         " X40 UD6$ rZ   )r  r  r!  s      r7   r  r  _  s    T$Z 888r6   rp  r:  c                   U c  gUc   UR                   nUR                  (       + n[        XX#S9$ ! [         a    Sn Nf = f)a:  Build an expression from an AST.

Parameters:
    node: The annotation node.
    parent: The parent used to resolve the name.
    member: The member name (for resolution in its scope).
    parse_strings: Whether to try and parse strings as type annotations.

Returns:
    A string or resovable name or expression.
NFr  )moduleimports_future_annotations
ValueErrorr  )r  rf   rp  r:  r  s        r7   get_expressionr  c  sT    $ |	B]]F !' A AAM$vKK	  	"!M	"s   0 ??zD{path}:{lineno}: Failed to get expression from {node_class}: {error})rp  r:  	log_level
msg_formatc               p    [        XX#S9$ ! [         a  nUc   SnAgU R                  R                  n UR                  nO! [
         a    Sn Of = fU R                  n	UR                  R                   SU 3n
UR                  XXzS9n[        [        UR                  5      " U5         SnAgSnAff = f)a	  Safely (no exception) build a resolvable annotation.

Parameters:
    node: The annotation node.
    parent: The parent used to resolve the name.
    member: The member name (for resolution in its scope).
    parse_strings: Whether to try and parse strings as type annotations.
    log_level: Log level to use to log a message. None to disable logging.
    msg_format: A format string for the log message. Available placeholders:
        path, lineno, node, error.

Returns:
    A string or resovable name or expression.
r  Nz<in-memory>r  )r   lineno
node_classerror)r  r  r   r   relative_filepathr  r  formatrj   r   r   )r  rf   rp  r:  r  r  r  r  r   r  	error_strmessages               r7   r_  r_    s    .2d6WW 2^^,,
	!%77D 	! D	!//05':	###e	(112s=   	 
B5B0B0AB0AB0AAB00B5zG{path}:{lineno}: Failed to get %s expression from {node_class}: {error})r:  r  )r:  r  z
base classzclass keywordr6  )
rK   z#str | Expr | tuple[str | Expr, ...]r8   r   r9   r   r:   r   r   r   )rU   z-Iterable[str | Expr | tuple[str | Expr, ...]]rV   r   r8   r   r   r   )rK   z+str | bool | Expr | list[str | Expr] | Noner^   r
   r   zstr | bool | None | list | dict)rl   rB   r^   r
   r   r   )r  rB   r   r   )r  zast.Attributerf   r  r^   r
   r   rB   )r  z	ast.BinOprf   r  r^   r
   r   rB   )r  z
ast.BoolOprf   r  r^   r
   r   rB   )r  zast.Callrf   r  r^   r
   r   rB   )r  zast.Comparerf   r  r^   r
   r   rB   )r  zast.comprehensionrf   r  r^   r
   r   rB   )r  zast.Constantrf   r  r8  r   r9  r   r:  r   r;  r   r^   r
   r   r   )r  zast.Dictrf   r  r^   r
   r   rB   )r  zast.DictComprf   r  r^   r
   r   rB   )
r  zast.FormattedValuerf   r  r8  r   r^   r
   r   rB   )r  zast.GeneratorExprf   r  r^   r
   r   rB   )r  z	ast.IfExprf   r  r^   r
   r   rB   )
r  zast.JoinedStrrf   r  r9  r   r^   r
   r   rB   rZ   )
r  zast.keywordrf   r  r   r8  r^   r
   r   rB   )r  z
ast.Lambdarf   r  r^   r
   r   rB   )r  zast.Listrf   r  r^   r
   r   rB   )r  zast.ListComprf   r  r^   r
   r   rB   )
r  zast.Namerf   r  rp  ro  r^   r
   r   rB   )r  zast.NamedExprrf   r  r^   r
   r   rB   )r  zast.Setrf   r  r^   r
   r   rB   )r  zast.SetComprf   r  r^   r
   r   rB   )r  z	ast.Slicerf   r  r^   r
   r   rB   )r  zast.Starredrf   r  r^   r
   r   rB   )r  zast.Subscriptrf   r  r:  r   r;  r   rv  r   r^   r
   r   rB   )r  z	ast.Tuplerf   r  rv  r   r4  r   r^   r
   r   rB   )r  zast.UnaryOprf   r  r^   r
   r   rB   )r  z	ast.Yieldrf   r  r^   r
   r   rB   )r  zast.YieldFromrf   r  r^   r
   r   rB   )r  zast.ASTrf   r  r^   r
   r   rB   )
r  ast.AST | Nonerf   r  rp  ro  r:  bool | Noner   r8  )r  r  rf   r  rp  ro  r:  r  r  zLogLevel | Noner  ru   r   r8  )
__future__r   rE  sysdataclassesr   r   ri   enumr   r   	functoolsr   typingr	   r
   r   (griffe._internal.agents.nodes.parametersr   griffe._internal.enumerationsr   r   griffe._internal.exceptionsr   griffe._internal.loggerr   collections.abcr   r   r   pathlibr   griffe._internal.modelsr   r   r   r   r4   rJ   rX   r]   r[   r   rB   r   rE   rG   r   r   r   r  r  r  r  r!  r%  rD   r1  r7  rA  rH  rL  ra  ri  r   r  r  r  r  r  r   r  r   r  r  InvertNotUAddUSubr  AddBitAndBitOrBitXorDivFloorDivLShiftMatMultModMultPowRShiftSubr   AndOrr$  EqNotEqLtLtEGtGtEIsIsNotInNotInr1  r  rC   r  r"  r%  r.  r2  r7  rK  rM  rQ  rS  rV  rY  r[  r]  r`  rd  rg  rj  rl  rn  rp  rr  rt  r{  r}  r  r  r  r  	AttributeBinOpBoolOpCallComparecomprehensionConstantDictDictCompFormattedValueGeneratorExpIfExp	JoinedStrkeywordLambdaListListCompName	NamedExprSetSetCompSliceStarred	SubscriptTupleUnaryOpYield	YieldFromr  r   r  r  r  r_  _msg_formatget_annotationsafe_get_annotationget_base_classsafe_get_base_classget_class_keywordsafe_get_class_keywordget_conditionsafe_get_conditionr   r6   r7   <module>r     s   # 
 
 ! +   / / C A ; *<<??"' "P ,?,F,F(0( ( 	(
 *( (^ 	Y;YY 	Y
 Y.8 % 	 ZV ZV ZVz d$0(D 0(  0(f d$c c  c* d$\ \  \" d$t   ( d$L$ L  L$ d$A A  A8 d$4    d$t   $ d$4   ( d$54 5  5 d$
D 
  
 d$:t :  : d$b b  b8 d$	D 	  	 d$$1$ $1  $1N d$1 1  1 d$1T 1  1 d$'[ '[  '[T d$	t 	  	 d$4     e4 Z*t Z* !Z*z d$1D 1  1 d$
D 
  
 d$	d 	  	 d$$     d$4 4  4* d$6(D 6(  6(r d$
 
  
0 d$Y$ Y  Y d$
5 
5  
5 d$1D 1  1 JJGGUHHcHHc	 GGSJJIIsJJGGSLL$JJKKGGSHHcGGTJJGGS" GGUFFD FFDIItFFCGGTFFCGGTFFDIIxFFDIIx424 64 7	4
 74 24 34 14 24 64 54 64 ?4  ?!4" :#4$ p%4&  '4D dE4F ;474:<926 94351g4nU	6A #!$P
$P$P 	$P
 $P $P $P $P $PN #	V
VV 	V
 V 
V  	i
ii 	i
 i 
iZ"Hx-fGwC  !!+
++ 	+
 + + + 
+B "s
ss 	s
 s s 
s][?VX V)MM#)II|) JJ) HHk	)
 KK) +) LL/) HHk) LL/) () )) II|) MM#) KK) JJ)  HHk!)" LL/#)$ HHkMM$GGZKKII|KKMM#II|KKII|MM$9)	% @9 !%L
LL 	L
 L LD !%!)\%
%% 	%
 % % % %P Xt<\) 
 u=\) 
 N%@  _, 
 e<[( r6   