
    }c+v                        d 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 ddlmZmZmZmZmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZ dd	l m!Z! dd
l m"Z# ddl$m%Z% ddl&m'Z' ddl&m(Z) ej*        dk    rddlm+Z+m,Z,m-Z- n6 e.e/j0                  Z+ e.e1j2                  Z, e.e3j4        d                   Z-	  e%j5        e6          Z7 ej8        dej9                  Z:dedefdZ;dddededefdZ<dedeee1                  fdZ=dedee1ef         fdZ>dedee1ef         fdZ?dedeedf         fdZ@dedeeedf                  fdZAdedee         fd ZBdedeCfd!ZDd"edeCfd#ZEd"edeCfd$ZFdedefd%ZGdedeCfd&ZHd_ded'ed(e1deCfd)ZId_ded'ed(e1deCfd*ZJd"edeCfd+ZKdedeCfd,ZLd-edeCfd.ZMdedeCfd/ZNdedeCfd0ZOdedeCfd1ZPdedeCfd2ZQdedeCfd3ZRdedeCfd4ZSdedeCfd5ZTdedeCfd6ZUdedeCfd7ZVdedeCfd8ZWdedeCfd9ZXded(e1d:edefd;ZYd<ede1fd=ZZded>e1deCfd?Z[ G d@ dA          Z\ G dB dC          Z] G dD dE          Z^ G dF dGee1ef                   Z_dHedeCfdIZ`di fdHedJeCdKedeja        fdLZbd_dMeja        dNedOedeja        fdPZc	 	 	 d`dMeja        dReCdSeCdTeCde1f
dUZddVe1deja        fdWZedadYe!jf        dZe1deja        fd[ZgeYdddfded\ed]eCd'ed(e1de1fd^ZhdS )bz&Helpers for inspecting Python modules.    N)partialpartialmethod)import_module)	Parameterisclassismethodismethoddescriptorismodule)StringIO)
MethodType
ModuleType)	AnyCallableDictMappingOptionalSequenceTupleTypecast)ast)unparse)logging)
ForwardRef)	stringify)      )ClassMethodDescriptorTypeMethodDescriptorTypeWrapperDescriptorTypefromkeysF)r   z at 0x[0-9a-f]{8,16}(?=>)obj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    3lib/python3.11/site-packages/sphinx/util/inspect.pyr(   r(   (   sS    3)** 	'J>#&&&   


s   ( ( 77stopr-   c                
   	 |r ||           r| S t          |           r| j        } n\t          j        |           rt	          | d          r| j        } n0t          |           r| j        } n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__func__isstaticmethod)r"   r-   s     r+   
unwrap_allr6   5   s    
 	DDII 	Js^^ 		(CCs## 	](C(C 	/CC3 	,CCC   	,CCJ    c                     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,      6[6[az!S7I7I6[6[6[6[6[6[r7   )safe_getattrr=   listtupleallr)   )r"   r9   s     r+   getallrG   I   sj     3	400G &twu.. 	&36[6[SZ6[6[6[3[3[ 	&NW%%%r7   c                 V    t          | dd          }t          |t                    r|S i S )z,Get __annotations__ from given *obj* safely.__annotations__NrC   r=   r   )r"   rI   s     r+   getannotationsrK   Y   s1    "3(94@@O/7++ 	r7   c                 V    t          | dd          }t          |t                    r|S i S )z(Get __globals__ from given *obj* safely.__globals__NrJ   )r"   rM   s     r+   
getglobalsrN   b   s0    sM488K+w'' 	r7   .c                 n    t          | dd          }t          |t                    r|S t                      S )z$Get __mro__ from given *obj* safely.__mro__N)rC   r=   rE   )r"   rP   s     r+   getmrorQ   k   s3    3	400G'5!! wwr7   c                     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   rC   getr=   rE   len)r"   rS   rT   s      r+   getorigbasesrW   t   so    ?3 t CR00H\\"233N.%(( S-@-@1-D tr7   c                     t          j        |           st          t          | dd          }|dS t	          |t
                    r|S t	          |t                    r|diS t	          |t          t          f          rd |D             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__Nc                     i | ]}|d S r;    r?   s     r+   
