o
    i                     @  s
  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	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rid dlmZmZmZ d dlmZ d dl m!Z!m"Z"m#Z# G dd de	Z$dde$j%dd4ddZ&ddd5d#d$Z'd6d)d*Z(d7d.d/Z)d0d1d2d3d4Z*eG d5d, d,Z+eddd6G d7d8 d8e+Z,eddd6G d9d: d:e+Z-eddd6G d;d< d<e+Z.eddd6G d=d> d>e+Z/eddd6G d?d@ d@e+Z0eddd6G dAdB dBe+Z1eddd6G dCdD dDe+Z2eddd6G dEdF dFe+Z3eddd6G dGdH dHe+Z4eddd6G dIdJ dJe+Z5eddd6G dKdL dLe+Z6eddd6G dMdN dNe+Z7eddd6G dOdP dPe+Z8eddd6G dQdR dRe+Z9eddd6G dSdT dTe+Z:eddd6G dUdV dVe+Z;eddd6G dWdX dXe+Z<eddd6G dYdZ dZe+Z=eddd6G d[d\ d\e+Z>eddd6G d]d^ d^e+Z?eddd6G d_d` d`e+Z@eddd6G dadb dbe+ZAeddd6G dcdd dde+ZBeddd6G dedf dfe+ZCeddd6G dgdh dhe+ZDeddd6G didj dje+ZEeddd6G dkdl dle+ZFeddd6G dmdn dne+ZGeddd6G dodp dpe+ZHeddd6G dqdr dre+ZIeddd6G dsdt dte+ZJejKduejLdvejMdwejNdxiZOejPdwejQdyejRdzejSd{ejTd|ejUd}ejVd~ejWdejXdejYdejZdej[dej\dxiZ]ej^dej_diZ`ejadejbdejcdejddejedejfdejgdejhdejidejjdi
Zki e@dd e2dd e9dd e6dd e>dd eGdd eCdd e3dd e?dd eDdd e4dd e,dd eFdd e/dd eHdd e-dd e.dd e0dd e8dd eAdd e=dd e7dd e;dd e<dd eIdd eJdd e1dd e5dd e:dd eBdd eEdd iZld8ddZmd9ddZnd:ddZod;ddZpd<ddZqd=ddĄZrd>ddǄZsdddddȜd?ddτZtd@dd҄ZudAddՄZvdd֜dBddلZwdCdd܄ZxdDdd߄ZydddEddZzdFdGddZ{dHddZ|dIddZ}dJddZ~dFdKddZdLddZdMddZdNddZdOddZdPddZdddddQd	d
ZddddRddZdSddZdTddZdUddZG dd deZi ejenejeoejepejeqejerejesejetejeuejevejewejexejeyejezeje{eje|eje}eje~ejeejeejeejeejeejeejeejeejeejeejeiZded< dVddZddd dWd#d$Zddejd%d&dXd+d,Zd-Zeedd.Zeeded/ d0Zeedd.Zeeded1 d0Zeedd.Zeeded2 d0Zeedd.Zeeded3 d0ZdS (Y      )annotationsN)	dataclass)fields)IntEnumauto)partial)TYPE_CHECKINGAnyProtocol)get_parameters)LogLevelParameterKind)NameResolutionError)logger)IterableIteratorSequence)Path)ClassFunctionModulec                   @  s   e Zd Ze Ze Ze Ze Ze Ze Z	e Z
e Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze ZdS )_OperatorPrecedenceN)__name__
__module____qualname__r   NONEYIELDASSIGNSTARREDLAMBDAIF_ELSEORANDNOTCOMP_MEMB_IDBIT_ORBIT_XORBIT_ANDLEFT_RIGHT_SHIFTADD_SUBMUL_DIV_REMAINPOS_NEG_BIT_NOTEXPONENTAWAITCALL_ATTRIBUTEATOMIC r0   r0   b/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/griffe/_internal/expressions.pyr      s,    
r   TF)flatis_leftouter_precedenceelement#str | Expr | tuple[str | Expr, ...]r2   boolr3   r4   returnIterator[str | Expr]c                c  s    t | trct| }d}||k rd}n%||kr8t | tp%t | to%| jdk}|r-|r,d}nt | ttfr8|s8d}|rQdV  |rI| jddE d H  n| V  dV  d S |r^| jddE d H  d S | V  d S t | trz| D ]}t	||||dE d H  qjd S | V  d S )NFT**(r2   )r2   r4   r3   )

isinstanceExpr_get_precedence	ExprIfExp	ExprBinOpoperator
ExprBoolOpiteratetuple_yield)r5   r2   r3   r4   element_precedenceneeds_parensis_right_assocelemr0   r0   r1   rH   B   s<   





rH   r<   elements-Iterable[str | Expr | tuple[str | Expr, ...]]joint
str | Exprc                c  sx    t | }ztt||tjdE dH  W n
 ty   Y dS w |D ]}t||tjdE dH  t||tjdE dH  q!dS )zApply a separator between elements.

    The caller is assumed to provide their own grouping
    (e.g. lists, tuples, slice) and will prevent parentheses from being added.
    r2   r4   N)iterrH   nextr   r   StopIteration)rM   rO   r2   itr5   r0   r0   r1   _joinm   s   rV   +str | bool | Expr | list[str | Expr] | Nonekwargsr	   str | bool | None | list | dictc                   s:   t | trt| fi  S t | tr fdd| D S | S )Nc                   s   g | ]
}t |fi  qS r0   )_field_as_dict.0rL   rX   r0   r1   
<listcomp>   s    z"_field_as_dict.<locals>.<listcomp>)r?   r@   _expr_as_dictlist)r5   rX   r0   r]   r1   rZ      s
   

