
    g                    z   U d dl mZ d dlZd dl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mZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ erd dlmZmZmZ d dlmZ d dlm Z m!Z! ddddZ"dd	 	 	 	 	 	 	 ddZ#	 	 	 	 	 	 ddZ$ddZ%i Z&de'd<   ejP                  dk\  rde&d<   e G d d             Z) edddie& G d de)             Z* edddie& G d de)             Z+ edddie& G d  d!e)             Z, edddie& G d" d#e)             Z- edddie& G d$ d%e)             Z. edddie& G d& d'e)             Z/ edddie& G d( d)e)             Z0 edddie& G d* d+e)             Z1 edddie& G d, d-e)             Z2 edddie& G d. d/e)             Z3 edddie& G d0 d1e)             Z4 edddie& G d2 d3e)             Z5 edddie& G d4 d5e)             Z6 edddie& G d6 d7e)             Z7 edddie& G d8 d9e)             Z8 edddie& G d: d;e)             Z9 edddie& G d< d=e)             Z: edddie& G d> d?e)             Z; edddie& G d@ dAe)             Z< edddie& G dB dCe)             Z= edddDie& G dE dFe)             Z> edddie& G dG dHe)             Z? edddie& G dI dJe)             Z@ edddie& G dK dLe)             ZA edddie& G dM dNe)             ZB edddie& G dO dPe)             ZC edddie& G dQ dRe)             ZD edddie& G dS dTe)             ZE edddie& G dU dVe)             ZF edddie& G dW dXe)             ZG edddie& G dY dZe)             ZHej                  d[ej                  d\ej                  d]ej                  d^iZMej                  d]ej                  d_ej                  d`ej                  daej                  dbej                  dcej                  ddej                  deej                  dfej                  dgej                  dhej                  diej                  d^iZ[ej                  djej                  dkiZ^ej                  dlej                  dmej                  dnej                  doej                  dpej                  dqej                  drej                  dsej                  dtej                  dui
ZiddvZjddwZkddxZlddyZmddzZndd{ZodDdDdDdDd|	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd}Zpdd~ZqddZrdDd	 	 	 	 	 	 	 	 	 ddZsddZtddZudDd	 	 	 	 	 	 	 	 	 ddZvdddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZdDdDdDd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZdDd	 	 	 	 	 	 	 	 	 ddZddZddZddZi ej                  ejej                  ekej                  elej                  emej                  enej                  eoej                  epej                  eqej                  erej                  esej                   etej"                  euej$                  evej&                  ewej(                  exej*                  eyej,                  ezej.                  e{ej0                  e|ej2                  e}ej4                  e~ej6                  eej8                  eej:                  eej<                  eej>                  eej@                  eejB                  eiZde'd<   ddZdd	 	 	 	 	 	 	 ddZdejJ                  dd	 	 	 	 	 	 	 	 	 	 	 ddZdZ e	ed      Z e	ededz        Z e	edD      Z e	edDedz        Z e	edD      Z e	edDedz        Zy)    )annotationsN)	dataclass)fields)partial)zip_longest)TYPE_CHECKINGAnyCallable)get_parameters)LogLevelParameterKind)NameResolutionError)logger)IterableIteratorSequence)Path)ClassModuleTflatc             #     K   t        | t              r|  y t        | t              r| D ]  }t        ||      E d {     y |r| j	                  d      E d {    y |  y 7 )7 w)Nr   T)
isinstancestrtuple_yielditerate)elementr   elems      H/var/www/openai/venv/lib/python3.12/site-packages/_griffe/expressions.pyr   r      s^     '3	GU	#Dd... 	???---	 /-s!   ;A+A'A+A)A+)A+c             #     K   t        |       }	 t        t        |      |      E d {    |D ],  }t        ||      E d {    t        ||      E d {    . y 7 6# t        $ r Y y w xY w7 -7 wNr   )iterr   nextStopIteration)elementsjointr   itr   s        r    _joinr)   )   sv      
hB$r(... %d+++'---  	/  	,-sU   A4A! AA! A4A0A4A2A4A! !	A-*A4,A--A42A4c                    t        | t              rt        | fi |S t        | t              r| D cg c]  }t	        |fi | c}S | S c c}w N)r   Expr_expr_as_dictlist_field_as_dict)r   kwargsr   s      r    r/   r/   9   sR     '4 W///'4 ;BC74t.v.7CCN Ds   A	r,   c           
         t        t        |       d       D ci c]<  }|j                  dk7  r+|j                  t        t	        | |j                        fi |> }}| j
                  |d<   |S c c}w )Nc                    | j                   S r+   )name)fs    r    <lambda>z_expr_as_dict.<locals>.<lambda>G   s        )keyparentcls)sorted	getfieldsr3   r/   getattr	classname)
expressionr0   fieldr   s       r    r-   r-   D   sv     Ij17GHHE::! 	