<dictcomp>zgetslots.<locals>.<dictcomp>   s    +++A4+++r7   )
r'   r   	TypeErrorrC   r=   dictr>   rD   rE   r)   )r"   rY   s     r+   getslotsr_      s     ?3 S+t44I 	t	It	$	$ 	Is	#	# 4  	Ie}	-	- ++++++r7   c                     t           j        dk    rt          | t          j                  S t          | dd          }t          | dd          }|dk    r|dk    rdS dS )	z)Check the if object is a kind of NewType.)r   
   
__module__N__qualname__typingzNewType.<locals>.new_typeTF)sysversion_infor=   rd   NewTyperC   )r"   rb   rc   s      r+   	isNewTyperh      sj    
7" #v~...!#|T::
#C>>! 	l6Q&Q 	45r7   xc                 ^    t          j        |           ot          | t          j                  S )z(Check if the object is subclass of enum.)r'   r   
issubclassenumEnumri   s    r+   isenumclassro      s#    ?1:*Q	":"::r7   c                 6    t          | t          j                  S )z)Check if the object is attribute of enum.)r=   rl   rm   rn   s    r+   isenumattributerq      s    a###r7   c                 P    t          |           r| j        } t          |           | S )zfGet an original object from partial object.

    This returns given object itself if not partial.
    )r0   r1   r*   s    r+   	unpartialrs      s0    
 C.. h C..  Jr7   c                 :    t          | t          t          f          S )zCheck if the object is partial.)r=   r   r   r*   s    r+   r0   r0      s    cG]3444r7   clsnamec                 >   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   rS   rU   r3   )r"   ru   rv   placeholderbaseclsmeths         r+   r3   r3      s    #{## 	+t		#		 +3< +@U@U +t	 + +hhc{{ 	+ 	+G#''k::D;& +$T*****+ 5r7   c                     t          | t                    rdS |rN|rLt          |d|g          D ]9}|j                            |          }|rt          |t                    r dS  dS :dS )z$Check if the object is staticmethod.TrP   F)r=   staticmethodgetattrrS   rU   )r"   ru   rv   r|   r}   s        r+   r5   r5      s    #|$$ !t	 
! 
! sIu55 	! 	!G#''--D !dL11 !44 55	! 5r7   c                 R    dD ]#}t          t          | |d                    r dS $dS )z/Check if the object is some kind of descriptor.)__get____set__
__delete__NTF)callablerC   )ri   items     r+   isdescriptorr      s>    2  LD$//00 	44	5r7   c                 (    t          | dd          du S )z)Check if the object is an abstractmethod.__isabstractmethod__FTrC   r*   s    r+   isabstractmethodr      s    3U;;tCCr7   methodc                 (    t          | dd          duS )z&Check if the method is a bound method.ry   Nr   )r   s    r+   isboundmethodr      s    
D11==r7   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))44 	5_Y'' 	5	$=$8$9$; < < 		 5)__%)99 	54ur7   c                     t          j        |           r2t          | d          r"t          | d          r| j        j        dk    rdS dS )z/Check if the object is singledispatch function.dispatchregister	functoolsTF)r'   r   r&   r   rb   r*   s    r+   is_singledispatch_functionr     sY    3 C$$C$$ L#{2 tur7   c                 R    	 ddl m} t          | |          S # t          $ r Y dS w xY w)z-Check if the object is singledispatch method.r   )singledispatchmethodF)r   r   r=   ImportError)r"   r   s     r+   is_singledispatch_methodr   (  sL    222222#3444   uus    
&&c                 D    t          j        t          |                     S )z Check if the object is function.)r'   r   r6   r*   s    r+   r   r   1  s    joo...r7   c                 D    t          j        t          |                     S )zCheck if the object is builtin.)r'   r   r6   r*   s    r+   r   r   6      Z__---r7   c                 D    t          j        t          |                     S )z(Check is any kind of function or method.)r'   r2   r6   r*   s    r+   r2   r2   ;  r   r7   c                     dt           dt          fd}t          | |          } t          | d          rt	          j        |           rdS dS )z*Check if the object is coroutine-function.r"   r#   c                     t          |           st          |           st          |           rdS t          | d          rdS dS )z2Check if the object is wrapped coroutine-function.Fr/   T)r5   r3   r0   r&   r*   s    r+   iswrappedcoroutinez/iscoroutinefunction.<locals>.iswrappedcoroutineB  sQ    # 	-"4"4 		# 	 5S-(( 	45r7   r,   __code__TF)r   boolr6   r&   r'   iscoroutinefunction)r"   r   s     r+   r   r   @  si    	 	 	 	 	 	 S1
2
2
2CsJ G$?$D$D  tur7   c                 R    t          | d          rt          j        |           rdS dS )z*Check if the object is async-gen function.r   TF)r&   r'   isasyncgenfunctionr*   s    r+   r   r   V  s2    sJ G$>s$C$C  tur7   c                 |    t           j        dk    rddlm} t	          | |          rdS t	          | t
                    S )z Check if the object is property.)r      r   )cached_propertyT)re   rf   r   r   r=   property)r"   r   s     r+   