rZ   
expressionr@   dict[str, Any]c                   s2    fddt t dd dD } j|d< |S )Nc                   s2   i | ]}|j d kr|j tt |j fi qS parent)namerZ   getattr)r\   fieldra   rX   r0   r1   
<dictcomp>   s
    
z!_expr_as_dict.<locals>.<dictcomp>c                 S  s   | j S N)re   )fr0   r0   r1   <lambda>       z_expr_as_dict.<locals>.<lambda>)keycls)sorted	getfields	classname)ra   rX   r   r0   rh   r1   r_      s
   
r_   rG   dictr`   set)ztyping.Tupleztyping.Dictztyping.Listz
typing.Setc                   @  s   e Zd ZdZd'ddZd(ddZd	d
d)ddZd*ddZd+ddZe	d'ddZ
e	d'ddZe	d'ddZe	d'ddZe	d,ddZe	d,d d!Ze	d,d"d#Ze	d,d$d%Zd&S )-r@   zBase class for expressions.r8   strc                 C  s   d dd | jddD S )N c                 s  s$    | ]}t |tr|n|jV  qd S rj   )r?   ru   re   r[   r0   r0   r1   	<genexpr>      " zExpr.__str__.<locals>.<genexpr>Tr<   )joinrF   selfr0   r0   r1   __str__   s   zExpr.__str__r9   c                 c  s    | j ddE dH  dS )z.Iterate on the expression syntax and elements.Fr<   N)rF   rz   r0   r0   r1   __iter__   s   zExpr.__iter__Tr<   r2   r7   c                c  s    dE dH  dS )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.
        r0   Nr0   r{   r2   r0   r0   r1   rF      s   zExpr.iteratec                 C  s   | S )zModernize the expression.

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

        Returns:
            A modernized expression.
        r0   rz   r0   r0   r1   	modernize   s   zExpr.modernizerX   r	   rb   c                 K  s   t | fi |S )zReturn the expression as a dictionary.

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


        Returns:
            A dictionary.
        )r_   )r{   rX   r0   r0   r1   as_dict   s   
zExpr.as_dictc                 C     | j jS )zThe expression class name.)	__class__r   rz   r0   r0   r1   rr         zExpr.classnamec                 C     t | S z%Path of the expressed name/attribute.ru   rz   r0   r0   r1   path   r   z	Expr.pathc                 C  r   r   r   rz   r0   r0   r1   canonical_path   r   zExpr.canonical_pathc                 C  s$   | j ddd ddd dS )z/Name of the expressed name/attribute/parameter..   r;   r=   )r   rsplitsplitremovesuffixrz   r0   r0   r1   canonical_name   s   $zExpr.canonical_namec                 C     t | to	| jdkS )z4Whether this attribute is annotated with `ClassVar`.ClassVarr?   ExprSubscriptr   rz   r0   r0   r1   is_classvar      zExpr.is_classvarc                 C  s   t | to| j dkS )z#Whether this expression is a tuple.rG   )r?   r   r   lowerrz   r0   r0   r1   is_tuple   s   zExpr.is_tuplec                 C  r   )z'Whether this expression is an iterator.r   r   rz   r0   r0   r1   is_iterator   r   zExpr.is_iteratorc                 C  r   )z'Whether this expression is a generator.	Generatorr   rz   r0   r0   r1   is_generator   r   zExpr.is_generatorNr8   ru   )r8   r9   r2   r7   r8   r9   )r8   r@   )rX   r	   r8   rb   r8   r7   )r   r   r   __doc__r|   r}   rF   r   r   propertyrr   r   r   r   r   r   r   r   r0   r0   r0   r1   r@      s.    




)eqslotsc                   @  sx   e Zd ZU dZded< 	 dddd
dZd ddZd!ddZed"ddZ	ed#ddZ
ed$ddZed$ddZdS )%ExprAttributezAttributes like `a.b`.zlist[str | Expr]valuesTr<   r2   r7   r8   r9   c                c  sX    t | }t| jd ||ddE d H  | jdd  D ]}dV  t|||dE d H  qd S )Nr   Tr>   r   r   rQ   )rA   rH   r   )r{   r2   
precedencevaluer0   r0   r1   rF     s   zExprAttribute.iterateExprName | ExprAttributec                 C  s$   t | j }rt|| jjdS | S Nrc   )_modern_typesgetr   ExprNamelastrd   r{   modernr0   r0   r1   r     s   zExprAttribute.modernizer   r   Nonec                 C  s"   |j du r	| j|_ | j| dS )zpAppend a name to this attribute.

        Parameters:
            value: The expression name to append.
        N)rd   r   r   append)r{   r   r0   r0   r1   r     s   
zExprAttribute.appendc                 C  
   | j d S )z/The last part of this attribute (on the right).r   r   rz   r0   r0   r1   r     s   
zExprAttribute.lastrP   c                 C  r   )z/The first part of this attribute (on the left).r   r   rz   r0   r0   r1   first$     
zExprAttribute.firstru   c                 C  r   )zThe path of this attribute.)r   r   rz   r0   r0   r1   r   )  r   zExprAttribute.pathc                 C  r   )z%The canonical path of this attribute.)r   r   rz   r0   r0   r1   r   .  r   zExprAttribute.canonical_pathNr   )r8   r   )r   r   r8   r   r8   r   )r8   rP   r   )r   r   r   r   __annotations__rF   r   r   r   r   r   r   r   r0   r0   r0   r1   r      s   
 


r   c                   @  s@   e Zd ZU dZded< 	 ded< 	 ded< 	 dddddZdS )rC   zBinary operations like `a + b`.rP   leftru   rD   rightTr<   r2   r7   r8   r9   c                c  st    t | }|}| jdkrt| jtrt|d }t| j||ddE d H  d| j dV  t| j||ddE d H  d S )Nr:   r   Tr>    F)rA   rD   r?   r   ExprUnaryOpr   rH   r   )r{   r2   r   right_precedencer0   r0   r1   rF   ?  s   zExprBinOp.iterateNr   r   r   r   r   r   rF   r0   r0   r0   r1   rC   4     
 rC   c                   @  6   e Zd ZU dZded< 	 ded< 	 dddddZdS )rE   z!Boolean operations like `a or b`.ru   rD   Sequence[str | Expr]r   Tr<   r2   r7   r8   r9   c                c  sb    t | }t| j}tt|||ddE d H  |D ]}d| j dV  t|||ddE d H  qd S )NTr>   r   F)rA   rR   r   rH   rS   rD   )r{   r2   r   rU   r   r0   r0   r1   rF   S  s   
zExprBoolOp.iterateNr   r   r0   r0   r0   r1   rE   J     
 rE   c                   @  sD   e Zd ZU dZded< 	 ded< 	 eddd	Zd
ddddZdS )ExprCallzCalls like `f()`.r@   functionr   	argumentsr8   ru   c                 C  r   z1The canonical path of this subscript's left part.)r   r   rz   r0   r0   r1   r   e  r   zExprCall.canonical_pathTr<   r2   r7   r9   c                c  sB    t | j|t| dE d H  dV  t| jd|dE d H  dV  d S )NrQ   r;   , r<   r=   )rH   r   rA   rV   r   r~   r0   r0   r1   rF   j  s
   
zExprCall.iterateNr   r   )r   r   r   r   r   r   r   rF   r0   r0   r0   r1   r   \  s   
 r   c                   @  s@   e Zd ZU dZded< 	 ded< 	 ded< 	 dd	dddZdS )ExprComparezComparisons like `a > b`.rP   r   zSequence[str]	operatorsr   comparatorsTr<   r2   r7   r8   r9   c                c  s`    t | }t| j||ddE d H  t| j| jD ]\}}d| dV  t|||dE d H  qd S )NTr>   r   rQ   )rA   rH   r   zipr   r   )r{   r2   r   opcompr0   r0   r1   rF   |  s   zExprCompare.iterateNr   r   r0   r0   r0   r1   r   q  r   r   c                   @  sN   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dZdS )ExprComprehensionz(Comprehensions like `a for b in c if d`.rP   targetiterabler   
conditionsFr7   is_asyncTr<   r2   r8   r9   c                c  sl    | j rdV  dV  t| j|dE d H  dV  t| j|dE d H  | jr4dV  t| jd|dE d H  d S d S )Nzasync zfor r<   z in  if )r   rH   r   r   r   rV   r~   r0   r0   r1   rF     s   zExprComprehension.iterateNr   )r   r   r   r   r   r   rF   r0   r0   r0   r1   r     s   
 r   c                   @  ,   e Zd ZU dZded< 	 dddd
