o
    h                     @  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d1ddZ&ddd2d#d$Z'd3d)d*Z(d4d.d/Z)i Z*d0e+d1< ej,d2krde*d3< eG d4d, d,Z-ed5d5die*G d6d7 d7e-Z.ed5d5die*G d8d9 d9e-Z/ed5d5die*G d:d; d;e-Z0ed5d5die*G d<d= d=e-Z1ed5d5die*G d>d? d?e-Z2ed5d5die*G d@dA dAe-Z3ed5d5die*G dBdC dCe-Z4ed5d5die*G dDdE dEe-Z5ed5d5die*G dFdG dGe-Z6ed5d5die*G dHdI dIe-Z7ed5d5die*G dJdK dKe-Z8ed5d5die*G dLdM dMe-Z9ed5d5die*G dNdO dOe-Z:ed5d5die*G dPdQ dQe-Z;ed5d5die*G dRdS dSe-Z<ed5d5die*G dTdU dUe-Z=ed5d5die*G dVdW dWe-Z>ed5d5die*G dXdY dYe-Z?ed5d5die*G dZd[ d[e-Z@ed5d5die*G d\d] d]e-ZAed5d5die*G d^d_ d_e-ZBed5d5die*G d`da dae-ZCed5d5die*G dbdc dce-ZDed5d5die*G ddde dee-ZEed5d5die*G dfdg dge-ZFed5d5die*G dhdi die-ZGed5d5die*G djdk dke-ZHed5d5die*G dldm dme-ZIed5d5die*G dndo doe-ZJed5d5die*G dpdq dqe-ZKed5d5die*G drds dse-ZLejMdtejNduejOdvejPdwiZQejRdvejSdxejTdyejUdzejVd{ejWd|ejXd}ejYd~ejZdej[dej\dej]dej^dwiZ_ej`dejadiZbejcdejddejedejfdejgdejhdejidejjdejkdejldi
Zmi eBdd e4dd e;dd e8dd e@dd eIdd eEdd e5dd eAdd eFdd e6dd e.dd eHdd e1dd eJdd e/dd e0dd e2dd e:dd eCdd e?dd e9dd e=dd e>dd eKdd eLdd e3dd e7dd e<dd eDdd eGdd iZnd6ddZod7ddZpd8ddZqd9ddZrd:ddZsd;ddÄZtd<ddƄZudddddǜd=dd΄Zvd>ddфZwd?ddԄZxdd՜d@dd؄ZydAddۄZzdBddބZ{ddߜdCddZ|dDdEddZ}dFddZ~dGddZdHddZdDdIddZdJddZdKddZdLddZdMd dZdNddZdddddOdd	Zdd
dPddZdQddZdRddZdSddZG dd deZi 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jeejeejeejeejeejeejeejeejeejeejeejeiZde+d< dTddZddddUd!d"Zddejd#d$dVd)d*Zd+Zeedd,Zeeded- d.Zeedd,Zeeded/ d.Zeedd,Zeeded0 d.ZdS (W      )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   ]/var/www/html/openai_agents/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_   zdict[str, bool]_dataclass_opts)   
   slotsc                   @  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?   rw   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   r|   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   r|   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   r|   r0   r0   r1   rr         zExpr.classnamec                 C     t | S z%Path of the expressed name/attribute.rw   r|   r0   r0   r1   path   r   z	Expr.pathc                 C  r   r   r   r|   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removesuffixr|   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   r|   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   lowerr|   r0   r0   r1   is_tuple   s   zExpr.is_tuplec                 C  r   )z'Whether this expression is an iterator.r   r   r|   r0   r0   r1   is_iterator   r   zExpr.is_iteratorc                 C  r   )z'Whether this expression is a generator.	Generatorr   r|   r0   r0   r1   is_generator   r   zExpr.is_generatorNr8   rw   )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.    




