
    7 fq                    H   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZmZ ddlmZmZmZmZ ddlmZ ddlmZmZmZmZmZmZ ddlmZ dd	l
mZmZm Z m!Z!m"Z" dd
lm#Z#m$Z$m%Z% ddl&m'Z( ddl)m*Z* ddl+m,Z,m-Z-  e*j.        e/          Z0 ej1        dej2                  Z3djdZ4dddkdZ5dldZ6dmdZ7dmdZ8dndZ9dodZ:dpd!Z;dqd#Z<drd%Z=drd&Z>djd'Z?dqd(Z@dsdtd,ZAdsdtd-ZBdrd.ZCdqd/ZDdud2ZEdqd3ZFdqd4ZGdqd5ZHdqd6ZIdqd7ZJdqd8ZKdqd9ZLdqd:ZMdqd;ZNdqd<ZOdvd?ZP eQ            d@dwdCZRdxdEZS G dF dG          ZT G dH dI          ZU G dJ dK          ZV G dL dMeWeXe#f                   ZYdydPZZdzd{dVZ[	 	 dsd|dZZ\	 	 	 d}d~d_Z]ddaZ^dddfZ_ePdQddfddiZ`dS )z&Helpers for inspecting Python modules.    )annotationsN)MappingSequence)cached_propertypartialpartialmethodsingledispatchmethod)import_module)	Parameterisasyncgenfunctionisclassismethodismethoddescriptorismodule)StringIO)ClassMethodDescriptorTypeMethodDescriptorType
MethodType
ModuleTypeWrapperDescriptorType)AnyCallablecast)unparse)logging)
ForwardRefstringify_annotationz at 0x[0-9a-f]{8,16}(?=>)objr   returnc                t    t          | d          r| S 	 t          j        |           S # t          $ r | cY S w xY w)z?Get an original object from wrapped object (wrapped functions).__sphinx_mock__)hasattrinspectunwrap
ValueErrorr   s    I/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/util/inspect.pyr$   r$   ,   sS    s%&& 
~c"""   


s   ( 77stopr)   Callable | Nonec                   	 |r ||           r| S t          |           r| j        } nTt          j        |           rt	          | d          r| j        } n(t          |           st          |           r| j        } n| S {)zx
    Get an original object from wrapped object (unwrapping partials, wrapped
    functions, and other decorators).
    T__wrapped__)		ispartialfuncr#   	isroutiner"   r,   isclassmethodisstaticmethod__func__)r   r)   s     r'   
unwrap_allr3   8   s    

 	DDII 	JS>> 	(CCs## 	](C(C 	/CC3 	>##6#6 	,CCJ
    Sequence[str] | Nonec                    t          | dd          }|dS t          |t          t          f          rt	          d |D                       r|S t          |          )zGet __all__ attribute of the module as dict.

    Return None if given *obj* does not have __all__.
    Raises ValueError if given *obj* have invalid __all__.
    __all__Nc              3  @   K   | ]}t          |t                    V  d S N
isinstancestr).0es     r'   	<genexpr>zgetall.<locals>.<genexpr>S   s,      1V1V*Q2D2D1V1V1V1V1V1Vr4   )safe_getattrr;   listtupleallr%   )r   r7   s     r'   getallrD   J   sf     3	400Gt'D%=)) c1V1Vg1V1V1V.V.V 
W

r4   Mapping[str, Any]c                V    t          | dd          }t          |t                    r|S i S )z,Get __annotations__ from given *obj* safely.__annotations__Nr@   r;   r   )r   rG   s     r'   getannotationsrI   X   s1    "3(94@@O/7++ 	r4   c                V    t          | dd          }t          |t                    r|S i S )z(Get __globals__ from given *obj* safely.__globals__NrH   )r   rK   s     r'   
getglobalsrL   a   s0    sM488K+w'' 	r4   tuple[type, ...]c                V    t          | dd          }t          |t                    r|S dS )z$Get __mro__ from given *obj* safely.__mro__N )r@   r;   rB   )r   rO   s     r'   getmrorQ   j   s/    3	400G'5!! rr4   tuple[Any, ...] | Nonec                    t          j        |           sdS t          | di           }|                    d          }t	          |t
                    rt          |          dk    r|S dS )z%Get __orig_bases__ from *obj* safely.N__dict____orig_bases__r   )r#   r   r@   getr;   rB   len)r   rT   rU   s      r'   getorigbasesrX   s   sm    ?3 t CR00H\\"233N.%(( S-@-@1-D-Dtr4   dict[str, Any] | Nonec                <   t          j        |           st          t          | dd          }|dS t	          |t
                    r|S t	          |t                    r|diS t	          |t          t          f          rt
          	                    |          S t          )zGet __slots__ attribute of the class as dict.

    Return None if gienv *obj* does not have __slots__.
    Raises TypeError if given *obj* is not a class.
    Raises ValueError if given *obj* have invalid __slots__.
    	__slots__N)r#   r   	TypeErrorr@   r;   dictr<   rA   rB   fromkeysr%   )r   r[   s     r'   getslotsr_      s     ?3 S+t44It	It	$	$ 	Is	#	# 4  	Ie}	-	- }}Y'''r4   boolc                    t           j        dd         dk    rt          | t          j                  S t          | dd          }t          | dd          }|dk    o|dk    S )z)Check the if object is a kind of NewType.N   )   
   
__module____qualname__typingzNewType.<locals>.new_type)sysversion_infor;   rg   NewTyper@   )r   re   rf   s      r'   	isNewTyperk      sc    
w&&#v~...c<66J^T::L!Ql6Q&QQr4   xc                ^    t          j        |           ot          | t          j                  S )z(Check if the object is subclass of enum.)r#   r   
issubclassenumEnumrl   s    r'   isenumclassrr      s#    ?1:*Q	":"::r4   c                6    t          | t          j                  S )z)Check if the object is attribute of enum.)r;   ro   rp   rq   s    r'   isenumattributert      s    a###r4   c                P    t          |           r| j        } t          |           | S )zfGet an original object from partial object.

    This returns given object itself if not partial.
    )r-   r.   r&   s    r'   	unpartialrv      s0    
 C.. h C..  Jr4   c                :    t          | t          t          f          S )zCheck if the object is partial.)r;   r   r   r&   s    r'   r-   r-      s    cG]3444r4   clsname
str | Nonec                >   t          | t                    rdS t          j        |           r| j        t          | j                  rdS |rR|rPt                      }t          |          D ]2}|j        	                    ||          }||urt          |          c S 3dS )z#Check if the object is classmethod.TNF)r;   classmethodr#   r   __self__r   objectrQ   rT   rV   r0   )r   rx   ry   placeholderbaseclsmeths         r'   r0   r0      s    #{## t !9gcl>S>S!9t
 +t +hhc{{ 	+ 	+G#''k::D;&&$T***** ' 5r4   c                    t          | t                    rdS |rJ|rHt          |d|g          D ]5}|j                            |          }|rt          |t                    c S 6dS )z$Check if the object is staticmethod.TrO   F)r;   staticmethodgetattrrT   rV   )r   rx   ry   r   r   s        r'   r1   r1      s    #|$$ t
 6t 6 sIu55 	6 	6G#''--D 6!$5555565r4   c                :     t           fddD                       S )z/Check if the object is some kind of descriptor.c              3  T   K   | ]"}t          t          |d                     V  #d S r9   )callabler@   )r=   itemrl   s     r'   r?   zisdescriptor.<locals>.<genexpr>   sK         	at,,--     r4   )__get____set__
__delete__)anyrq   s   `r'   isdescriptorr      s;        8     r4   c                (    t          | dd          du S )z)Check if the object is an abstractmethod.__isabstractmethod__FTr@   r&   s    r'   isabstractmethodr      s    3U;;tCCr4   methodr   c                (    t          | dd          duS )z&Check if the method is a bound method.r}   Nr   )r   s    r'   isboundmethodr      s    
D11==r4   c                F    	 | j         j        dk    S # t          $ r Y dS w xY w)z6Check if the object is a function or method in cython.cython_function_or_methodF)	__class____name__AttributeErrorr&   s    r'   is_cython_function_or_methodr      s:    }%)DDD   uus    
  c                   t          j        |           rdS t          |           rt          |           }t	          |          s#t          |          st          j        |          rdS t          |          rdS t          j        |          rdS t          |t          t          t          f          rdS t          |          j        dk    rdS dS dS )z4Check if the object is an attribute like descriptor.TFinstancemethod)r#   isdatadescriptorr   r$   
isfunction	isbuiltinr   r   r   r;   r   r   r   typer   )r   	unwrappeds     r'   isattributedescriptorr      s    $$ tC 3KK	i   	Ii$8$8 	G<LY<W<W 	5'	22 	5?9%% 	5i";"6"7"9 : : 	 5	??#'7775t5r4   c                    t          j        |           o/t          | d          ot          | d          o| j        j        dk    S )z/Check if the object is singledispatch function.dispatchregister	functools)r#   r   r"   r   re   r&   s    r'   is_singledispatch_functionr     sM    s## 3C$$3C$$3 L#{24r4   c                ,    t          | t                    S )z-Check if the object is singledispatch method.)r;   r	   r&   s    r'   is_singledispatch_methodr     s    c/000r4   c                D    t          j        t          |                     S z Check if the object is function.)r#   r   rv   r&   s    r'   r   r     s    inn---r4   c                D    t          j        t          |                     S r   )r#   r   rv   r&   s    r'   r   r   $      Ys^^,,,r4   c                D    t          j        t          |                     S )z(Check is any kind of function or method.)r#   r/   rv   r&   s    r'   r/   r/   )  r   r4   c                T    dd}t          | |          } t          j        |           S )z*Check if the object is coroutine-function.r   r   r   r`   c                    t          |           st          |           st          |           rdS t          | d          S )z2Check if the object is wrapped coroutine-function.Fr,   )r1   r0   r-   r"   r&   s    r'   iswrappedcoroutinez/iscoroutinefunction.<locals>.iswrappedcoroutine0  sE    # 	-"4"4 		# 	 5sM***r4   r(   r   r   r   r`   )r3   r#   iscoroutinefunction)r   r   s     r'   r   r   .  s<    + + + + S1
2
2
2C&s+++r4   c                :    t          | t          t          f          S )z Check if the object is property.)r;   propertyr   r&   s    r'   
ispropertyr   <  s    cHo6777r4   c                N    t          | t          j        t          j        f          S )z$Check if the object is GenericAlias.)r;   typesGenericAliasrg   _BaseGenericAliasr&   s    r'   isgenericaliasr   A  s$    e &":;= = =r4   r<   defargsc                    	 t          | |g|R  S # t          $ rG}	 | j        |         cY d}~S # t          $ r Y nw xY w|r|d         cY d}~S t          |          |d}~ww xY w)z;A getattr() that turns all exceptions into AttributeErrors.Nr   )r   	ExceptionrT   r   )r   ry   r   excs       r'   r@   r@   G  s    ,sD+7++++ , , ,	 <%%%%%%% 	 	 	D	
  	1:T""+,s6    
A!-A!
:A:AA!AA!_seenr   	frozensetc               x    |t           t                    rt                     v rdS t                     hz  	 t                     }n$# t          $ r t           fd          }Y nw xY w fd|D             }dd                    d |D                       z  S t           t                    rt                     v rdS t                     hz  	 t                     }n$# t          $ r t           fd	          }Y nw xY wdd                    fd
|D                       z  S t           t                    rt                     v rdS t                     hz  	 t                     }n$# t          $ r t           fd          }Y nw xY wdd                    fd|D                       z  S t           t          j	                  r j
        j         d j         S t           t                    rnt                     v rdS t          t                     g          z  dd                    fd D                       dt                     dk    z  dS t           t                    rJt                     v rdS t                     hz  dd                    fd D                       z  S 	 t!                     }n# t"          $ r}t$          |d}~ww xY wt&                              d|          }|                    dd          S )zA repr() implementation that returns text safe to use in reST context.

    Maintains a set of 'seen' object IDs to detect and avoid infinite recursion.
    z	dict(...)c                &    t          |           S Nr   object_description)kseens    r'   <lambda>z$object_description.<locals>.<lambda>k  s    4FqPT4U4U4U r4   )keyc              3  h   K   | ],}t          |           t          |                    fV  -dS r   Nr   )r=   r   r   r   s     r'   r?   z%object_description.<locals>.<genexpr>m  se       T T@C %S555$SXT:::< T T T T T Tr4   z{%s}, c              3  *   K   | ]\  }}| d | V  dS ): NrP   )r=   r   values      r'   r?   z%object_description.<locals>.<genexpr>o  s4      !N!NeS"3"3E"3"3!N!N!N!N!N!Nr4   zset(...)c                &    t          |           S r   r   rl   r   s    r'   r   z$object_description.<locals>.<lambda>x      6HRV6W6W6W r4   c              3  :   K   | ]}t          |           V  dS r   r   r=   rl   r   s     r'   r?   z%object_description.<locals>.<genexpr>y  s1      ![!["4Qd"C"C"C![![![![![![r4   zfrozenset(...)c                &    t          |           S r   r   r   s    r'   r   z$object_description.<locals>.<lambda>  r   r4   zfrozenset({%s})c              3  :   K   | ]}t          |           V  dS r   r   r   s     r'   r?   z%object_description.<locals>.<genexpr>  sM       -E -E12 .@-N-N-N -E -E -E -E -E -Er4   .z
tuple(...)(c              3  :   K   | ]}t          |           V  dS r   r   r   s     r'   r?   z%object_description.<locals>.<genexpr>  s1      EEA($777EEEEEEr4   ,   )z	list(...)z[%s]c              3  :   K   | ]}t          |           V  dS r   r   r   s     r'   r?   z%object_description.<locals>.<genexpr>  s1      !Q!Q"4Qd"C"C"C!Q!Q!Q!Q!Q!Qr4   N 
 )r;   r]   idsortedr\   joinsetr   ro   rp   r   r   ry   rB   rW   rA   reprr   r%   memory_address_resubreplace)r   r   sorted_keysitemssorted_valuessr   r   s   `      @r'   r   r   ]  s   
 D#t 0Rc77d??;C		W ++KK 	W 	W 	W *U*U*U*UVVVKKK	WT T T T TGRT T T		!N!N!N!N!NNNNN	C		 #Rc77d??:C		Y"3KKMM 	Y 	Y 	Y"3,W,W,W,WXXXMMM	Y 		![![![![]![![![[[[[	C	#	# Rc77d??##C		Y"3KKMM 	Y 	Y 	Y"3,W,W,W,WXXXMMM	Y !499 -E -E -E -E6C-E -E -E $E $E E 	E	C	#	# R-(5538555	C		 Rc77d??<	2c77)$$$IIEEEEEEEEEE3s88q=!!!
 	
 
C		 Rc77d??;C			!Q!Q!Q!QS!Q!Q!QQQQQ"II " " "c!" 	b!$$A99T3sN   A A21A2"C2 2DD6F F'&F'!K1 1
L;LL	attr_namec                    	 t          |           }t          fd|D                       }n# t          $ r Y dS w xY w	 t          |d          }n# t          $ r Y dS w xY wt          t          |d          |u S )zIf attr_name is implemented at builtin class, return True.

        >>> is_builtin_class_method(int, '__init__')
        True

    Why this function needed? CPython implements int.__init__ by Descriptor
    but PyPy implements it by pure Python code.
    c              3  B   K   | ]}t          |d i           v |V  dS )rT   Nr   )r=   cr   s     r'   r?   z*is_builtin_class_method.<locals>.<genexpr>  s9      RRY,q*b2Q2Q%Q%Q1%Q%Q%Q%QRRr4   Fr   N)rQ   nextStopIterationr@   r   r   builtins)r   r   mrorx   ry   s    `   r'   is_builtin_class_methodr     s    SkkRRRRcRRRRR   uuC,,   uu 8T4((C//s   *. 
<< A 
AAc                  *    e Zd ZdZddZdd
ZddZdS )DefaultValuezKA simple wrapper for default value of the parameters of overload functions.r   r<   r   Nonec                    || _         d S r9   r   )selfr   s     r'   __init__zDefaultValue.__init__  s    


r4   otherr~   r`   c                    | j         |k    S r9   r   r   r   s     r'   __eq__zDefaultValue.__eq__  s    zU""r4   c                    | j         S r9   r   r   s    r'   __repr__zDefaultValue.__repr__  s
    zr4   N)r   r<   r   r   )r   r~   r   r`   r   r<   )r   re   rf   __doc__r   r  r  rP   r4   r'   r   r     sV        UU   # # # #     r4   r   c                  :    e Zd ZdZddZddZddZddZddZdS )TypeAliasForwardRefzPseudo typing class for autodoc_type_aliases.

    This avoids the error on evaluating the type inside `get_type_hints()`.
    ry   r<   r   r   c                    || _         d S r9   ry   )r   ry   s     r'   r   zTypeAliasForwardRef.__init__  s    			r4   c                    d S r9   rP   r  s    r'   __call__zTypeAliasForwardRef.__call__  s    r4   r   r   r`   c                    | j         |k    S r9   r  r  s     r'   r  zTypeAliasForwardRef.__eq__  s    yE!!r4   intc                *    t          | j                  S r9   )hashry   r  s    r'   __hash__zTypeAliasForwardRef.__hash__  s    DIr4   c                    | j         S r9   r  r  s    r'   r  zTypeAliasForwardRef.__repr__  s
    yr4   N)ry   r<   r   r   )r   r   )r   r   r   r`   )r   r  r  )	r   re   rf   r  r   r  r  r  r  rP   r4   r'   r	  r	    s               " " " "        r4   r	  c                  "    e Zd ZdZddZddZdS )TypeAliasModulez-Pseudo module class for autodoc_type_aliases.modnamer<   mappingdict[str, str]r   r   c                0    || _         || _        d | _        d S r9   )_TypeAliasModule__modname_TypeAliasModule__mapping_TypeAliasModule__module)r   r  r  s      r'   r   zTypeAliasModule.__init__  s      +/r4   ry   r   c                   d                     t          d | j        |g                    }|| j        v rt	          | j        |                   S |dz   fd| j                                        D             }|rt          ||          S 	 t          |          S # t          $ r8 | j	        t          | j                  | _	        t          | j	        |          cY S w xY w)Nr   c                F    i | ]\  }}|                               ||S rP   
startswithr=   r   vprefixs      r'   
<dictcomp>z/TypeAliasModule.__getattr__.<locals>.<dictcomp>  0    VVVtq!fAUAUVaVVVr4   )r   filterr  r  r	  r   r  r
   ImportErrorr  r   )r   ry   fullnamenestedr#  s       @r'   __getattr__zTypeAliasModule.__getattr__  s    88F4$.$)?@@AAt~%%&t~h'?@@@^FVVVVt~';';'='=VVVF 8&x8888(222" 8 8 8},(5dn(E(E"4=$777778s   B ?CCN)r  r<   r  r  r   r   )ry   r<   r   r   )r   re   rf   r  r   r*  rP   r4   r'   r  r    sB        770 0 0 08 8 8 8 8 8r4   r  c                  "    e Zd ZdZddZdd
ZdS )TypeAliasNamespacezPseudo namespace class for autodoc_type_aliases.

    This enables to look up nested modules and classes like `mod1.mod2.Class`.
    r  r  r   r   c                    || _         d S r9   )_TypeAliasNamespace__mapping)r   r  s     r'   r   zTypeAliasNamespace.__init__   s     r4   r   r<   r   c                    || j         v rt          | j         |                   S |dz   fd| j                                         D             }|rt          ||          S t          )Nr   c                F    i | ]\  }}|                               ||S rP   r  r!  s      r'   r$  z2TypeAliasNamespace.__getitem__.<locals>.<dictcomp>	  r%  r4   )r.  r	  r   r  KeyError)r   r   r)  r#  s      @r'   __getitem__zTypeAliasNamespace.__getitem__  sr    $.  &t~c':;;;3YFVVVVt~';';'='=VVVF &sF333r4   N)r  r  r   r   )r   r<   r   r   )r   re   rf   r  r   r2  rP   r4   r'   r,  r,    sF         
! ! ! !     r4   r,  subjectr   c                    t          |           }|                    d          dk    r%|                    d          t          j        k    rdS dS )z<Check the function should be unwrapped on getting signature.r   
contextlib__file__TF)rL   rV   r5  r6  )r3  rK   s     r'   _should_unwrapr7    sJ    W%%K
##|33OOJ'':+>>>t5r4   Fbound_methodtype_aliasesdict | Noneinspect.Signaturec                h   |i }	 t          |           rt          j        |           }nt          j        | d          }n$# t          $ r t          j        |           }Y nw xY wt	          |j                                                  }|j        }	 t          |          }t          j
        | d|          }t          |          D ]P\  }}	|	j        |v rB||	j                 }
t          |
t                    r|
j        }
|	                    |
          ||<   Qd|v r1t          |d         t                    r|d         j        }n|d         }n# t           $ r Y nw xY w|r=t          j        |           rn(t%          |          dk    r|                    d           t          j        ||d          S )	z|Return a Signature object for the given *subject*.

    :param bound_method: Specify *subject* is a bound method or not
    NT)follow_wrapped
annotationr   r   F)return_annotation__validate_parameters__)r7  r#   	signaturer%   rA   
parametersvaluesr@  r,  rg   get_type_hints	enumeratery   r;   r	  r   r   r   rW   pop	Signature)r3  r8  r9  rB  rC  r@  localnsr   iparamr?  s              r'   rB  rB    s    /'"" 	H)'22II)'$GGGI / / /%g..			/ i*113344J!3$\22+GT7CC!*-- 	E 	EHAuz[(((4
j*=>> 1!+J % D D
1{""+h/1DEE :$/$9$>!!$/$9!    	
  "G$$ 	" :""q!!! Z;L5:< < < <s$   :A A"!A"B:E 
EEsigglobalnsrI  c                \  	 dd	d	fd
}|i }||}t          | j                                                  }t          |          D ]7\  }}|j        r+ ||j        ||          }|                    |          ||<   8| j        }|r ||||          }|                     ||          S )z;Evaluate unresolved type annotations in a signature object.refr   rM  r]   rI  r   r   c                H    |                      ||t                                S )zEvaluate a forward reference.)	_evaluater   )rO  rM  rI  s      r'   evaluate_forwardrefz/evaluate_signature.<locals>.evaluate_forwardrefZ  s    }}Xw	<<<r4   r?  c                H   	 t          | t                    rrt          | d          } |||          } t          | t                    r |||          } n2t          | t                    rt          | d          } |||          } n# t          t          f$ r Y nw xY w| S )z$Evaluate unresolved type annotation.T)r;   r<   r   	NameErrorr\   )r?  rM  rI  rO  rR  s       r'   evaluatez$evaluate_signature.<locals>.evaluate^  s    	*c** 	M T2200hHH
j*55 M!4!4S(G!L!LJJ
C00 M$Z66C!4!4S(G!L!LJ9% 	 	 	D	 s   BB BBNr>  )rC  r@  )rO  r   rM  r]   rI  r]   r   r   )r?  r   rM  r]   rI  r]   r   r   )rA   rC  rD  rF  r?  r   r@  )
rL  rM  rI  rU  rC  rJ  rK  r?  r@  rR  s
            @r'   evaluate_signaturerV  V  s    = = = =     & cn++--..Jj)) A A5 	A!%"2HgFFJ!MMZM@@JqM- K$H%6'JJ;;*@Q;RRRr4   Tshow_annotationshow_return_annotationunqualified_typehintsc                   |rd}nd}g }d}| j                                         D ]}|j        |j        k    r ||j        k    r|                    d           |j        |j        k    r&||j        |j        dfv r|                    d           t                      }|j        |j        k    r|	                    d|j
        z              nH|j        |j        k    r|	                    d|j
        z              n|	                    |j
                   |rK|j        |j        ur=|	                    d           |	                    t          |j        |                     |j        |j        urb|r$|j        |j        ur|	                    d           n|	                    d	           |	                    t!          |j                             |                    |                                           |j        }|t$          j        k    r|                    d           d
                    |          }	| j        t$          j        u s|du s|du rd|	 dS t          | j        |          }
d|	 d|
 S )aN  Stringify a Signature object.

    :param show_annotation: If enabled, show annotations on the signature
    :param show_return_annotation: If enabled, show annotation of the return value
    :param unqualified_typehints: If enabled, show annotations as unqualified
                                  (ex. io.StringIO -> StringIO)
    smartzfully-qualifiedN/*z**r   z = =r   Fr   r   z) -> )rC  rD  kindPOSITIONAL_ONLYappendKEYWORD_ONLYPOSITIONAL_OR_KEYWORDr   VAR_POSITIONALwritery   VAR_KEYWORDr?  emptyr   defaultr   getvaluer   r   r@  )rL  rW  rX  rY  modeargs	last_kindrK  argconcatenated_argsr?  s              r'   stringify_signaturero    s     ! DI&&((  :...9@U3U3UKK:+++	e>Y>C>S>B>D 1D 1D KKjj:---IIcEJ&''''Z5,,,IIdUZ'((((IIej!!! 	Du/u{BBIIdOOOII*5+;TBBCCC=++ 5#35;#F#F		%    		#II(77888CLLNN###J		I---C		$00u$$"e++'$'''')#*?FF
7$77:777r4   rB  c                    d| z   dz   }t          j        |          }t          t           j        |j        d                   }t          ||          S )z&Create a Signature object from string.zdef funcz: passr   )astparser   FunctionDefbodysignature_from_ast)rB  codemodulefunctions       r'   signature_from_strry    sE    	!H,DYt__FCOV[^44Hh---r4   r   nodeast.FunctionDefrv  c           	        | j         }t          |j                  }g }t          |d          r,t	          |j                  }|t	          |j                   z   }nd}t	          |j                   }t          t	          |          |          D ]"}|                    dt          j	                   #t          |d          rt          |j                  D ]\  }}	||         t          j	        u rt          j	        }
n#t          t          ||         |                    }
t          |	j        |          pt          j	        }|                    t          |	j        t          j        |
|                     t          |j                   D ]\  }}	|||z            t          j	        u rt          j	        }
n&t          t          |||z            |                    }
t          |	j        |          pt          j	        }|                    t          |	j        t          j        |
|                     |j        r_t          |j        j        |          pt          j	        }|                    t          |j        j        t          j        |                     t          |j                  D ]\  }}	|j        |         t          j	        }
n(t          t          |j        |         |                    }
t          |	j        |          pt          j	        }|                    t          |	j        t          j        |
|                     |j        r_t          |j        j        |          pt          j	        }|                    t          |j        j        t          j        |                     t          | j        |          pt          j	        }t5          j        ||          S )z*Create a Signature object from AST *node*.posonlyargsr   )rh  r?  r>  N)r@  )rk  rA   defaultsr"   rW   r}  rangeinsertr   rg  rF  r   ast_unparser?  ra  rm  r`  rc  varargrd  
kwonlyargskw_defaultsrb  kwargrf  returnsr#   rH  )rz  rv  rk  r~  paramsr}  positionals_rJ  rm  rh  r?  r@  s                r'   ru  ru    s   9DDM""HFt]## %$*++!C	NN2$)nn3x==+.. , ,9?++++t]## 
M 011 		M 		MFAs{io--#/&T224 4 %S^T::MioJMM)CGY-F,3
L L L M M M M DI&& 
I 
I3AO$	77oGG"HQ_5t<< G !66I)/
i)H(/JH H H 	I 	I 	I 	I { 8 !7>>Q)/
i1I+57 7 7 	8 	8 	8 DO,, 8 83A&oGG"D,Q/668 8G 66I)/
i)?+57 7 7 	8 	8 	8 	8 z 8 !6==P
i
	0E+57 7 7 	8 	8 	8 $DL$77J9?V7HIIIIr4   
attrgetterallow_inheritedc                   t           fd
d}|rm|rkt          | ||          rZt          |          D ]J}|j                            |          }|r,t          |d          rt          |j                  }||s|c S K ||           }t          |           r$|| j	        j
        k    rt          | j                  S ||r|ru|rst          |          D ]$}t          ||d	          }| ||          }| n%|=t          |          D ]-}t          ||d	          }|t          j        |          }| n.|t          j        |           }|S )zGet the docstring for the object.

    This tries to obtain the docstring for some kind of objects additionally:

    * partial functions
    * inherited docstring
    * inherited decorated methods
    r   r   r  r   r   rz   c                N     || dd           }t          |t                    r|S d S )Nr  r:   )r   r  docs      r'   getdoc_internalzgetdoc.<locals>.getdoc_internal  s1    ji..c3 	J4r4   r2   N)r   r   r  r   r   rz   )r@   r0   rQ   rT   rV   r"   getdocr2   r-   r   r  r.   r#   )	r   r  r  rx   ry   r  r   r   r  s	            r'   r  r  
  s    :F       t c355 c{{ 	 	G#''--D j11 "("7"7?/?JJJ
/#

C~~ &#!666ch	 	"4 	"!#;;  #GT488#)/$//C{%c{{ " "G't<<D'%nT22?!E;.%%CJr4   )r   r   r   r   )r   r   r)   r*   r   r   )r   r   r   r5   )r   r   r   rE   )r   r   r   rM   )r   r   r   rR   )r   r   r   rY   r   )rl   r   r   r`   )NN)r   r   rx   r   ry   rz   r   r`   )r   r   r   r`   )r   r   ry   r<   r   r   r   r   )r   r   r   r   r   r<   )r   r   r   r<   r   r`   )r3  r   r   r`   )FN)r3  r   r8  r`   r9  r:  r   r;  )rL  r;  rM  r:  rI  r:  r   r;  )TTF)
rL  r;  rW  r`   rX  r`   rY  r`   r   r<   )rB  r<   r   r;  )r   )rz  r{  rv  r<   r   r;  )r   r   r  r   r  r`   rx   r   ry   rz   r   rz   )ar  
__future__r   rq  r   r5  ro   r#   rerh   r   rg   collections.abcr   r   r   r   r   r   r	   	importlibr
   r   r   r   r   r   r   ior   r   r   r   r   r   r   r   r   sphinx.pycode.astr   r  sphinx.utilr   sphinx.util.typingr   r   	getLoggerr   loggercompile
IGNORECASEr   r$   r3   rD   rI   rL   rQ   rX   r_   rk   rr   rt   rv   r-   r0   r1   r   r   r   r   r   r   r   r   r   r/   r   r   r   r@   r   r   r   r   r	  r  r]   r<   r,  r7  rB  rV  ro  ry  ru  r  rP   r4   r'   <module>r     s   , , " " " " " " 



        				 



   - - - - - - - - S S S S S S S S S S S S # # # # # #                                   ' & & & & & & & & & 4 4 4 4 4 4       ? ? ? ? ? ? ? ?		8	$	$BJ;R]KK 	 	 	 	 59      $                  .R R R R; ; ; ;
$ $ $ $
   5 5 5 5
            D D D D
> > > >
      :4 4 4 41 1 1 1
. . . .
- - - -
- - - -
, , , ,8 8 8 8
= = = =, , , ,, 8Ay{{ ?  ?  ?  ?  ?  ? D0 0 0 0.
 
 
 
 
 
 
 
       ,8 8 8 8 8 8 8 8B    c3h   .   7< 7< 7< 7< 7<t HL.2*S *S *S *S *SZ IM7;6;;8 ;8 ;8 ;8 ;8|. . . .=J =J =J =J =JD (!7 7 7 7 7 7 7r4   