dZdS )ExprConstantzConstants like `"a"` or `1`.ru   r   Tr<   r2   r7   r8   r9   c                c  s    | j V  d S rj   )r   r~   r0   r0   r1   rF     s   zExprConstant.iterateNr   r   r0   r0   r0   r1   r     
   
 r   c                   @  r   )ExprDictzDictionaries like `{"a": 0}`.zSequence[str | Expr | None]keysr   r   Tr<   r2   r7   r8   r9   c                c  s:    dV  t dd t| j| jD d|dE d H  dV  d S )N{c                 s  s*    | ]\}}|d u rdn|d|fV  qd S )Nr   : r0   )r\   rn   r   r0   r0   r1   rw     s   ( z#ExprDict.iterate.<locals>.<genexpr>r   r<   })rV   r   r   r   r~   r0   r0   r1   rF     s   
zExprDict.iterateNr   r   r0   r0   r0   r1   r     r   r   c                   @  s@   e Zd ZU dZded< 	 ded< 	 ded< 	 dddddZdS )ExprDictCompz0Dict comprehensions like `{k: v for k, v in a}`.rP   rn   r   Sequence[Expr]
generatorsTr<   r2   r7   r8   r9   c                c  s\    dV  t | j|dE d H  dV  t | j|dE d H  dV  t| jd|dE d H  dV  d S )Nr   r<   r   r   r   )rH   rn   r   rV   r   r~   r0   r0   r1   rF     s   
zExprDictComp.iterateNr   r   r0   r0   r0   r1   r     r   r   c                   @  r   )ExprExtSlicez Extended slice like `a[x:y, z]`.r   dimsTr<   r2   r7   r8   r9   c                c  s    t | jd|dE d H  d S )Nr   r<   )rV   r   r~   r0   r0   r1   rF     s   zExprExtSlice.iterateNr   r   r0   r0   r0   r1   r     r   r   c                   @  r   )ExprFormattedz Formatted string like `{1 + 1}`.rP   r   Tr<   r2   r7   r8   r9   c                c  s*    dV  t | j|tjdE d H  dV  d S )Nr   rQ   r   )rH   r   r   r   r~   r0   r0   r1   rF     s   
zExprFormatted.iterateNr   r   r0   r0   r0   r1   r     r   r   c                   @  r   )ExprGeneratorExpz5Generator expressions like `a for b in c for d in e`.rP   r5   r   r   Tr<   r2   r7   r8   r9   c                c  s6    t | j|dE d H  dV  t| jd|dE d H  d S )Nr<   r   rH   r5   rV   r   r~   r0   r0   r1   rF     s   zExprGeneratorExp.iterateNr   r   r0   r0   r0   r1   r     r   r   c                   @  s@   e Zd ZU dZded< 	 ded< 	 ded< 	 dddddZdS )rB   z Conditions like `a if b else c`.rP   bodytestorelseTr<   r2   r7   r8   r9   c                c  s    t | }t| j||ddE d H  dV  t|d }t| j||dE d H  dV  t| jtr:| jj|dE d H  d S t| j||ddE d H  d S )	NTr>   r   r   rQ   z else r<   F)	rA   rH   r   r   r   r?   r   rB   rF   )r{   r2   r   test_outer_precedencer0   r0   r1   rF     s   zExprIfExp.iterateNr   r   r0   r0   r0   r1   rB     r   rB   c                   @  r   )ExprJoinedStrz!Joined strings like `f"a {b} c"`.r   r   Tr<   r2   r7   r8   r9   c                c  (    dV  t | jd|dE d H  dV  d S )Nzf'rv   r<   ')rV   r   r~   r0   r0   r1   rF         
zExprJoinedStr.iterateNr   r   r0   r0   r0   r1   r     r   r   c                      sZ   e Zd ZU dZded< 	 ded< 	 dZded< 	 ed fd
dZdddddZ  Z	S )ExprKeywordzKeyword arguments like `a=b`.ru   re   rP   r   NExpr | Noner   r8   c                   s(   | j r| j j d| j dS tt| jS )zPath of the expressed keyword.r;   r=   )r   r   re   superr   rz   r   r0   r1   r   A  s   zExprKeyword.canonical_pathTr<   r2   r7   r9   c                c  s(    | j V  dV  t| j|dE d H  d S )N=r<   )re   rH   r   r~   r0   r0   r1   rF   H  s   zExprKeyword.iterater   r   )
r   r   r   r   r   r   r   r   rF   __classcell__r0   r0   r   r1   r   &  s   
 r   c                   @  r   )ExprVarPositionalz,Variadic positional parameters like `*args`.r@   r   Tr<   r2   r7   r8   r9   c                c       dV  t | j|dE d H  d S )N*r<   rH   r   r~   r0   r0   r1   rF   U     zExprVarPositional.iterateNr   r   r0   r0   r0   r1   r   N  r   r   c                   @  r   )ExprVarKeywordz,Variadic keyword parameters like `**kwargs`.r@   r   Tr<   r2   r7   r8   r9   c                c  r   )Nr:   r<   r   r~   r0   r0   r1   rF   a  r   zExprVarKeyword.iterateNr   r   r0   r0   r0   r1   r   Z  r   r   c                   @  r   )
