
    5'h                    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      Z/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/_griffe/expressions.pyr   r      sc     '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)   )   s{      
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   sN     '4 W///'4 ;BC4t.v.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   ss     Ij17GH::! 	

N7:uzz#BMfMMF 
 ((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"     hz$4t$))Chs   (*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   j                  dd      d   j                  d      S )z/Name of the expressed name/attribute/parameter..   ())r`   rsplitsplitremovesuffixrK   s    r    canonical_namezExpr.canonical_name   s@     ""))#q1"5;;CCBGTTUXYYr6   c                D    t        | t              xr | j                  dk(  S )z4Whether this attribute is annotated with `ClassVar`.ClassVarr   ExprSubscriptrj   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   rn   rj   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   rm   rK   s    r    is_iteratorzExpr.is_iterator   rp   r6   c                D    t        | t              xr | j                  dk(  S )z'Whether this expression is a generator.	Generatorrm   rK   s    r    is_generatorzExpr.is_generator   s!     $.U43F3F+3UUr6   Nreturnr   )rz   Iterator[str | Expr]r   boolrz   r{   )rz   r,   )r0   r	   rz   dict[str, Any]rz   r}   )rY   
__module____qualname____doc__rM   rO   r   rT   rV   propertyr=   r]   r`   rj   ro   rs   ru   rx   rQ   r6   r    r,   r,   T   s    %i, '+ &
- ' '     Z Z
 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   Nr|   )r   ExprNamerz   None)rz   r   )rz   
str | Exprry   )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Nr|   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Nr|   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   re   , rf   )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Nry   r|   )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"Nr|   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   
conditionsFr}   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.iterate4  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Nr|   )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.iterateL  s     jjs   Nr|   r   rQ   r6   r    r   r   E  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>]  s!     izsEfdE:is   r   r   })r)   zipr   r   rR   s     r    r   zExprDict.iterateZ  sL     	iSQUQZQZ\`\g\gMhi
 	
 	

 		
s   ;A	A
A	Nr|   r   rQ   r6   r    r   r   Q  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.iteratep  s`     	$((...
$**4000#D999		 	/09s3   A4A."A4A0A4$A2%
A40A42A4Nr|   r   rQ   r6   r    r   r   e  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   Nr|   r   rQ   r6   r    r   r   z  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   -+
-Nr|   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Nr|   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/Nr|   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    .,
.Nr|   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.re   rf   )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ry   r|   )
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   )')Nr|   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   Nr|   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  sg    	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.Nr|   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.iterate;  +     	4888	 	9r   Nr|   r   rQ   r6   r    r
  r
  4  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.iterateK  H     	$,,T222	#D999	 	39!   AA#AA
AANr|   r   rQ   r6   r    r  r  B  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__]  s%    eX&99