N7:uzz#BMfMMH  
 ((F5MMs   AA.zdict[str, bool]_dataclass_opts)   
   slotsc                      e Zd ZdZddZddZddddZddZddZe	dd	       Z
e	dd
       Ze	dd       Ze	dd       Ze	dd       Ze	dd       Ze	dd       Ze	dd       Zy)r,   zBase class for expressions.c                R    dj                  d | j                  d      D              S )N c              3  X   K   | ]"  }t        |t              r|n|j                   $ y wr+   )r   r   r3   ).0r   s     r    	<genexpr>zExpr.__str__.<locals>.<genexpr>Y   s%     hPgz$4t$))CPgs   (*Tr   )joinr   selfs    r    __str__zExpr.__str__X   s'    wwhPTP\P\bfP\Pghhhr6   c              #  D   K   | j                  d      E d{    y7 w)z.Iterate on the expression syntax and elements.Fr   N)r   rK   s    r    __iter__zExpr.__iter__[   s     <<U<+++s     Tr   c             #  $   K   dE d{    y7 w)a  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.
         NrQ   rL   r   s     r    r   zExpr.iterate_   s     " s   c                    | S )zModernize the expression.

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

        Returns:
            A modernized expression.
        rQ   rK   s    r    	modernizezExpr.modernizer   s	     r6   c                    t        | fi |S )zReturn the expression as a dictionary.

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


        Returns:
            A dictionary.
        )r-   )rL   r0   s     r    as_dictzExpr.as_dict|   s     T,V,,r6   c                .    | j                   j                  S )zThe expression class name.)	__class____name__rK   s    r    r=   zExpr.classname   s     ~~&&&r6   c                    t        |       S z%Path of the expressed name/attribute.r   rK   s    r    pathz	Expr.path        4yr6   c                    t        |       S r[   r\   rK   s    r    canonical_pathzExpr.canonical_path   r^   r6   c                @    | j                   j                  dd      d   S )z%Name of the expressed name/attribute..   )r`   rsplitrK   s    r    canonical_namezExpr.canonical_name   s"     ""))#q1"55r6   c                D    t        | t              xr | j                  dk(  S )z4Whether this attribute is annotated with `ClassVar`.ClassVarr   ExprSubscriptrf   rK   s    r    is_classvarzExpr.is_classvar   !     $.T43F3F*3TTr6   c                `    t        | t              xr | j                  j                         dk(  S )z#Whether this expression is a tuple.r   )r   rj   rf   lowerrK   s    r    is_tuplezExpr.is_tuple   s+     $.Y43F3F3L3L3NRY3YYr6   c                D    t        | t              xr | j                  dk(  S )z'Whether this expression is an iterator.r   ri   rK   s    r    is_iteratorzExpr.is_iterator   rl   r6   c                D    t        | t              xr | j                  dk(  S )z'Whether this expression is a generator.	Generatorri   rK   s    r    is_generatorzExpr.is_generator   s!     $.U43F3F+3UUr6   Nreturnr   )rv   Iterator[str | Expr]r   boolrv   rw   )rv   r,   )r0   r	   rv   dict[str, Any]rv   ry   )rY   