eqc                   @  sn   e Zd ZU dZded< 	 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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.iterater   ExprName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   lastr   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   r|   r0   r0   r1   r     s   
zExprAttribute.lastrP   c                 C  r   )z/The first part of this attribute (on the left).r   r   r|   r0   r0   r1   first     
zExprAttribute.firstrw   c                 C  r   )zThe path of this attribute.)r   r   r|   r0   r0   r1   r   "  r   zExprAttribute.pathc                 C  r   )z%The canonical path of this attribute.)r   r   r|   r0   r0   r1   r   '  r   zExprAttribute.canonical_pathNr   )r   r   r8   r   )r8   r   )r8   rP   r   )r   r   r   r   __annotations__rF   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   leftrw   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   9  s   zExprBinOp.iterateNr   r   r   r   r   r   rF   r0   r0   r0   r1   rC   .     
 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`.rw   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   N  s   
zExprBoolOp.iterateNr   r   r0   r0   r0   r1   rE   E     
 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   rw   c                 C  r   z1The canonical path of this subscript's left part.)r   r   r|   r0   r0   r1   r   a  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   f  s
   
zExprCall.iterateNr   r   )r   r   r   r   r   r   r   rF   r0   r0   r0   r1   r   X  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   y  s   zExprCompare.iterateNr   r   r0   r0   r0   r1   r   n  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`.rw   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   ry     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  sV    dV  t | j|dE d H  dV  t | j|dE d H  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'rx   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`.rw   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   r|   r   r0   r1   r   G  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   N  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   \     zExprVarPositional.iterateNr   r   r0   r0   r0   r1   r   U  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   i  r   zExprVarKeyword.iterateNr   r   r0   r0   r0   r1   r   b  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   x  s@   
zExprLambda.iterateNr   r   r0   r0   r0   r1   r   o  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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.rw   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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   r|   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   rw   membersgetr	  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resolvedr|   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   ry     rz   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  r|   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  r|   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   r|   r0   r0   r1   is_type_parameter  r   zExprName.is_type_parameter)r
  r  r8   r7   )r2   r7   r8   r  r   )r8   r  r   )r   r   r   r   r   rd   r	  r  rF   r   r   r   r  r  r  r  r  r0   r0   r0   r1   r     s0   
 
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`.rw   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   ;  r   zExprSet.iterateNr   r   r0   r0   r0   r1   r!  4  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   K  r  zExprSetComp.iterateNr   r   r0   r0   r0   r1   r"  B  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   


zExprSlice.iterater   )	r   r   r   r   r   r   r$  r%  rF   r0   r0   r0   r1   r#  T  s   
 r#  c                   @  sR   e Zd ZU dZded< 	 ded< 	 dddddZedddZedddZdS )r   zSubscripts like `a[b]`.rP   r   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   t  s
   
zExprSubscript.iteraterw   c                 C     t | jtr	| jS | jjS )z'The path of this subscript's left part.)r?   r   rw   r   r|   r0   r0   r1   r   {     zExprSubscript.pathc                 C  r(  r   )r?   r   rw   r   r|   r0   r0   r1   r     r)  zExprSubscript.canonical_pathNr   r   )	r   r   r   r   r   rF   r   r   r   r0   r0   r0   r1   r   k  s   
 r   c                   @  s:   e Zd ZU dZded< 	 dZded< 	 dd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=   )r+  rV   rM   r   r   r0   r0   r1   rF     s   
zExprTuple.iterateNr   )r   r   r   r   r   r+  rF   r0   r0   r0   r1   r*    s   
 r*  c                   @  r   )r   zUnary operations like `-1`.rw   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   r0    r   r0  ~r-  +-&|^///<<@%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  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rD  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   r   r.   rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rG  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rG  rE  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   r:  r7  r8  r;  r2  r3  r9  r<  r4  r6  r5  )	r   r,   r*   r)   r(   r'   r&   r%   rD   rH  r0   r0   r1   rl     s    c                 C  s   t jt jd| j S )N)r=  r>  )r   r"   r!   rD   rH  r0   r0   r1   rl     s    c                 C  rC  rj   )r   r$   rE  r0   r0   r1   rl     rm   c                 C  rC  rj   )r   r    rE  r0   r0   r1   rl     rm   c                 C  rC  rj   )r   r   rE  r0   r0   r1   rl     rm   c                 C  rC  rj   r   r   rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rJ  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   r   r   rE  r0   r0   r1   rl     rm   c                 C  rC  rj   rK  rE  r0   r0   r1   rl     rm   c                 C  rC  rj   r   r   rE  r0   r0   r1   rl      rm   c                 C  rC  rj   rL  rE  r0   r0   r1   rl   !  rm   c                 C  rC  rj   r   r   rE  r0   r0   r1   rl   $  rm   c                 C  rC  rj   rM  rE  r0   r0   r1   rl   %  rm   c                 C  rC  rj   rM  rE  r0   r0   r1   rl   &  rm   c                 C  rC  rj   rM  rE  r0   r0   r1   rl   '  rm   c                 C  rC  rj   rM  rE  r0   r0   r1   rl   (  rm   exprc                 C  s   t t| dd | S )Nc                 S  rC  rj   rM  rE  r0   r0   r1   rl   -  rm   z!_get_precedence.<locals>.<lambda>)_precedence_mapr  type)rN  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 )Nrw   )_buildr   r?   r   r   r   attrrw   )rR  rd   rX   r   r0   r0   r1   _build_attribute0  s   


rW  	ast.BinOpc                 K  s6   t t| j|fi |tt| j t| j|fi |S rj   )rC   rU  r   _binary_op_maprP  r   r   rR  rd   rX   r0   r0   r1   _build_binop<  s
   r[  
ast.BoolOpc                   s&   t tt| j  fdd| jD S )Nc                      g | ]}t |fi  qS r0   rU  r\   r   rX   rd   r0   r1   r^   G      z!_build_boolop.<locals>.<listcomp>)rE   _bool_op_maprP  r   r   rZ  r0   r`  r1   _build_boolopD  s   rc  ast.Callc                   sT   t | jfi  fdd| jD } fdd| jD }t g ||S )Nc                   r]  r0   r^  )r\   argr`  r0   r1   r^   M  ra  z_build_call.<locals>.<listcomp>c                   s"   g | ]}t |fd  iqS r   r^  )r\   kwargr   rX   rd   r0   r1   r^   N     " )rU  funcargskeywordsr   )rR  rd   rX   positional_argskeyword_argsr0   rh  r1   _build_callK  s   ro  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_maprP  )r\   r   r0   r0   r1   r^   U  s    z"_build_compare.<locals>.<listcomp>c                   r]  r0   r^  )r\   r   r`  r0   r1   r^   V  ra  )r   rU  r   opsr   rZ  r0   r`  r1   _build_compareR  s
   rs  ast.comprehensionc                   sH   t t| jfi  t| jfi   fdd| jD t| jdS )Nc                   r]  r0   r^  )r\   	conditionr`  r0   r1   r^   ^  ra  z(_build_comprehension.<locals>.<listcomp>)r   )r   rU  r   rR   ifsr7   r   rZ  r0   r`  r1   _build_comprehensionZ  s   rw  )in_formatted_strin_joined_strparse_stringsliteral_stringsast.Constantrx  ry  rz  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   rE  r0   r0   r1   rl         z!_build_constant.<locals>.<lambda>)r?   r   rw   compileastPyCF_ONLY_ASTSyntaxErrorr   debugrU  r   rP  r  repr)rR  rd   rx  ry  rz  r{  rX   parsedr0   r0   r1   _build_constantc  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   r^  )r\   rn   r`  r0   r1   r^     s   * z_build_dict.<locals>.<listcomp>c                   r]  r0   r^  r_  r`  r0   r1   r^     ra  )r   r   r   rZ  r0   r`  r1   _build_dict  s   r  ast.DictCompc                   s>   t t| jfi  t| jfi   fdd| jD S )Nc                   r]  r0   r^  r\   genr`  r0   r1   r^     ra  z#_build_dictcomp.<locals>.<listcomp>)r   rU  rn   r   r   rZ  r0   r`  r1   _build_dictcomp  s
   r  )rx  ast.FormattedValuec                K  s   t t| j|fddi|S )Nrx  T)r   rU  r   )rR  rd   rx  rX   r0   r0   r1   _build_formatted  s   r  ast.GeneratorExpc                   ,   t t| jfi   fdd| jD S )Nc                   r]  r0   r^  r  r`  r0   r1   r^     ra  z'_build_generatorexp.<locals>.<listcomp>)r   rU  eltr   rZ  r0   r`  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   rU  r   r   r   rZ  r0   r0   r1   _build_ifexp  s
   r  )ry  ast.JoinedStrc                     t  fdd| jD S )Nc                   s"   g | ]}t |fd di qS )ry  Tr^  r_  r`  r0   r1   r^     ri  z$_build_joinedstr.<locals>.<listcomp>)r   r   )rR  rd   ry  rX   r0   r`  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 )Nrf  )re  r   rU  r   r   )rR  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   rz  )re   r   r  r   )r  r?   rw   safe_get_expression)r\   re   rF  r   r   rc   r0   r1   r^     s    
	z!_build_lambda.<locals>.<listcomp>)r   r   )r   r   rk  rU  r   rZ  r0   rc   r1   _build_lambda  s   
	r  ast.Listc                   r  )Nc                   r]  r0   r^  r\   elr`  r0   r1   r^     ra  z_build_list.<locals>.<listcomp>)r  eltsrZ  r0   r`  r1   _build_list     r  ast.ListCompc                   r  )Nc                   r]  r0   r^  r  r`  r0   r1   r^     ra  z#_build_listcomp.<locals>.<listcomp>)r  rU  r  r   rZ  r0   r`  r1   _build_listcomp     ,r  ast.Namer	  r  c                 K  s   t | j||S rj   )r   id)rR  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  rU  r   r   rZ  r0   r0   r1   _build_named_expr  s   *r  ast.Setc                   r  )Nc                   r]  r0   r^  r  r`  r0   r1   r^     ra  z_build_set.<locals>.<listcomp>)r!  r  rZ  r0   r`  r1   