ispropertyr   `  sK    
6! ------c?++ 	4c8$$$r7   c                 ,   t          t          d          rt          | t          j                  rdS t          t          d          rt          | t          j                  rdS t          t          d          rt          | t          j                  rdS dS )z$Check if the object is GenericAlias._GenericAliasTGenericAlias_SpecialGenericAliasF)r&   rd   r=   r   typesr   r   r*   s    r+   isgenericaliasr   j  s    (( 
sF011
t
%
(
( 
S%,
-
-t
&0
1
1 sF788tur7   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   	ExceptionrS   r   )r"   rv   r   excs       r+   rC   rC   y  s    ,sD+7++++ , , ,	 <%%%%%%% 	 	 	D	
  	1:T""+,s6    
A!-A!
:A:AA!AA!rz   c                 .    t           t                    rF	 t                     } fd|D             }dd                    |          z  S # t          $ r Y nw xY wt           t
                    rB	 t                     }dd                    d |D                       z  S # t          $ r Y nw xY wt           t                    rB	 t                     }dd                    d |D                       z  S # t          $ r Y n4w xY wt           t          j	                  r j
        j        d j        S 	 t                     }n# t          $ r}t          |d}~ww xY wt                              d	|          }|                    d
d          S )zFA repr() implementation that returns text safe to use in reST context.c              3   f   K   | ]+}t          |          d t          |                   V  ,dS ): Nobject_description)r@   keyrz   s     r+   rB   z%object_description.<locals>.<genexpr>  s]       - - )----/A&+/N/N/NP - - - - - -r7   z{%s}, c              3   4   K   | ]}t          |          V  d S r;   r   r@   ri   s     r+   rB   z%object_description.<locals>.<genexpr>  s+      %S%S&8&;&;%S%S%S%S%S%Sr7   zfrozenset({%s})c              3   4   K   | ]}t          |          V  d S r;   r   r   s     r+   rB   z%object_description.<locals>.<genexpr>  sG       1I 1I56 2DA1F1F 1I 1I 1I 1I 1I 1Ir7   .N 
 )r=   r^   sortedjoinr   setr]   	frozensetrl   rm   r   r   rv   reprr)   memory_address_resubreplace)rz   sorted_keysitemssorted_valuessr   s   `     r+   r   r     s   &$ B	- ..K- - - - +- - -E DIIe,,,,  	 	 	D	 
FC	 	  B	T"6NNM DII%S%S]%S%S%SSSSS  	 	 	D	 
FI	&	& 	B	I"6NNM %tyy 1I 1I:G1I 1I 1I (I (I I I  	 	 	D	
 