__module____qualname____doc__rM   rO   r   rT   rV   propertyr=   r]   r`   rf   rk   ro   rq   rt   rQ   r6   r    r,   r,   T   s    %i, '+ &
- ' '     6 6 U U Z Z U U V Vr6   eqc                  |    e Zd ZU dZded<   	 ddddZddZedd       Zedd	       Z	edd
       Z
edd       Zy)ExprAttributezAttributes like `a.b`.zlist[str | Expr]valuesTr   c             #  P   K   t        | j                  d|      E d {    y 7 w)Nrb   r   r)   r   rR   s     r    r   zExprAttribute.iterate   s     c555   &$&c                t    |j                   | j                  |_         | j                  j                  |       y)zpAppend a name to this attribute.

        Parameters:
            value: The expression name to append.
        N)r8   lastr   append)rL   values     r    r   zExprAttribute.append   s+     <<99EL5!r6   c                     | j                   d   S )z/The last part of this attribute (on the right).rd   r   rK   s    r    r   zExprAttribute.last   s    
 {{2r6   c                     | j                   d   S )z/The first part of this attribute (on the left).r   r   rK   s    r    firstzExprAttribute.first   s     {{1~r6   c                .    | j                   j                  S )zThe path of this attribute.)r   r]   rK   s    r    r]   zExprAttribute.path   s     yy~~r6   c                .    | j                   j                  S )z%The canonical path of this attribute.)r   r`   rK   s    r    r`   zExprAttribute.canonical_path   s     yy'''r6   Nrx   )r   ExprNamerv   None)rv   r   )rv   
str | Exprru   )rY   r|   r}   r~   __annotations__r   r   r   r   r   r]   r`   rQ   r6   r    r   r      sk     2&* 6"       ( (r6   r   c                  D    e Zd ZU dZded<   	 ded<   	 ded<   	 dddd	Zy
)	ExprBinOpzBinary operations like `a + b`.r   leftr   operatorrightTr   c             #     K   t        | j                  |      E d {    d| j                   d t        | j                  |      E d {    y 7 67 wNr    )r   r   r   r   rR   s     r    r   zExprBinOp.iterate   sJ     $))$///$--""$**4000 	00s!   AA0AAAANrx   rY   r|   r}   r~   r   r   rQ   r6   r    r   r      s'    )
M&* 1r6   r   c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)
ExprBoolOpz!Boolean operations like `a or b`.r   r   Sequence[str | Expr]r   Tr   c             #  l   K   t        | j                  d| j                   d|      E d {    y 7 w)Nr   r   )r)   r   r   rR   s     r    r   zExprBoolOp.iterate   s)     $--&:FFFs   *424Nrx   r   rQ   r6   r    r   r      s    +M  &* Gr6   r   c                  J    e Zd ZU dZded<   	 ded<   	 edd       Zdddd	Zy
)ExprCallzCalls like `f()`.r,   functionr   	argumentsc                .    | j                   j                  S z1The canonical path of this subscript's left part.)r   r`   rK   s    r    r`   zExprCall.canonical_path  s     }}+++r6   Tr   c             #     K   t        | j                  |      E d {    d t        | j                  d|      E d {    d y 7 -7 w)Nr   (, ))r   r   r)   r   rR   s     r    r   zExprCall.iterate  sC     $--d333	D999	 	49s!   AA#AA
AANru   rx   )rY   r|   r}   r~   r   r   r`   r   rQ   r6   r    r   r      s2    N##, , '+ r6   r   c                  D    e Zd ZU dZded<   	 ded<   	 ded<   	 dd	dd
Zy)ExprComparezComparisons like `a > b`.r   r   zSequence[str]	operatorsr   comparatorsTr   c             #     K   t        | j                  |      E d {    d t        t        | j                  g | j
                  d      d|      E d {    y 7 @7 w)Nr   r   )	fillvalue)r   r   r)   r   r   r   rR   s     r    r   zExprCompare.iterate  sR     $))$///	T^^R9I9IUXY[^eijjj 	0js!   A"A:A"A A" A"Nrx   r   rQ   r6   r    r   r     s)    #
%%&* kr6   r   c                  T    e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   	 d
dddZy)ExprComprehensionz(Comprehensions like `a for b in c if d`.r   targetiterabler   
conditionsFry   is_asyncTr   c             #  &  K   | j                   rd d t        | j                  |      E d {    d t        | j                  |      E d {    | j                  r%d t        | j                  d|      E d {    y y 7 Y7 87 
w)Nzasync zfor r   z in  if )r   r   r   r   r   r)   rR   s     r    r   zExprComprehension.iterate3  s{     ==N$++D111$--d333??LT__f4@@@  	23 As3   /BB"BB/BBBBBNrx   )rY   r|   r}   r~   r   r   r   rQ   r6   r    r   r   &  s6    2;$$9Hd%&* 	Ar6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprConstantzConstants like `"a"` or `1`.r   r   Tr   c             #  (   K   | j                    y wr+   )r   rR   s     r    r   zExprConstant.iterateG  s     jjs   Nrx   r   rQ   r6   r    r   r   @  s    &J&* r6   r   c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)ExprDictzDictionaries like `{"a": 0}`.zSequence[str | Expr | None]keysr   r   Tr   c             #     K   d t        d t        | j                  | j                        D        d|      E d {    d y 7 	w)N{c              3  4   K   | ]  \  }}|dn|d|f  y w)Nr   : rQ   )rH   r7   r   s      r    rI   z#ExprDict.iterate.<locals>.<genexpr>X  s$     iMhzsEfdE:Mhs   r   r   })r)   zipr   r   rR   s     r    r   zExprDict.iterateU  sL     	iSQUQZQZ\`\g\gMhi
 	
 	

 		
s   ;A	A
A	Nrx   r   rQ   r6   r    r   r   L  s    '
%%  &* r6   r   c                  D    e Zd ZU dZded<   	 ded<   	 ded<   	 dddd	Zy
)ExprDictCompz0Dict comprehensions like `{k: v for k, v in a}`.r   r7   r   Sequence[Expr]
generatorsTr   c             #     K   d t        | j                  |      E d {    d t        | j                  |      E d {    t        | j                  d|      E d {    d y 7 L7 +7 w)Nr   r   r   r   r   )r   r7   r   r)   r   rR   s     r    r   zExprDictComp.iteratek  s`     	$((...
$**4000#D999		 	/09s3   A4A."A4A0A4$A2%
A40A42A4Nrx   r   rQ   r6   r    r   r   `  s'    :	O!&* r6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprExtSlicez Extended slice like `a[x:y, z]`.r   dimsTr   c             #  P   K   t        | j                  d|      E d {    y 7 w)Nr   r   )r)   r   rR   s     r    r   zExprExtSlice.iterate|  s     Dt444r   Nrx   r   rQ   r6   r    r   r   u  s    *
&* 5r6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprFormattedz Formatted string like `{1 + 1}`.r   r   Tr   c             #  ^   K   d t        | j                  |      E d {    d y 7 	w)Nr   r   r   r   r   rR   s     r    r   zExprFormatted.iterate  s)     	$**4000	 	1s   -+
-Nrx   r   rQ   r6   r    r   r     s    *&* r6   r   c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)ExprGeneratorExpz5Generator expressions like `a for b in c for d in e`.r   r   r   r   Tr   c             #     K   t        | j                  |      E d {    d t        | j                  d|      E d {    y 7 )7 wr   r   r   r)   r   rR   s     r    r   zExprGeneratorExp.iterate  s>     $,,T222	#D999 	39s!   AA#AA	A	ANrx   r   rQ   r6   r    r   r     s    ?!&* :r6   r   c                  D    e Zd ZU dZded<   	 ded<   	 ded<   	 ddd
dZy	)	ExprIfExpz Conditions like `a if b else c`.r   bodytestorelseTr   c             #     K   t        | j                  |      E d {    d t        | j                  |      E d {    d t        | j                  |      E d {    y 7 K7 *7 	w)Nr   r   z else )r   r   r   r   rR   s     r    r   zExprIfExp.iterate  sY     $))$///$))$///$++D111	 	0/1s3   A/A)"A/ A+"A/#A-$A/+A/-A/Nrx   r   rQ   r6   r    r   r     s(    *

&* 2r6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprJoinedStrz!Joined strings like `f"a {b} c"`.r   r   Tr   c             #  `   K   d t        | j                  d|      E d {    d y 7 	w)Nzf'rF   r   'r   rR   s     r    r   zExprJoinedStr.iterate  s+     
bt444	 	5    .,
.Nrx   r   rQ   r6   r    r   r     s    +  &* r6   r   c                  f     e Zd ZU dZded<   	 ded<   	 dZded<   	 ed fd	       Zd
dddZ xZ	S )ExprKeywordzKeyword arguments like `a=b`.r   r3   r   r   NExpr | Noner   c                    | j                   r&| j                   j                   d| j                   dS t        t        |   S )zPath of the expressed keyword.r   r   )r   r`   r3   superr   )rL   rX   s    r    r`   zExprKeyword.canonical_path  s;     ==mm2231TYYKqAA[$66r6   Tr   c             #  r   K   | j                    d t        | j                  |      E d {    y 7 w)N=r   )r3   r   r   rR   s     r    r   zExprKeyword.iterate  s(     ii	$**4000s   -757ru   rx   )
rY   r|   r}   r~   r   r   r   r`   r   __classcell__)rX   s   @r    r   r     sG    '
I" !Hk I7 7 '+ 1 1r6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprVarPositionalz,Variadic positional parameters like `*args`.r,   r   Tr   c             #  V   K   d t        | j                  |      E d {    y 7 w)N*r   r   rR   s     r    r   zExprVarPositional.iterate  s     	$**4000   )')Nrx   r   rQ   r6   r    r   r     s    6K&* 1r6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprVarKeywordz,Variadic keyword parameters like `**kwargs`.r,   r   Tr   c             #  V   K   d t        | j                  |      E d {    y 7 w)N**r   r   rR   s     r    r   zExprVarKeyword.iterate  s     
$**4000r   Nrx   r   rQ   r6   r    r   r     s    6K&* 1r6   r   c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)
ExprLambdaz(Lambda expressions like `lambda a: a.b`.zSequence[ExprParameter]
parametersr   r   Tr   c             #  `  K   d}d}d}t        | j                        }d |rd t        | j                  d      D ]D  \  }}|j                  t        j
                  u rd}n|j                  t        j                  u rd nf|j                  t        j                  u rd nE|j                  t        j                  u r|sd}n$|j                  t        j                  u r|sd}d |j                  t        j
                  ur|rd}d	 |j                   |j                  rO|j                  t        j                  t        j                  fvr#d
 t        |j                  |      E d {    ||k  sAd G d t        | j                  |      E d {    y 7 67 w)NFlambdar   rc   Tr   r   z*, z/, r   r   r   r   )lenr   	enumeratekindr   positional_onlyvar_positionalvar_keywordpositional_or_keywordkeyword_onlyr3   defaultr   r   )rL   r   pos_only	pos_or_kwkw_onlylengthindex	parameters           r    r   zExprLambda.iterate  sb    	T__%I )$//1 =E9~~!>!>>=#?#??	=#<#<<