ExprLambdaz(Lambda expressions like `lambda a: a.b`.zSequence[ExprParameter]
parametersrP   r   Tr<   r2   r7   r8   r9   c                c  s,   d}d}d}t | j}dV  |rdV  t| jdD ]j\}}|jtju r'd}n,|jtju r1dV  n"|jtju r;dV  n|jtju rF|sFd}n|jtj	u rS|sSd}dV  |jtjur`|r`d}d	V  |j
V  |jr}|jtjtjfvr}d
V  t|j|dE d H  ||k rdV  qdV  t| j|tjdE d H  d S )NFlambdar   r   Tr   r:   z*, z/, r   r<   r   r   rQ   )lenr   	enumeratekindr   positional_onlyvar_positionalvar_keywordpositional_or_keywordkeyword_onlyre   defaultrH   r   r   r   )r{   r2   pos_only	pos_or_kwkw_onlylengthindex	parameterr0   r0   r1   rF   o  s@   
zExprLambda.iterateNr   r   r0   r0   r0   r1   r   f  r   r   c                   @  r   )ExprListzLists like `[0, 1, 2]`.r   rM   Tr<   r2   r7   r8   r9   c                c  r   )N[r   r<   ]rV   rM   r~   r0   r0   r1   rF     r   zExprList.iterateNr   r   r0   r0   r0   r1   r    r   r  c                   @  r   )ExprListCompz*List comprehensions like `[a for b in c]`.rP   r5   r   r   Tr<   r2   r7   r8   r9   c                c  B    dV  t | j|dE d H  dV  t| jd|dE d H  dV  d S )Nr  r<   r   r	  r   r~   r0   r0   r1   rF        
zExprListComp.iterateNr   r   r0   r0   r0   r1   r    r   r  c                   @  s   e Zd ZU dZded< 	 dZded< 	 dZded< 	 d&ddZddd'ddZd(ddZ	e
d)ddZe
d)ddZe
d*ddZe
d+ddZe
d+d d!Ze
d+d"d#Ze
d+d$d%ZdS ),r   zLThis class represents a Python object identified by a name in a given scope.ru   re   Nz1str | ExprName | Module | Class | Function | Nonerd   
str | Nonememberotherobjectr8   r7   c                 C  s   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   re   NotImplemented)r{   r  r0   r0   r1   __eq__  s   
zExprName.__eq__Tr<   r2   Iterator[ExprName]c                c  s    | V  d S rj   r0   r~   r0   r0   r1   rF     s   
zExprName.iteratec                 C  s"   t | j }rt|| jdS | S r   )r   r   r   r   rd   r   r0   r0   r1   r     s   zExprName.modernizec                 C  s&   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.
        r   )r?   rd   r   r   re   rz   r0   r0   r1   r     s   zExprName.pathc                 C  s   | j du r| jS t| j tr| j j d| j S t| j tr'| j  d| j S | j j| j| j }z|	| jW S  t