FDI	&	& B *333V[[AA"LL " " "c!" 	b!$$A99T3sM   A 
AA3B$ $
B10B1
C; ;
DD<E 
E#EE#	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 )rS   Nr   )r@   cr   s     r+   rB   z*is_builtin_class_method.<locals>.<genexpr>  s9      RRY,q*b2Q2Q%QR1RRRRRRr7   Fr   N)rQ   nextStopIterationrC   r   r   builtins)r"   r   mroru   rv   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eddfdZdedefdZdefdZ	dS )	DefaultValuezKA simple wrapper for default value of the parameters of overload functions.valuer#   Nc                     || _         d S r;   r   )selfr   s     r+   __init__zDefaultValue.__init__  s    


r7   otherc                     | j         |k    S r;   r   r   r   s     r+   __eq__zDefaultValue.__eq__  s    zU""r7   c                     | j         S r;   r   r   s    r+   __repr__zDefaultValue.__repr__  s
    zr7   )
r   rb   rc   __doc__r>   r   rz   r   r   r   r[   r7   r+   r   r     sy        UUc d    #F #t # # # ##      r7   r   c                   R    e Zd ZdZdeddfdZddZdedefdZ	de
fd	Zdefd
ZdS )TypeAliasForwardRefzPseudo typing class for autodoc_type_aliases.

    This avoids the error on evaluating the type inside `get_type_hints()`.
    rv   r#   Nc                     || _         d S r;   rv   )r   rv   s     r+   r   zTypeAliasForwardRef.__init__  s    			r7   c                     d S r;   r[   r   s    r+   __call__zTypeAliasForwardRef.__call__  s    r7   r   c                     | j         |k    S r;   r   r   s     r+   r   zTypeAliasForwardRef.__eq__  s    yE!!r7   c                 *    t          | j                  S r;   )hashrv   r   s    r+   __hash__zTypeAliasForwardRef.__hash__  s    DIr7   c                     | j         S r;   r   r   s    r+   r   zTypeAliasForwardRef.__repr__  s
    yr7   )r#   N)r   rb   rc   r   r>   r   r   r   r   r   intr   r   r[   r7   r+   r   r     s         S T       "C "D " " " "#    #      r7   r   c                   F    e Zd ZdZdedeeef         ddfdZdedefdZdS )	TypeAliasModulez-Pseudo module class for autodoc_type_aliases.modnamemappingr#   Nc                 0    || _         || _        d | _        d S r;   )_TypeAliasModule__modname_TypeAliasModule__mapping_TypeAliasModule__module)r   r  r  s      r+   r   zTypeAliasModule.__init__  s      .2r7   rv   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 r[   
startswithr@   kvprefixs      r+   r\   z/TypeAliasModule.__getattr__.<locals>.<dictcomp>  0    VVVtq!fAUAUVaVVVr7   )r   filterr  r  r   r   r   r   r   r  r   )r   rv   fullnamenestedr  s       @r+   __getattr__zTypeAliasModule.__getattr__  s    88F4$.$)?@@AAt~% 	8&t~h'?@@@^FVVVVt~';';'='=VVVF 8&x8888(222" 8 8 8} F(5dn(E(E"4=$777778s   B ?CC)	r   rb   rc   r   r>   r   r   r   r  r[   r7   r+   r   r     sm        773 3d38n 3 3 3 3 38 8 8 8 8 8 8 8r7   r   c                   B    e Zd ZdZdeeef         ddfdZdedef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#   Nc                     || _         d S r;   )_TypeAliasNamespace__mapping)r   r  s     r+   r   zTypeAliasNamespace.__init__  s     r7   r   c                     || j         v rt          | j         |                   S |dz   fd| j                                         D             }|rt          ||          S t          )Nr   c                 F    i | ]\  }}|                               ||S r[   r	  r  s      r+   r\   z2TypeAliasNamespace.__getitem__.<locals>.<dictcomp>!  r  r7   )r  r   r   r   KeyError)r   r   r  r  s      @r+   __getitem__zTypeAliasNamespace.__getitem__  st    $.  
	&t~c':;;;3YFVVVVt~';';'='=VVVF &sF333r7   )	r   rb   rc   r   r   r>   r   r   r  r[   r7   r+   r  r    sj         