=#F#FFy 	=#=#==g~~]%B%BBx ..   Y^^M<X<XZgZsZs;t%t	!)"3"3$???v~
) !>* 
$))$///	 @ 	0s*   E1F.3F*4	F.?%F.$F,%F.,F.Nrx   r   rQ   r6   r    r   r     s    2''
&* 0r6   r   c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprListzLists like `[0, 1, 2]`.r   r&   Tr   c             #  `   K   d t        | j                  d|      E d {    d y 7 	w)N[r   r   ]r)   r&   rR   s     r    r   zExprList.iterate6  +     	4888	 	9r   Nrx   r   rQ   r6   r    r  r  /  s    !&* r6   r  c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)ExprListCompz*List comprehensions like `[a for b in c]`.r   r   r   r   Tr   c             #     K   d t        | j                  |      E d {    d t        | j                  d|      E d {    d y 7 -7 w)Nr
  r   r   r  r   rR   s     r    r   zExprListComp.iterateF  H     	$,,T222	#D999	 	39!   AA#AA
AANrx   r   rQ   r6   r    r  r  =  s    4!&* r6   r  Fc                      e Zd ZU dZded<   	 dZded<   	 ddZdd	dd
Zedd       Z	edd       Z
edd       Zedd       Zedd       Zedd       Zy)r   zLThis class represents a Python object identified by a name in a given scope.r   r3   Nz&str | ExprName | Module | Class | Noner8   c                `    t        |t              r| j                  |j                  k(  S t        S )zXTwo name expressions are equal if they have the same `name` value (`parent` is ignored).)r   r   r3   NotImplemented)rL   others     r    __eq__zExprName.__eq__X  s%    eX&99

**r6   Tr   c             #     K   |  y wr+   rQ   rR   s     r    r   zExprName.iterate^  s     
s   c                    t        | j                  t              r%| j                  j                   d| j                   S | j                  S )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.
        rb   )r   r8   r   r]   r3   rK   s    r    r]   zExprName.patha  s<     dkk8,kk&&'q44yyr6   c                   | j                   | j                  S t        | j                   t              r%| j                   j                   d| j                   S t        | j                   t
              r| j                    d| j                   S 	 | j                   j                  | j                        S # t        $ r | j                  cY S w xY w)z2The canonical name (resolved one, not alias name).rb   )r8   r3   r   r   r`   r   resolver   rK   s    r    r`   zExprName.canonical_pathm  s     ;;99dkk8,kk001499+>>dkk3'kk]!DII;//	;;&&tyy11" 	99	s   $B3 3C
Cc                    	 | j                   j                  | j                   j                  | j                           S # t        $ r& | j                   j
                  | j                     cY S w xY w)z(The resolved object this name refers to.)r8   modules_collectionr  r3   	ExceptionresolvedrK   s    r    r  zExprName.resolved{  sW    	3;;11$++2E2Edii2PQQ 	3;;''		22	3s   ;> ,A-,A-c                r    	 | j                   j                  }t        d |D              S # t        $ r Y yw xY w)z3Whether this name resolves to an enumeration class.Fc              3  ^   K   | ]%  }t        |t              xr |j                  d k(   ' yw)z	enum.EnumN)r   r,   r`   )rH   bases     r    rI   z)ExprName.is_enum_class.<locals>.<genexpr>  s.     c]bUY:dD)Pd.A.A[.PP]bs   +-)r  basesr  any)rL   r#  s     r    is_enum_classzExprName.is_enum_class  s>    	MM''E c]bccc  		s   * 	66c                N    	 | j                   j                  S # t        $ r Y yw xY w)z6Whether this name resolves to an enumeration instance.F)r8   r%  r  rK   s    r    is_enum_instancezExprName.is_enum_instance  s)    	;;,,, 		s    	$$c                p    	 | j                   dk(  xr | j                  j                  S # t        $ r Y yw xY w)z3Whether this name resolves to an enumeration value.r   F)r3   r8   r'  r  rK   s    r    is_enum_valuezExprName.is_enum_value  s7    	99'HDKK,H,HH 		s   &) 	55)r  objectrv   ry   )r   ry   rv   zIterator[ExprName]ru   )rv   zModule | Class | Noner{   )rY   r|   r}   r~   r   r8   r  r   r   r]   r`   r  r%  r'  r)  rQ   r6   r    r   r   O  s    V