yD   | j Y S w )z2The canonical name (resolved one, not alias name).Nr   )rd   re   r?   r   r   ru   membersr   r  resolver   )r{   rd   r0   r0   r1   r     s   

zExprName.canonical_pathModule | Class | Nonec                 C  s:   z| j j| j | j W S  ty   | j j| j  Y S w )z(The resolved object this name refers to.)rd   modules_collectionr  re   	Exceptionresolvedrz   r0   r0   r1   r    s
   zExprName.resolvedc                 C  s4   z| j j}W n
 ty   Y dS w tdd |D S )z3Whether this name resolves to an enumeration class.Fc                 s  s$    | ]}t |to|jd kV  qdS )z	enum.EnumN)r?   r@   r   )r\   baser0   r0   r1   rw     rx   z)ExprName.is_enum_class.<locals>.<genexpr>)r  basesr  any)r{   r  r0   r0   r1   is_enum_class  s   zExprName.is_enum_classc                 C  s    z| j jW S  ty   Y dS w )z6Whether this name resolves to an enumeration instance.F)rd   r  r  rz   r0   r0   r1   is_enum_instance  s
   
zExprName.is_enum_instancec                 C  s*   z
| j dko	| jjW S  ty   Y dS w )z3Whether this name resolves to an enumeration value.r   F)re   rd   r  r  rz   r0   r0   r1   is_enum_value  s
   zExprName.is_enum_valuec                 C  s
   d| j v S )z/Whether this name resolves to a type parameter.r  )r   rz   r0   r0   r1   is_type_parameter  r   zExprName.is_type_parameter)r  r  r8   r7   )r2   r7   r8   r  r   r   )r8   r  r   )r   r   r   r   r   rd   r  r  rF   r   r   r   r   r  r  r  r   r!  r0   r0   r0   r1   r     s2   
 

r   c                   @  r   )ExprNamedExprz+Named/assignment expressions like `a := b`.r@   r   rP   r   Tr<   r2   r7   r8   r9   c                c  s4    t | j|dE d H  dV  t | j|dE d H  d S )Nr<   z := )rH   r   r   r~   r0   r0   r1   rF     s   zExprNamedExpr.iterateNr   r   r0   r0   r0   r1   r"    r   r"  c                   @  sF   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
< dS )ExprParameterz4Parameters in function signatures like `a: int = 0`.ru   re   r   r   Nr   
annotationstr | Expr | Noner   )
r   r   r   r   r   r   r   r   r$  r   r0   r0   r0   r1   r#    s   
 r#  c                   @  r   )ExprSetzSets like `{0, 1, 2}`.r   rM   Tr<   r2   r7   r8   r9   c                c  r   )Nr   r   r<   r   r
  r~   r0   r0   r1   rF   1  r   zExprSet.iterateNr   r   r0   r0   r0   r1   r&  *  r   r&  c                   @  r   )ExprSetCompz)Set comprehensions like `{a for b in c}`.rP   r5   r   r   Tr<   r2   r7   r8   r9   c                c  r  )Nr   r<   r   r   r   r~   r0   r0   r1   rF   @  r  zExprSetComp.iterateNr   r   r0   r0   r0   r1   r'  7  r   r'  c                   @  sL   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dZdS )	ExprSlicezSlices like `[a:b:c]`.Nr%  r   upperstepTr<   r2   r7   r8   r9   c                c  sp    | j d urt| j |dE d H  dV  | jd ur"t| j|dE d H  | jd ur6dV  t| j|dE d H  d S d S )Nr<   :)r   rH   r)  r*  r~   r0   r0   r1   rF   S  s   


zExprSlice.iterater   )	r   r   r   r   r   r   r)  r*  rF   r0   r0   r0   r1   r(  H  s   
 r(  c                   @  sj   e Zd ZU dZded< 	 ded< 	 dddddZedddZdddZe	dddZ
e	dddZdS ) r   zSubscripts like `a[b]`.rP   r   sliceTr<   r2   r7   r8   r9   c                c  sD    t | j|t| dE d H  dV  t | j|tjdE d H  dV  d S )NrQ   r  r	  )rH   r   rA   r,  r   r   r~   r0   r0   r1   rF   g  s
   
zExprSubscript.iteraterM   r   r   ru   rC   c                 C  s   t | dkr#| \}}t|tr| }t|tr| }t|||dS tj| d d |d}| d }t|tr;| }t|||dS )N   r   rD   r   r   r   )r   r?   r@   r   rC   r   	_to_binop)rM   r   r   r   r0   r0   r1   r0  n  s   


zExprSubscript._to_binopExprBinOp | ExprSubscriptc                 C  s   | j dkr| j| jjddS | j dkr(t| jtr| jn| j }t|dddS tt| j	tr2| j	n| j	 t| jtrA| jdS | j dS )Nztyping.Union|r/  ztyping.Optionalr   r.  )r   r,  )
r   r0  r,  rM   r?   ru   r   rC   r   r   )r{   r   r0   r0   r1   r   ~  s   

zExprSubscript.modernizec                 C     t | jtr	| jS | jjS )z'The path of this subscript's left part.)r?   r   ru   r   rz   r0   r0   r1   r        zExprSubscript.pathc                 C  r3  r   )r?   r   ru   r   rz   r0   r0   r1   r     r4  zExprSubscript.canonical_pathNr   )rM   r   r   ru   r8   rC   )r8   r1  r   )r   r   r   r   r   rF   staticmethodr0  r   r   r   r   r0   r0   r0   r1   r   ^  s   
 