**r6   Tr   c             #     K   |  y wr+   rQ   rR   s     r    r   zExprName.iteratec  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.pathf  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_pathr  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+     cUY:dD)Pd.A.A[.PPcs   +-)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  objectrz   r}   )r   r}   rz   zIterator[ExprName]ry   )rz   zModule | Class | Noner   )rY   r   r   r   r   r8   r  r   r   r]   r`   r!  r'  r)  r+  rQ   r6   r    r   r   T  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)Nre   r   z := rf   )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Nr|   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   r2  r  rQ   r6   r    r1  r1    s;    >
I'==D-="J"!%G%r6   r1  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   Nr|   r   rQ   r6   r    r5  r5    s     ""&* r6   r5  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  Nr|   r   rQ   r6   r    r8  r8    s    3!&* r6   r8  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]`.Nr3  rr   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   :)rr   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r|   )	rY   r   r   r   rr   r   r<  r=  r   rQ   r6   r    r;  r;    s7     #E##E#"D
"&* 4r6   r;  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)rn   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   rA  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   Nr|   ry   )	rY   r   r   r   r   r   r   r]   r`   rQ   r6   r    rn   rn     sF    !
K&*    ( (r6   rn   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&   Fr}   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)Nre   r   r   rc   ,rf   )rG  r)   r&   r   rR   s     r    r   zExprTuple.iterate&  sT     }}I4888t}}"I}}I  	9s   ,A#A!3A#Nr|   )rY   r   r   r   r   rG  r   rQ   r6   r    rF  rF    s#    """HdZ&* r6   rF  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.iterate:  s$     mm$**4000s   )313Nr|   r   rQ   r6   r    rK  rK  1  s    %M&* 1r6   rK  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`.Nr3  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.iterateG  s6     ::!Idjjt444 "4s   /:8:r|   )rY   r   r   r   r   r   r   rQ   r6   r    rN  rN  @  s    *#E#&* 5r6   rN  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.iterateV  s      $**4000r   Nr|   r   rQ   r6   r    rR  rR  O  s    /&* 1r6   rR  ~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_attributerg    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   rd  r   _binary_op_maptypeopr   rf  r8   r0   s      r    _build_binoprm    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_maprj  rk  r   rd  )rf  r8   r0   r   s       r    _build_booloprp    s@    T$'']#6:kkBUv	(	(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   )rd  funcargskeywordsr   )rf  r8   r0   r   argpositional_argskwargkeyword_argss           r    _build_callry    s    dii262H@D		Jvc64V4JOJTXTaTab5F5&F8FvFbL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   rd  r   ops_compare_op_maprj  r   )rf  r8   r0   rk  comps        r    _build_comparer~    sc    tyy&+F+-1XX6rb	"6484D4DEDf	'	'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   rd  r   r#   ifsr}   r   )rf  r8   r0   	conditions       r    _build_comprehensionr    se    t{{F-f-tyy&+F+>BhhG	6	,V	,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_ASTrd  r   SyntaxErrorr   debugrj  getrepr)rf  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   rd  r   )rf  r8   r0   r7   r   s        r    _build_dictr    sZ    KO99UC&f"?"?	?U6:kkBUv	(	(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   rd  r7   r   r   rf  r8   r0   gens       r    _build_dictcompr    sY    txx*6*tzz6,V,26//B3V	&v	&B  	Cs    A)r  c               F    t        t        | j                  |fddi|      S )Nr  T)r   rd  r   )rf  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   rd  eltr   r  s       r    _build_generatorexpr    sC    txx*6*26//B3V	&v	&B B   A
c           	         t        t        | j                  |fi |t        | j                  |fi |t        | j                  |fi |      S r+   )r   rd  r   r   r   rl  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   rd  )rf  r8   r  r0   r   s        r    _build_joinedstrr    s6     [_[f[fgRW&MdMfMghhgs   1c                    | j                    t        t        | j                  |fi |      S t	        | j                   t        | j                  |fi ||      S )N)r   )ru  r   rd  r   r   )rf  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   r2  r  )r   r   )	r   r   rs  r1  r   r   safe_get_expressionrd  r   )rf  r8   r0   r3   r  r   r  s          r    _build_lambdar    s     +9*C

 

 'aw gs+  (uU

 DIIv00 

s   9A:c           
     h    t        | j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r
  eltsrd  rf  r8   r0   els       r    _build_listr  (  s+    DIIFbVB1&1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  rd  r  r   r  s       r    _build_listcompr  ,  sB    txx:6:fjfufu<v_bVC=ZSY=Z<vww<vr  c                .    t        | j                  |      S r+   )r   idrl  s      r    _build_namer  0  s    DGGV$$r6   c                n    t        t        | j                  |fi |t        | j                  |fi |      S r+   )r.  rd  r   r   rl  s      r    _build_named_exprr  4  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+   )r5  r  rd  r  s       r    
_build_setr  8  s+    499ERF2v00EFFEr  c                    t        t        | j                  |fi || j                  D cg c]  }t        ||fi | c}      S c c}w r+   )r8  rd  r  r   r  s       r    _build_setcompr  <  sB    vdhh9&9eietet;u^aF3<YRX<Y;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+   )r;  rr   rd  r<  r=  rl  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   rd  r   rl  s      r    _build_starredr  H  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  )rd  r   r   r   r   r`   rA  rn   )rf  r8   r  r  r  r0   r   rA  s           r    _build_subscriptr  L  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)rG  )rF  r  rd  )rf  r8   r  r0   r  s        r    _build_tupler  i  s0     TYYGrfR262GR^__Gs   1c                x    t        t        t        | j                           t	        | j
                  |fi |      S r+   )rK  _unary_op_maprj  rk  rd  operandrl  s      r    _build_unaryopr  s  s-    }T$'']3VDLL&5[TZ5[\\r6   c                f    t        | j                  d       S t        | j                  |fi |      S r+   )rN  r   rd  rl  s      r    _build_yieldr  w  s/    TZZ/TZZVDJJ5YRX5YZZr6   c                B    t        t        | j                  |fi |      S r+   )rR  rd  r   rl  s      r    _build_yield_fromr  {  s    

F=f=>>r6   z1dict[type, Callable[[Any, Module | Class], Expr]]	_node_mapc                4    t        t        |          | |fi |S r+   )r  rj  rl  s      r    rd  rd    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
ValueErrorrd  )rf  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   )rf  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}r2  )r  r  z
base classr  )r   z#str | Expr | tuple[str | Expr, ...]r   r}   rz   r{   )r&   z-Iterable[str | Expr | tuple[str | Expr, ...]]r'   r   r   r}   rz   r{   )r   z+str | bool | Expr | list[str | Expr] | Noner0   r	   rz   zstr | bool | None | list | dict)r>   r,   r0   r	   rz   r~   rQ   )rf  zast.Attributer8   Module | Classr0   r	   rz   r,   )rf  z	ast.BinOpr8   r  r0   r	   rz   r,   )rf  z
ast.BoolOpr8   r  r0   r	   rz   r,   )rf  zast.Callr8   r  r0   r	   rz   r,   )rf  zast.Comparer8   r  r0   r	   rz   r,   )rf  zast.comprehensionr8   r  r0   r	   rz   r,   )rf  zast.Constantr8   r  r  r}   r  r}   r  r}   r  r}   r0   r	   rz   r   )rf  zast.Dictr8   r  r0   r	   rz   r,   )rf  zast.DictCompr8   r  r0   r	   rz   r,   )
rf  zast.FormattedValuer8   r  r  r}   r0   r	   rz   r,   )rf  zast.GeneratorExpr8   r  r0   r	   rz   r,   )rf  z	ast.IfExpr8   r  r0   r	   rz   r,   )
rf  zast.JoinedStrr8   r  r  r}   r0   r	   rz   r,   r+   )
rf  zast.keywordr8   r  r   r   r0   r	   rz   r,   )rf  z
ast.Lambdar8   r  r0   r	   rz   r,   )rf  zast.Listr8   r  r0   r	   rz   r,   )rf  zast.ListCompr8   r  r0   r	   rz   r,   )rf  zast.Namer8   r  r0   r	   rz   r,   )rf  zast.NamedExprr8   r  r0   r	   rz   r,   )rf  zast.Setr8   r  r0   r	   rz   r,   )rf  zast.SetCompr8   r  r0   r	   rz   r,   )rf  z	ast.Slicer8   r  r0   r	   rz   r,   )rf  zast.Starredr8   r  r0   r	   rz   r,   )rf  zast.Subscriptr8   r  r  r}   r  r}   r  r}   r0   r	   rz   r,   )
rf  z	ast.Tupler8   r  r  r}   r0   r	   rz   r,   )rf  zast.UnaryOpr8   r  r0   r	   rz   r,   )rf  z	ast.Yieldr8   r  r0   r	   rz   r,   )rf  zast.YieldFromr8   r  r0   r	   rz   r,   )rf  zast.ASTr8   r  r0   r	   rz   r,   )rf  ast.AST | Noner8   r  r  bool | Nonerz   r   )rf  r  r8   r  r  r  r  zLogLevel | Noner  r   rz   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.  r1  r5  r8  r;  rn   rF  rK  rN  rR  InvertNotUAddUSubr  AddBitAndBitOrBitXorDivFloorDivLShiftMatMultModMultPowRShiftSubri  AndOrro  EqNotEqLtLtEGtGtEIsIsNotInNotInr|  rg  rm  rp  ry  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  rd  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>r5     s   # 
 
 ! +  ! / / : 8 2 !<<, JN 	  	.;.. 	.
 . 8 % $& %w#OG ZV ZV ZV| &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: &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   