I59F29/ '+  	 	   3 3 	d 	d    r6   r   c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)ExprNamedExprz+Named/assignment expressions like `a := b`.r,   r   r   r   Tr   c             #     K   d t        | j                  |      E d {    d t        | j                  |      E d {    d y 7 ,7 w)Nr   r   z := r   )r   r   r   rR   s     r    r   zExprNamedExpr.iterate  sF     	$++D111$**4000	 	20s!   AA"AA
AANrx   r   rQ   r6   r    r,  r,    s    5L&* r6   r,  c                  `    e Zd ZU dZded<   	 ej                  Zded<   	 dZded<   	 dZ	d	ed
<   y)ExprParameterz4Parameters in function signatures like `a: int = 0`.r   r3   r   r   Nr   
annotationstr | Expr | Noner   )
rY   r|   r}   r~   r   r   r   r   r0  r   rQ   r6   r    r/  r/    s;    >
I'==D-="J"!%G%r6   r/  c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprSetzSets like `{0, 1, 2}`.r   r&   Tr   c             #  `   K   d t        | j                  d|      E d {    d y 7 	w)Nr   r   r   r   r  rR   s     r    r   zExprSet.iterate  r  r   Nrx   r   rQ   r6   r    r3  r3    s     ""&* r6   r3  c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)ExprSetCompz)Set comprehensions like `{a for b in c}`.r   r   r   r   Tr   c             #     K   d t        | j                  |      E d {    d t        | j                  d|      E d {    d y 7 -7 w)Nr   r   r   r   r   rR   s     r    r   zExprSetComp.iterate  r  r  Nrx   r   rQ   r6   r    r6  r6    s    3!&* r6   r6  c                  P    e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 ddd
d	Zy)	ExprSlicezSlices like `[a:b:c]`.Nr1  rn   upperstepTr   c             #  ,  K   | j                   t        | j                   |      E d {    d | j                  t        | j                  |      E d {    | j                  $d t        | j                  |      E d {    y y 7 d7 77 
w)Nr   :)rn   r   r:  r;  rR   s     r    r   zExprSlice.iterate  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rx   )	rY   r|   r}   r~   rn   r   r:  r;  r   rQ   r6   r    r9  r9    s7     #E##E#"D
"&* 4r6   r9  c                  \    e Zd ZU dZded<   	 ded<   	 ddddZedd	       Zedd
       Zy)rj   zSubscripts like `a[b]`.r   r   r,   sliceTr   c             #     K   t        | j                  |      E d {    d t        | j                  |      E d {    d y 7 ,7 w)Nr   r
  r  )r   r   r?  rR   s     r    r   zExprSubscript.iterate  sA     $))$///	$**4000	 	00s!   AA