r   c                   @  sD   e Zd ZU dZded< 	 dZded< 	 dddddZdddZdS )	ExprTuplezTuples like `(0, 1, 2)`.r   rM   Fr7   implicitTr<   r2   r8   r9   c                c  sL    | j sdV  t| jd|dE d H  t| jdkrdV  | j s$dV  d S d S )Nr;   r   r<   r   ,r=   )r7  rV   rM   r   r~   r0   r0   r1   rF     s   
zExprTuple.iteratec                 C  s   t dd | jD | jdS )Nc                 S  s"   g | ]}t |tr|n| qS r0   )r?   ru   r   r\   elr0   r0   r1   r^        " z'ExprTuple.modernize.<locals>.<listcomp>)rM   r7  )r6  rM   r7  rz   r0   r0   r1   r     s   zExprTuple.modernizeNr   )r8   r6  )r   r   r   r   r   r7  rF   r   r0   r0   r0   r1   r6    s   
 	r6  c                   @  r   )r   zUnary operations like `-1`.ru   rD   rP   r   Tr<   r2   r7   r8   r9   c                c  s8    | j V  | j dkrdV  t| j|t| dE d H  d S )Nnotr   rQ   )rD   rH   r   rA   r~   r0   r0   r1   rF     s
   
zExprUnaryOp.iterateNr   r   r0   r0   r0   r1   r     r   r   c                   @  s0   e Zd ZU dZdZded< 	 dddddZdS )	ExprYieldz Yield statements like `yield a`.Nr%  r   Tr<   r2   r7   r8   r9   c                c  s4    dV  | j d urdV  t| j |dE d H  d S d S )Nyieldr   r<   )r   rH   r~   r0   r0   r1   rF     s   
zExprYield.iterater   )r   r   r   r   r   r   rF   r0   r0   r0   r1   r=    s
   
 r=  c                   @  r   )ExprYieldFromz%Yield statements like `yield from a`.rP   r   Tr<   r2   r7   r8   r9   c                c  r   )Nzyield from r<   r   r~   r0   r0   r1   rF     r   zExprYieldFrom.iterateNr   r   r0   r0   r0   r1   r?    r   r?  ~r<  +-&r2  ^///<<@%r   r:   >>andorz==z!=<z<=>z>=iszis notinznot inc                 C     t jS rj   r   r/   _r0   r0   r1   rl     rm   rl   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl   	  rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl   
  rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rR  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   r   r.   rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rU  rS  r0   r0   r1   rl     rm   c                 C  rQ  rj   rU  rS  r0   r0   r1   rl     rm   c                 C  s   dt ji| jt jS )Nr<  )r   r#   r   rD   r+   er0   r0   r1   rl     s    c                 C  s@   t jt jt jt jt jt jt jt jt jt jt jt jt jd| j S )N)r:   r   rH  rE  rF  rI  rA  rB  rG  rJ  rC  rD  r2  )	r   r,   r*   r)   r(   r'   r&   r%   rD   rV  r0   r0   r1   rl     s    c                 C  s   t jt jd| j S )N)rK  rL  )r   r"   r!   rD   rV  r0   r0   r1   rl   '  s    c                 C  rQ  rj   )r   r$   rS  r0   r0   r1   rl   (  rm   c                 C  rQ  rj   )r   r    rS  r0   r0   r1   rl   )  rm   c                 C  rQ  rj   )r   r   rS  r0   r0   r1   rl   *  rm   c                 C  rQ  rj   r   r   rS  r0   r0   r1   rl   +  rm   c                 C  rQ  rj   rX  rS  r0   r0   r1   rl   -  rm   c                 C  rQ  rj   r   r   rS  r0   r0   r1   rl   .  rm   c                 C  rQ  rj   rY  rS  r0   r0   r1   rl   /  rm   c                 C  rQ  rj   r   r   rS  r0   r0   r1   rl   0  rm   c                 C  rQ  rj   rZ  rS  r0   r0   r1   rl   1  rm   c                 C  rQ  rj   r   r   rS  r0   r0   r1   rl   4  rm   c                 C  rQ  rj   r[  rS  r0   r0   r1   rl   5  rm   c                 C  rQ  rj   r[  rS  r0   r0   r1   rl   6  rm   c                 C  rQ  rj   r[  rS  r0   r0   r1   rl   7  rm   c                 C  rQ  rj   r[  rS  r0   r0   r1   rl   8  rm   exprc                 C  s   t t| dd | S )Nc                 S  rQ  rj   r[  rS  r0   r0   r1   rl   =  rm   z!_get_precedence.<locals>.<lambda>)_precedence_mapr   type)r\  r0   r0   r1   rA   <     rA   nodeast.Attributerd   Module | Classc                 K  s   t | j|fi |}t|tr|t| j |S t|tr(t|t| j|gS t|tr7t|t| jdgS t|t| jgS )Nru   )_buildr   r?   r   r   r   attrru   )r`  rd   rX   r   r0   r0   r1   _build_attribute@  s   