!S#X !4 ! ! ! !s s      r7   r  subjectc                     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)rN   rU   r  r  )r  rM   s     r+   _should_unwrapr   )  sP    W%%K
##|3 OOJ'':+>> t5r7   bound_methodtype_aliasesc                    	 	 t          |           rt          j        |           }nt          j        | d          }n$# t          $ r t          j        |           }Y nw xY wt	          |j                                                  }|j        }n0# t          $ r# t          | d          rg }t          j        }n Y nw xY w	 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
    T)follow_wrapped_partialmethodN
annotationr#   r   F)return_annotation__validate_parameters__)r   r'   	signaturer)   rD   
parametersvaluesr(  
IndexErrorr&   r   emptyr  rd   get_type_hints	enumeraterv   r=   r   r   r   r   rV   pop	Signature)r  r!  r"  r*  r+  r(  localnsannotationsiparamr'  s              r+   r*  r*  4  sI   	3g&& L#-g66		#-gdKKK	 	3 	3 	3)'22III	3 ).557788
%7    7,-- 	J ) $\22+GT7CC!*-- 	E 	EHAuz[( E(4
j*=>> 1!+J % D D
1{" 	:+h/1DEE :$/$9$>!!$/$9!    	
  "G$$ 	" :" "q!!! Z;L5:< < < <s?   :> B AB A0B *B=<B=B:E< <
F	F	sigglobalnsr3  c                   	 dt           dt          dt          dt          fd	dt          dt          dt          dt          f	fd}|i }||}t          | j                                                  }t          |          D ]7\  }}|j        r+ ||j        ||          }|                    |	          ||<   8| j	        }|r ||||          }|                     ||
          S )z;Evaluate unresolved type annotations in a signature object.refr8  r3  r#   c                     t           j        dk    r#|                     ||t                                S |                     ||          S )zEvaluate a forward reference.)r   	   )re   rf   	_evaluater   )r:  r8  r3  s      r+   evaluate_forwardrefz/evaluate_signature.<locals>.evaluate_forwardrefy  s@    f$ 	4==7IKK@@@==7333r7   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'  r8  r3  r:  r>  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&  )r+  r(  )
r   r   r   rD   r+  r,  r0  r'  r   r(  )
r7  r8  r3  rA  r+  r5  r6  r'  r(  r>  s
            @r+   evaluate_signaturerB  v  s9   4 4t 4d 4s 4 4 4 4S D 4 C      &   cn++--..Jj)) A A5 	A!%"2HgFFJ!MMZM@@JqM- K$H%6'JJ;;*@Q;RRRr7   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           | j        t$          j        u s|d