"A A
AAc                z    t        | j                  t              r| j                  S | j                  j                  S )z'The path of this subscript's left part.)r   r   r   r]   rK   s    r    r]   zExprSubscript.path  s*     dii%99yy~~r6   c                z    t        | j                  t              r| j                  S | j                  j                  S r   )r   r   r   r`   rK   s    r    r`   zExprSubscript.canonical_path  s,     dii%99yy'''r6   Nrx   ru   )	rY   r|   r}   r~   r   r   r   r]   r`   rQ   r6   r    rj   rj     sF    !
K&*    ( (r6   rj   c                  <    e Zd ZU dZded<   	 dZded<   	 dddd	Zy
)	ExprTuplezTuples like `(0, 1, 2)`.r   r&   Fry   implicitTr   c             #     K   | j                   sd t        | j                  d|      E d {    t        | j                        dk(  rd | j                   sd y y 7 2w)Nr   r   r   rc   ,r   )rE  r)   r&   r   rR   s     r    r   zExprTuple.iterate!  sT     }}I4888t}}"I}}I  	9s   ,A#A!3A#Nrx   )rY   r|   r}   r~   r   rE  r   rQ   r6   r    rD  rD    s#    """HdZ&* r6   rD  c                  8    e Zd ZU dZded<   	 ded<   	 ddd
dZy	)ExprUnaryOpzUnary operations like `-1`.r   r   r   r   Tr   c             #  j   K   | j                    t        | j                  |      E d {    y 7 wr"   )r   r   r   rR   s     r    r   zExprUnaryOp.iterate5  s$     mm$**4000s   )313Nrx   r   rQ   r6   r    rI  rI  ,  s    %M&* 1r6   rI  c                  0    e Zd ZU dZdZded<   	 ddddZy)		ExprYieldz Yield statements like `yield a`.Nr1  r   Tr   c             #  x   K   d | j                   $d t        | j                   |      E d {    y y 7 w)Nyieldr   r   )r   r   rR   s     r    r   zExprYield.iterateB  s6     ::!Idjjt444 "4s   /:8:rx   )rY   r|   r}   r~   r   r   r   rQ   r6   r    rL  rL  ;  s    *#E#&* 5r6   rL  c                  ,    e Zd ZU dZded<   	 ddddZy)	ExprYieldFromz%Yield statements like `yield from a`.r   r   Tr   c             #  V   K   d t        | j                  |      E d {    y 7 w)Nzyield from r   r   rR   s     r    r   zExprYieldFrom.iterateQ  s      $**4000r   Nrx   r   rQ   r6   r    rP  rP  J  s    /&* 1r6   rP  ~znot +-&|^/z//z<<@%r   r   z>>andorz==z!=<z<=>z>=iszis notinznot inc                   t        | j                  |fi |}t        |t              r&|j	                  t        | j                               |S t        |t
              r!t        |t        | j                  |      g      S t        |t              r!t        |t        | j                  d      g      S t        |t        | j                        g      S )Nr   )_buildr   r   r   r   r   attrr   )noder8   r0   r   s       r    _build_attributere    s    $**f//D$&HTYY'($!dHTYY$=>??$dHTYY$>?@@$ 3455r6   c           	         t        t        | j                  |fi |t        t	        | j
                           t        | j                  |fi |      S r+   )r   rb  r   _binary_op_maptypeopr   rd  r8   r0   s      r    _build_binoprk    sE    tyy&+F+tDGG}%tzz6,V, r6   c                    t        t        t        | j                           | j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r   _bool_op_maprh  ri  r   rb  )rd  r8   r0   r   s       r    _build_booloprn    sD    T$'']#6:kkBkUv	(	(kB Bs   A

c                    t        | j                  |fi |}| j                  D cg c]  }t        ||fi | }}| j                  D cg c]  }t        ||fd|i| }}t	        |g ||      S c c}w c c}w )Nr   )rb  funcargskeywordsr   )rd  r8   r0   r   argpositional_argskwargkeyword_argss           r    _build_callrw    s    dii262H@D		J	vc64V4	OJTXTaTabTa5F5&F8FvFTaLbH??,?@@ Kbs   A2
A7c                    t        t        | j                  |fi || j                  D cg c]  }t        t        |          c}| j                  D cg c]  }t        ||fi | c}      S c c}w c c}w r+   )r   rb  r   ops_compare_op_maprh  r   )rd  r8   r0   ri  comps        r    _build_comparer|    sm    tyy&+F+-1XX6Xrb	"X6484D4DE4DDf	'	'4DE 6Es   A.
A3c                    t        t        | j                  |fi |t        | j                  |fi || j                  D cg c]  }t        ||fi | c}t        | j                              S c c}w )N)r   )r   rb  r   r#   ifsry   r   )rd  r8   r0   	conditions       r    _build_comprehensionr    si    t{{F-f-tyy&+F+>BhhGh	6	,V	,hGdmm$	  	Hs    A0)in_formatted_strin_joined_strparse_stringsliteral_stringsc                  t        | j                  t              rT|r|s| j                  S |rB|s@	 t        | j                  ddt        j
                  d      }t        |j                  |fi |S  t        d      d ij                  t        | j                        t              | j                        S # t        $ r# t        j                  d| j                         Y pw xY w)Nevalz<string-annotation>rc   )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                     y)Nz...rQ   )_s    r    r5   z!_build_constant.<locals>.<lambda>  s    r6   )r   r   r   compileastPyCF_ONLY_ASTrb  r   SyntaxErrorr   debugrh  getrepr)rd  r8   r  r  r  r  r0   parseds           r    _build_constantr    s     $**c"!1::
= JJ2++ fkk6<V<<CDI'++D,<dCDJJOO  \ JJ	s   (B4 4)C C c                    t        | j                  D cg c]  }|d nt        ||fi | c}| j                  D cg c]  }t        ||fi | c}      S c c}w c c}w r+   )r   r   rb  r   )rd  r8   r0   r7   r   s        r    _build_dictr    sb    KO99U9C&f"?"?	?9U6:kkBkUv	(	(kB UBs
   AA
c                    t        t        | j                  |fi |t        | j                  |fi || j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r   rb  r7   r   r   rd  r8   r0   gens       r    _build_dictcompr    s]    txx*6*tzz6,V,26//B/3V	&v	&/B  	Cs    A)r  c               F    t        t        | j                  |fddi|      S )Nr  T)r   rb  r   )rd  r8   r  r0   s       r    _build_formattedr    s$     

FTTTVTUUr6   c                    t        t        | j                  |fi || j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r   rb  eltr   r  s       r    _build_generatorexpr    sG    txx*6*26//B/3V	&v	&/B B   A
c           	         t        t        | j                  |fi |t        | j                  |fi |t        | j                  |fi |      S r+   )r   rb  r   r   r   rj  s      r    _build_ifexpr    sH    tyy&+F+tyy&+F+t{{F-f- r6   )r  c          
     l    t        | j                  D cg c]  }t        ||fddi| c}      S c c}w )Nr  T)r   r   rb  )rd  r8   r  r0   r   s        r    _build_joinedstrr    s<     [_[f[fg[fRW&MdMfM[fghhgs   1c                    | j                    t        t        | j                  |fi |      S t	        | j                   t        | j                  |fi ||      S )N)r   )rs  r   rb  r   r   )rd  r8   r   r0   s       r    _build_keywordr    sK    xxfTZZB6BCCtxx

F!Ef!EPXYYr6   c                   t        t        | j                        D cg c]4  \  }}}}t        ||d t	        |t
              r|nt        ||d            6 c}}}}t        | j                  |fi |      S c c}}}}w )NF)r8   r  )r3   r   r0  r   )r   r   )	r   r   rq  r/  r   r   safe_get_expressionrb  r   )rd  r8   r0   r3   r  r   r   s          r    _build_lambdar    s     +9*C

 +D&aw gs+  (uU +D

 DIIv00 

s   9A:c           
     h    t        | j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r  eltsrb  rd  r8   r0   els       r    _build_listr  #  s/    DIIFIbVB1&1IFGGF   /c                    t        t        | j                  |fi || j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r  rb  r  r   r  s       r    _build_listcompr  '  sH    txx:6:fjfufu<vfu_bVC=ZSY=Zfu<vww<vr  c                .    t        | j                  |      S r+   )r   idrj  s      r    _build_namer  +  s    DGGV$$r6   c                n    t        t        | j                  |fi |t        | j                  |fi |      S r+   )r,  rb  r   r   rj  s      r    _build_named_exprr  /  s1    V>v>tzzSY@d]c@deer6   c           
     h    t        | j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r3  r  rb  r  s       r    
_build_setr  3  s/    499E9RF2v009EFFEr  c                    t        t        | j                  |fi || j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r6  rb  r  r   r  s       r    _build_setcompr  7  sH    vdhh9&9eietet;uet^aF3<YRX<Yet;uvv;ur  c           	         t        | j                  d nt        | j                  |fi || j                  d nt        | j                  |fi || j                  d       S t        | j                  |fi |      S r+   )r9  rn   rb  r:  r;  rj  s      r    _build_slicer  ;  sv    

"tzz6(LV(L

"tzz6(LV(L		!  (.dii'J6'J r6   c                B    t        t        | j                  |fi |      S r+   )r   rb  r   rj  s      r    _build_starredr  C  s    VDJJA&ABBr6   r  r  in_subscriptc                  t        | j                  |fi |}|rBt        |t        t        f      r|j
                  dv rd}t        | j                  |fd|dd|}nt        | j                  |fddi|}t        ||      S )N>   typing.Literaltyping_extensions.LiteralTr  r  )rb  r   r   r   r   r`   r?  rj   )rd  r8   r  r  r  r0   r   r?  s           r    _build_subscriptr  G  s     $**f//Dd]H564;N;N S
 <
 #OJJ
 +
 
 tzz6GGGu%%r6   )r  c          
     l    t        | j                  D cg c]  }t        ||fi | c}|      S c c}w )N)rE  )rD  r  rb  )rd  r8   r  r0   r  s        r    _build_tupler  d  s4     TYYGYrfR262YGR^__Gs   1c                x    t        t        t        | j                           t	        | j
                  |fi |      S r+   )rI  _unary_op_maprh  ri  rb  operandrj  s      r    _build_unaryopr  n  s-    }T$'']3VDLL&5[TZ5[\\r6   c                f    t        | j                  d       S t        | j                  |fi |      S r+   )rL  r   rb  rj  s      r    _build_yieldr  r  s/    TZZ/TZZVDJJ5YRX5YZZr6   c                B    t        t        | j                  |fi |      S r+   )rP  rb  r   rj  s      r    _build_yield_fromr  v  s    

F=f=>>r6   z1dict[type, Callable[[Any, Module | Class], Expr]]	_node_mapc                4    t        t        |          | |fi |S r+   )r  rh  rj  s      r    rb  rb    s    T$Z v888r6   r  c               ~    | y|	 |j                   }|j                   }t        | ||      S # t        $ r d}Y w xY w)a  Build an expression from an AST.

    Parameters:
        node: The annotation node.
        parent: The parent used to resolve the name.
        parse_strings: Whether to try and parse strings as type annotations.

    Returns:
        A string or resovable name or expression.
    NFr  )moduleimports_future_annotations
ValueErrorrb  )rd  r8   r  r  s       r    get_expressionr    sV      |	B]]F !' A AAM$m<<	  	"!M	"s   . <<zD{path}:{lineno}: Failed to get expression from {node_class}: {error})r  	log_level
msg_formatc               |   	 t        | ||      S # t        $ r}|Y d}~y| j                  j                  }	 |j                  }n# t
        $ r d}Y nw xY w| j                  }|j                  j                   d| }	|j                  ||||	      }
 t        t        |j                        |
       Y d}~yd}~ww xY w)a  Safely (no exception) build a resolvable annotation.

    Parameters:
        node: The annotation node.
        parent: The parent used to resolve the name.
        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  rX   rY   relative_filepathr  r  formatr<   r   r   )rd  r8   r  r  r  r  r  r]   r  	error_strmessages              r    r  r    s    *2dF-HH 2^^,,
	!%77D 	! D	!//05':	##f[d#e(	(112s=    	B;B6B6AB6AB6AAB66B;zG{path}:{lineno}: Failed to get %s expression from {node_class}: {error}r0  )r  r  z
base classr  )r   z#str | Expr | tuple[str | Expr, ...]r   ry   rv   rw   )r&   z-Iterable[str | Expr | tuple[str | Expr, ...]]r'   r   r   ry   rv   rw   )r   z+str | bool | Expr | list[str | Expr] | Noner0   r	   rv   zstr | bool | None | list | dict)r>   r,   r0   r	   rv   rz   rQ   )rd  zast.Attributer8   Module | Classr0   r	   rv   r,   )rd  z	ast.BinOpr8   r  r0   r	   rv   r,   )rd  z
ast.BoolOpr8   r  r0   r	   rv   r,   )rd  zast.Callr8   r  r0   r	   rv   r,   )rd  zast.Comparer8   r  r0   r	   rv   r,   )rd  zast.comprehensionr8   r  r0   r	   rv   r,   )rd  zast.Constantr8   r  r  ry   r  ry   r  ry   r  ry   r0   r	   rv   r   )rd  zast.Dictr8   r  r0   r	   rv   r,   )rd  zast.DictCompr8   r  r0   r	   rv   r,   )
rd  zast.FormattedValuer8   r  r  ry   r0   r	   rv   r,   )rd  zast.GeneratorExpr8   r  r0   r	   rv   r,   )rd  z	ast.IfExpr8   r  r0   r	   rv   r,   )
rd  zast.JoinedStrr8   r  r  ry   r0   r	   rv   r,   r+   )
rd  zast.keywordr8   r  r   r   r0   r	   rv   r,   )rd  z
ast.Lambdar8   r  r0   r	   rv   r,   )rd  zast.Listr8   r  r0   r	   rv   r,   )rd  zast.ListCompr8   r  r0   r	   rv   r,   )rd  zast.Namer8   r  r0   r	   rv   r,   )rd  zast.NamedExprr8   r  r0   r	   rv   r,   )rd  zast.Setr8   r  r0   r	   rv   r,   )rd  zast.SetCompr8   r  r0   r	   rv   r,   )rd  z	ast.Slicer8   r  r0   r	   rv   r,   )rd  zast.Starredr8   r  r0   r	   rv   r,   )rd  zast.Subscriptr8   r  r  ry   r  ry   r  ry   r0   r	   rv   r,   )
rd  z	ast.Tupler8   r  r  ry   r0   r	   rv   r,   )rd  zast.UnaryOpr8   r  r0   r	   rv   r,   )rd  z	ast.Yieldr8   r  r0   r	   rv   r,   )rd  zast.YieldFromr8   r  r0   r	   rv   r,   )rd  zast.ASTr8   r  r0   r	   rv   r,   )rd  ast.AST | Noner8   r  r  bool | Nonerv   r   )rd  r  r8   r  r  r  r  zLogLevel | Noner  r   rv   r   )
__future__r   r  sysdataclassesr   r   r;   	functoolsr   	itertoolsr   typingr   r	   r
   _griffe.agents.nodes.parametersr   _griffe.enumerationsr   r   _griffe.exceptionsr   _griffe.loggerr   collections.abcr   r   r   pathlibr   _griffe.modelsr   r   r   r)   r/   r-   r@   r   version_infor,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r,  r/  r3  r6  r9  rj   rD  rI  rL  rP  InvertNotUAddUSubr  AddBitAndBitOrBitXorDivFloorDivLShiftMatMultModMultPowRShiftSubrg  AndOrrm  EqNotEqLtLtEGtGtEIsIsNotInNotInrz  re  rk  rn  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  rb  r  r  r  _msg_formatget_annotationsafe_get_annotationget_base_classsafe_get_base_classget_conditionsafe_get_conditionrQ   r6   r    <module>r3     s   # 
 
 ! +  ! / / : 8 2 !<<, JN 	  	.;.. 	.
 . 8 % $& %w#OG YV YV YVz &d&o&'(D '( ''(V &d&o&1 1 '1" &d&o&	G 	G '	G &d&o&t  '* &d&o&k$ k 'k" &d&o&A A 'A2 &d&o&4  ' &d&o&t  '& &d&o&4  '( &d&o&54 5 '5 &d&o&	D 	 '	 &d&o&:t : ': &d&o&2 2 '2& &d&o&	D 	 '	 &d&o&$1$ $1 '$1P &d&o&1 1 '1 &d&o&1T 1 '1 &d&o&&0 &0 '&0T &d&o&	t 	 '	 &d&o&4  '" 'e''Mt M (Mb &d&o&D  '" &d&o&
D 
 '
 &d&o&	d 	 '	 &d&o&$  '" &d&o&4 4 '4, &d&o&(D ( '(< &d&o&  '& &d&o&
1$ 
1 '
1 &d&o&
5 
5 '
5 &d&o&1D 1 '1 JJGGV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	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 	`
`` 	`
 ` 
`][?@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 Xt<\) 
 u=\) 
 e<[( r6   