re  	ast.BinOpc                 K  s6   t t| j|fi |tt| j t| j|fi |S rj   )rC   rc  r   _binary_op_mapr^  r   r   r`  rd   rX   r0   r0   r1   _build_binopL  s
   ri  
ast.BoolOpc                   s&   t tt| j  fdd| jD S )Nc                      g | ]}t |fi  qS r0   rc  r\   r   rX   rd   r0   r1   r^   W      z!_build_boolop.<locals>.<listcomp>)rE   _bool_op_mapr^  r   r   rh  r0   rn  r1   _build_boolopT  s   rq  ast.Callc                   sT   t | jfi  fdd| jD } fdd| jD }t g ||S )Nc                   rk  r0   rl  )r\   argrn  r0   r1   r^   ]  ro  z_build_call.<locals>.<listcomp>c                   s"   g | ]}t |fd  iqS r   rl  )r\   kwargr   rX   rd   r0   r1   r^   ^  r;  )rc  funcargskeywordsr   )r`  rd   rX   positional_argskeyword_argsr0   rv  r1   _build_call[  s   r|  ast.Comparec                   s:   t t| jfi  dd | jD  fdd| jD S )Nc                 S  s   g | ]}t t| qS r0   )_compare_op_mapr^  )r\   r   r0   r0   r1   r^   e  s    z"_build_compare.<locals>.<listcomp>c                   rk  r0   rl  )r\   r   rn  r0   r1   r^   f  ro  )r   rc  r   opsr   rh  r0   rn  r1   _build_compareb  s
   r  ast.comprehensionc                   sL   t t| jfddi t| jfi   fdd| jD t| jdS )Ncompr_targetTc                   rk  r0   rl  )r\   	conditionrn  r0   r1   r^   n  ro  z(_build_comprehension.<locals>.<listcomp>)r   )r   rc  r   rR   ifsr7   r   rh  r0   rn  r1   _build_comprehensionj  s   r  )in_formatted_strin_joined_strparse_stringsliteral_stringsast.Constantr  r  r  r  c                K  s   t | jtr9|r|s| jS |r9|s9zt| jddtjdd}W n ty.   td| j Y nw t	|j
|fi |S tddd it| jt| jS )	Nevalz<string-annotation>r   )modefilenameflagsoptimizezTried and failed to parse %r as Python code, falling back to using it as a string literal (postponed annotations might help: https://peps.python.org/pep-0563/).c                 S  s   dS )Nz...r0   rS  r0   r0   r1   rl         z!_build_constant.<locals>.<lambda>)r?   r   ru   compileastPyCF_ONLY_ASTSyntaxErrorr   debugrc  r   r^  r   repr)r`  rd   r  r  r  r  rX   parsedr0   r0   r1   _build_constants  s(   

$r  ast.Dictc                   s.   t  fdd| jD  fdd| jD S )Nc                   s*   g | ]}|d u r
d nt |fi  qS rj   rl  )r\   rn   rn  r0   r1   r^     s   * z_build_dict.<locals>.<listcomp>c                   rk  r0   rl  rm  rn  r0   r1   r^     ro  )r   r   r   rh  r0   rn  r1   _build_dict  s   r  ast.DictCompc                   s>   t t| jfi  t| jfi   fdd| jD S )Nc                   rk  r0   rl  r\   genrn  r0   r1   r^     ro  z#_build_dictcomp.<locals>.<listcomp>)r   rc  rn   r   r   rh  r0   rn  r1   _build_dictcomp  s
   r  )r  ast.FormattedValuec                K  s   t t| j|fddi|S )Nr  T)r   rc  r   )r`  rd   r  rX   r0   r0   r1   _build_formatted  s   r  ast.GeneratorExpc                   ,   t t| jfi   fdd| jD S )Nc                   rk  r0   rl  r  rn  r0   r1   r^     ro  z'_build_generatorexp.<locals>.<listcomp>)r   rc  eltr   rh  r0   rn  r1   _build_generatorexp  s   r  	ast.IfExpc                 K  s<   t t| j|fi |t| j|fi |t| j|fi |S rj   )rB   rc  r   r   r   rh  r0   r0   r1   _build_ifexp  s
   r  )r  ast.JoinedStrc                     t  fdd| jD S )Nc                   s"   g | ]}t |fd di qS )r  Trl  rm  rn  r0   r1   r^     r;  z$_build_joinedstr.<locals>.<listcomp>)r   r   )r`  rd   r  rX   r0   rn  r1   _build_joinedstr  s   r  ast.keywordr   r   c                 K  sB   | j d u rtt| j|fi |S t| j t| j|fi ||dS )Nrt  )rs  r   rc  r   r   )r`  rd   r   rX   r0   r0   r1   _build_keyword  s   
 r  
ast.Lambdac                   s0   t  fddt| jD t| j fi |dS )Nc                   s<   g | ]\}}}}t ||d t|tr|nt| dddqS )NF)rd   r  )re   r   r$  r   )r#  r?   ru   safe_get_expression)r\   re   rT  r   r   rc   r0   r1   r^     s    
	z!_build_lambda.<locals>.<listcomp>)r   r   )r   r   rx  rc  r   rh  r0   rc   r1   _build_lambda  s   
	r  ast.Listc                   r  )Nc                   rk  r0   rl  r9  rn  r0   r1   r^     ro  z_build_list.<locals>.<listcomp>)r  eltsrh  r0   rn  r1   _build_list     r  ast.ListCompc                   r  )Nc                   rk  r0   rl  r  rn  r0   r1   r^     ro  z#_build_listcomp.<locals>.<listcomp>)r  rc  r  r   rh  r0   rn  r1   _build_listcomp     ,r  ast.Namer  r  c                 K  s   t | j||S rj   )r   id)r`  rd   r  rX   r0   r0   r1   _build_name  s   r  ast.NamedExprc                 K  s*   t t| j|fi |t| j|fi |S rj   )r"  rc  r   r   rh  r0   r0   r1   _build_named_expr  s   *r  ast.Setc                   r  )Nc                   rk  r0   rl  r9  rn  r0   r1   r^     ro  z_build_set.<locals>.<listcomp>)r&  r  rh  r0   rn  r1   