u s|d
u rdd                    |          z  S t          | j        |          }	d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 = =Fz(%s)r   (z) -> )r+  r,  kindPOSITIONAL_ONLYappendKEYWORD_ONLYPOSITIONAL_OR_KEYWORDr   VAR_POSITIONALwriterv   VAR_KEYWORDr'  r.  stringify_annotationdefaultr   getvaluer   r(  r   )
r7  rC  rD  rE  modeargs	last_kindr6  argr'  s
             r+   stringify_signaturer[    s     ! DI&&((  :.. 	9@U3U 	KK:++ 		e>Y>C>S>B>D 1D 	 KKjj:-- 	"IIcEJ&''''Z5,, 	"IIdUZ'((((IIej!!! 	Du/u{B 	DIIdOOOII*5+;TBBCCC=+ 	9 5#35;#F 		%    		#II(77888CLLNN###J		I-- C0 <u$<"e+< 		$'')#*?FF

#yy

;;r7   r*  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   )r   parser   FunctionDefbodysignature_from_ast)r*  codemodulefunctions       r+   signature_from_strrd    sE    	!H,DYt__FCOV[^44Hh---r7   r   nodera  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   )rU  r'  r&  N)r(  )rX  rD   defaultsr&   rV   rg  rangeinsertr   r.  r0  r   ast_unparser'  rN  rZ  rM  rP  varargrQ  
kwonlyargskw_defaultsrO  kwargrS  returnsr'   r2  )re  ra  rX  rh  paramsrg  positionals_r5  rZ  rU  r'  r(  s                r+   r`  r`    s   9DDM""HFt]## %$*++!C	NN2$)nn3x==+.. , ,9?++++t]## 	M 011 	M 	MFAs{io- G#/&{8A;'E'EFF$S^T::MioJMM)CGY-F,3
L L L M M M M DI&& I I3AO$	7 	QoGG";xK/H$#O#OPPG 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 	KoGG";t/?/BD#I#IJJG 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Ir7   
attrgetterallow_inheritedc                    t           fdt          dt          dt          t                   f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"   rt  r#   c                 N     || dd           }t          |t                    r|S d S )Nr   r<   )r"   rt  docs      r+   getdoc_internalzgetdoc.<locals>.getdoc_internal1  s1    ji..c3 	J4r7   r4   N)rC   r   r   r   r>   r3   rQ   rS   rU   r&   getdocr4   r0   r   r   r1   r'   )	r"   rt  ru  ru   rv   ry  r|   r}   rx  s	            r+   rz  rz  '  s    :F  S h (SV-      t c355 c{{ 	 	G#''--D j11 T]++ / JJJ
/#

C~~ &#!66 &ch	 & & 	"4 	"!#;;  #GT488 )/$//C  "%c{{ " "G't<<D "%nT22 "!E 	&.%%CJr7   )NN)TTF)r   )ir   r   r  rl   r'   rere   r   rd   r   r   r   	importlibr   r   r   r   r	   r
   ior   r   r   r   r   r   r   r   r   r   r   r   sphinx.pycode.astr   r   rk  sphinx.utilr   sphinx.util.typingr   r   rT  rf   r   r   r    r   rz   r   r>   r   r^   rS   	getLoggerr   loggercompile
IGNORECASEr   r(   r6   rG   rK   rN   rQ   rW   r_   r   rh   ro   rq   rs   r0   r3   r5   r   r   r   r   r   r   r   r   r   r2   r   r   r   r   rC   r   r   r   r   r   r  r   r2  r*  rB  r[  rd  r^  r`  rz  r[   r7   r+   <module>r     s:	   , ,        				 



   , , , , , , , , # # # # # # N N N N N N N N N N N N N N       ( ( ( ( ( ( ( ( V V V V V V V V V V V V V V V V V V V V V V ! ! ! ! ! ! 4 4 4 4 4 4       ) ) ) ) ) ) @ @ @ @ @ @f <\\\\\\\\\\\ $V_ 5 54>> Dz!:;; 
	8	$	$BJ;R]KK 
 
 
 
 
 
 .2   C ( c    (& &#/ & & & &  S 1    C GCH-     dCi(    c huS#X7    # (4.    .
3 
4 
 
 
 
;3 ;4 ; ; ; ;
$s $t $ $ $ $
3 3    53 54 5 5 5 5
 s  3 $       # C 4    &C D    D# D$ D D D D
>* > > > > >
c d    s t    >C D    # $    /C /D / / / /
.3 .4 . . . .
.3 .4 . . . .
S T    ,C D    %C %D % % % %     ,c , , , , , , ,,% s % s %  %  %  % P0 0 0 0 0 0 0.
 
 
 
 
 
 
 
       ,8 8 8 8 8 8 8 8B    c3h   .H      7<RT ?< ?<x ?<t ?<4 ?<$?< ?< ?< ?<D,S ,SG- ,S ,St ,S#-,S ,S ,S ,S^ IM7;6;:< :<W. :< :<04:</3:<@C:< :< :< :<z.# .'*; . . . .9J 9JS_ 9JC 9JAR 9J 9J 9J 9Jx -9#(Tt2 2 2 2 2/22AD2PS2 2 2 2 2 2r7   