_build_set  r  r  ast.SetCompc                   r  )Nc                   r]  r0   r^  r  r`  r0   r1   r^     ra  z"_build_setcomp.<locals>.<listcomp>)r"  rU  r  r   rZ  r0   r`  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   rU  r$  r%  rZ  r0   r0   r1   _build_slice  s     r  ast.Starredc                 K     t t| j|fi |S rj   )r   rU  r   rZ  r0   r0   r1   _build_starred  rQ  r  rz  r{  in_subscript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  )rU  r   r?   r   r   r   r'  r   )rR  rd   rz  r{  r  rX   r   
slice_exprr0   r0   r1   _build_subscript  s    		
r  )r  	ast.Tuplec                  s   t  fdd| jD |dS )Nc                   r]  r0   r^  r  r`  r0   r1   r^     ra  z _build_tuple.<locals>.<listcomp>)r+  )r*  r  )rR  rd   r  rX   r0   r`  r1   _build_tuple  s   r  ast.UnaryOpc                 K  s$   t tt| j t| j|fi |S rj   )r   _unary_op_maprP  r   rU  operandrZ  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   rU  rZ  r0   r0   r1   _build_yield"  s   (r  ast.YieldFromc                 K  r  rj   )r0  rU  r   rZ  r0   r0   r1   _build_yield_from&  rQ  r  c                   @  s   e Zd Zddd	Zd
S )_BuildCallablerR  r	   rd   rT  rX   r8   r@   c                 K  s   d S rj   r0   )r}   rR  rd   rX   r0   r0   r1   __call__+  r  z_BuildCallable.__call__N)rR  r	   rd   rT  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  rP  rZ  r0   r0   r1   rU  N  r  rU  r	  rz  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_annotationsrU  )rR  rd   r	  rz  r  r0   r0   r1   get_expressionR  s   
r  zD{path}:{lineno}: Failed to get expression from {node_class}: {error})r	  rz  	log_level
msg_formatr  LogLevel | Noner  rw   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   )rR  rd   r	  rz  r  r  r  r  r   r  	error_strmessager0   r0   r1   r  p  s$   
r  zG{path}:{lineno}: Failed to get %s expression from {node_class}: {error})rz  r  )rz  r  z
base classru  )
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   r0   )rN  r@   r8   r   )rR  rS  rd   rT  rX   r	   r8   r@   )rR  rX  rd   rT  rX   r	   r8   r@   )rR  r\  rd   rT  rX   r	   r8   r@   )rR  rd  rd   rT  rX   r	   r8   r@   )rR  rp  rd   rT  rX   r	   r8   r@   )rR  rt  rd   rT  rX   r	   r8   r@   )rR  r|  rd   rT  rx  r7   ry  r7   rz  r7   r{  r7   rX   r	   r8   rP   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )
rR  r  rd   rT  rx  r7   rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )
rR  r  rd   rT  ry  r7   rX   r	   r8   r@   rj   )
rR  r  rd   rT  r   r   rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )
rR  r  rd   rT  r	  r  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rz  r7   r{  r7   r  r7   rX   r	   r8   r@   )
rR  r  rd   rT  r  r7   rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )rR  r  rd   rT  rX   r	   r8   r@   )
rR  r  rd   rT  r	  r  rz  r  r8   r   )rR  r  rd   rT  r	  r  rz  r  r  r  r  rw   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_   rs   r   version_infor@   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   r*  r   r.  r0  InvertNotUAddUSubr  AddBitAndBitOrBitXorDivFloorDivLShiftMatMultModMultPowRShiftSubrY  AndOrrb  EqNotEqLtLtEGtGtEIsIsNotInNotInrq  rO  rA   rW  r[  rc  ro  rs  rw  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  rU  r  r  r  _msg_formatget_annotationsafe_get_annotationget_base_classsafe_get_base_classget_conditionsafe_get_conditionr0   r0   r0   r1   <module>   sD  (/
^/(+Y	
"#7'

!
	
 "(