_build_set  r  r  ast.SetCompc                   r  )Nc                   rk  r0   rl  r  rn  r0   r1   r^     ro  z"_build_setcomp.<locals>.<listcomp>)r'  rc  r  r   rh  r0   rn  r1   _build_setcomp  r  r  	ast.Slicec                 K  sh   t | jd u rd n	t| j|fi || jd u rd n	t| j|fi || jd u r)d S t| j|fi |S rj   )r(  r   rc  r)  r*  rh  r0   r0   r1   _build_slice  s     r  ast.Starredc                 K     t t| j|fi |S rj   )r   rc  r   rh  r0   r0   r1   _build_starred  r_  r  r  r  subscript_sliceast.Subscriptr  c                K  st   t | j|fi |}|r)t|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  )rc  r   r?   r   r   r   r,  r   )r`  rd   r  r  r  rX   r   
slice_exprr0   r0   r1   _build_subscript  s    		
r  )r  r  	ast.Tupler  c                  s"   t  fdd| jD |p|dS )Nc                   rk  r0   rl  r9  rn  r0   r1   r^   ,  ro  z _build_tuple.<locals>.<listcomp>)r7  )r6  r  )r`  rd   r  r  rX   r0   rn  r1   _build_tuple$  s   "r  ast.UnaryOpc                 K  s$   t tt| j t| j|fi |S rj   )r   _unary_op_mapr^  r   rc  operandrh  r0   r0   r1   _build_unaryop/  s   $r  	ast.Yieldc                 K  s(   t | jd u r	d S t| j|fi |S rj   )r=  r   rc  rh  r0   r0   r1   _build_yield3  s   (r  ast.YieldFromc                 K  r  rj   )r?  rc  r   rh  r0   r0   r1   _build_yield_from7  r_  r  c                   @  s   e Zd Zddd	Zd
S )_BuildCallabler`  r	   rd   rb  rX   r8   r@   c                 K  s   d S rj   r0   )r{   r`  rd   rX   r0   r0   r1   __call__<  r  z_BuildCallable.__call__N)r`  r	   rd   rb  rX   r	   r8   r@   )r   r   r   r  r0   r0   r0   r1   r  ;  s    r  zdict[type, _BuildCallable]	_node_mapast.ASTc                K  s   t t|  | |fi |S rj   )r  r^  rh  r0   r0   r1   rc  _  r  rc  r  r  ast.AST | Nonebool | Nonec                C  sN   | du rdS |du rz|j }W n ty   d}Y nw |j }t| |||dS )aZ  Build an expression from an AST.

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

    Returns:
        A string or resovable name or expression.
    NFr  )module
ValueErrorimports_future_annotationsrc  )r`  rd   r  r  r  r0   r0   r1   get_expressionc  s   
r  zD{path}:{lineno}: Failed to get expression from {node_class}: {error})r  r  	log_level
msg_formatr  LogLevel | Noner  ru   c                C  s   z	t | |||dW S  tyY } zD|du rW Y d}~dS | jj}z|j}W n ty0   d}Y nw | j}	|jj d| }
|j||	||
d}tt	|j
| W Y d}~dS d}~ww )a5  Safely (no exception) build a resolvable annotation.

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

    Returns:
        A string or resovable name or expression.
    r  Nz<in-memory>r   )r   lineno
node_classerror)r  r  r   r   relative_filepathr  r  formatrf   r   r   )r`  rd   r  r  r  r  r  r  r   r  	error_strmessager0   r0   r1   r    s$   
r  zG{path}:{lineno}: Failed to get %s expression from {node_class}: {error})r  r$  )r  r  z
base classzclass keywordr  )
r5   r6   r2   r7   r3   r7   r4   r   r8   r9   )rM   rN   rO   rP   r2   r7   r8   r9   )r5   rW   rX   r	   r8   rY   )ra   r@   rX   r	   r8   rb   )r\  r@   r8   r   )r`  ra  rd   rb  rX   r	   r8   r@   )r`  rf  rd   rb  rX   r	   r8   r@   )r`  rj  rd   rb  rX   r	   r8   r@   )r`  rr  rd   rb  rX   r	   r8   r@   )r`  r}  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  r  r7   r  r7   r  r7   r  r7   rX   r	   r8   rP   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )
r`  r  rd   rb  r  r7   rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )
r`  r  rd   rb  r  r7   rX   r	   r8   r@   rj   )
r`  r  rd   rb  r   r   rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )
r`  r  rd   rb  r  r  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  r  r7   r  r7   r  r7   rX   r	   r8   r@   )r`  r  rd   rb  r  r7   r  r7   rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )r`  r  rd   rb  rX   r	   r8   r@   )
r`  r  rd   rb  r  r  r  r  r8   r   )r`  r  rd   rb  r  r  r  r  r  r  r  ru   r8   r   )
__future__r   r  sysdataclassesr   r   rq   enumr   r   	functoolsr   typingr   r	   r
   (griffe._internal.agents.nodes.parametersr   griffe._internal.enumerationsr   r   griffe._internal.exceptionsr   griffe._internal.loggerr   collections.abcr   r   r   pathlibr   griffe._internal.modelsr   r   r   r   r/   rH   rV   rZ   r_   r   r@   r   rC   rE   r   r   r   r   r   r   r   r   r   rB   r   r   r   r   r   r  r  r   r"  r#  r&  r'  r(  r   r6  r   r=  r?  InvertNotUAddUSubr  AddBitAndBitOrBitXorDivFloorDivLShiftMatMultModMultPowRShiftSubrg  AndOrrp  EqNotEqLtLtEGtGtEIsIsNotInNotInr~  r]  rA   re  ri  rq  r|  r  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  r   rc  r  r  r  _msg_formatget_annotationsafe_get_annotationget_base_classsafe_get_base_classget_class_keywordsafe_get_class_keywordget_conditionsafe_get_conditionr0   r0   r0   r1   <module>   sV  (/	
]
3















'


*


]





9


	
"#7'

!	
 "(