
    O&ia                     4   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mZ ddlmZ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mZ ddlmZ ddlmZ dd	lmZ dd
lmZmZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddl3m5Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z> ddl?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJmKZK  e:jL        eM          ZN ejO        dejP                  ZQ e1d           e1d           e1d           e1d           e1d            e1d!           e1d"          d#ZR G d$ d%e          ZS G d& d'e          ZTdgd)eUd*eVd+eeUeUeUeVf         fd,ZW	 	 dhd-eUd.ee/         d*eVd+ej        fd/ZXd0eUd.e/d+ee         fd1ZY	 did2eUd.ee/         d+ejZ        fd3Z[d4ed2eUd+dfd5Z\ G d6 d7          Z] G d8 d9e]e<          Z^ G d: d;e]e=          Z_ G d< d=e]e>          Z` G d> d?e(eeUeUf                            Za G d@ dAea          Zb G dB dCeb          Zc G dD dEea          Zd G dF dGea          Ze G dH dIea          Zf G dJ dKef          Zg G dL dMef          Zh G dN dOef          Zi G dP dQea          Zj G dR dSea          Zk G dT dUe@          Zl G dV dWe@          Zm G dX dYe8          ZndZe"d[eUd\eUd]ed+df
d^Zo G d_ d`e+          Zp G da dbe*          ZqdZe"d.e/dcedded+ef
deZrdZe"d+e	eUef         fdfZsdS )jzThe Python domain.    N)	Parameter)
AnyDictIterableIteratorList
NamedTupleOptionalTupleTypecast)nodes)ElementNode)
directives)Inliner)addnodes)desc_signaturepending_xrefpending_xref_condition)Sphinx)Builder)RemovedInSphinx60Warning)ObjectDescription)DomainIndex
IndexEntryObjType)BuildEnvironment)___)ast)parse)XRefRole)logging)FieldGroupedField
TypedField)SphinxDirectiveswitch_source_input)signature_from_str)find_pending_xref_conditionmake_idmake_refnodenested_parse_with_titles)
OptionSpecTextlikeNodea  ^ ([\w.]*\.)?            # class name(s)
          (\w+)  \s*             # thing name
          (?: \(\s*(.*)\s*\)     # optional: arguments
           (?:\s* -> \s* (.*))?  #           return annotation
          )? $                   # and nothing more
          modulekeywordoperatorobject	exception	statementzbuilt-in function)r2   r3   r4   r5   r6   r7   builtinc                   8    e Zd ZU eed<   eed<   eed<   eed<   dS )ObjectEntrydocnamenode_idobjtypealiasedN__name__
__module____qualname__str__annotations__bool     b/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/domains/python.pyr:   r:   =   s4         LLLLLLLLLMMMMMrG   r:   c                   B    e Zd ZU eed<   eed<   eed<   eed<   eed<   dS )ModuleEntryr;   r<   synopsisplatform
deprecatedNr?   rF   rG   rH   rJ   rJ   D   sB         LLLLLLMMMMMMrG   rJ   F	reftargetsuppress_prefixreturnc                    d}|                      d          r| dd         } | }d}n{|                      d          r&| dd         } |                     d          d         }n@|r|                     d          d         }n"|                      d          r| d	d         }n| }| d
k    s|                      d          rd}nd}|| ||fS )zLParse a type string and return (reftype, reftarget, title, refspecific flag)F.   NT~typing.   Noneobjclass)
startswithsplit)rN   rO   refspecifictitlereftypes        rH   parse_reftargetr`   L   s     KC   abbM				c	"	" abbM	$$R(	 $$R(			i	(	( !""Fi229==Iuk11rG   targetenvc                    |r6|j                             d          |j                             d          d}ni }t          | |          \  }} }}|j        j        r@|                    d          d         }t          d|d          t          d|d	          g}nt          j        |          g}t          dg|R d
|| |d|S )z0Convert a type string to a cross reference node.	py:modulepy:class)rd   re   rR   rU    resolved	condition*py)	refdomainr_   rN   r]   )
ref_contextgetr`   config!python_use_unqualified_type_namesr\   r   r   Textr   )	ra   rb   rO   kwargsr_   r^   r]   	shortname	contnodess	            rH   type_to_xrefru   g   s     "22;??!o11*==? ? *9&/*R*R'GVUK
z3 ( KK$$R(	!7IQ[!\!\!\!7ES!Q!Q!Q!S		 Z&&'	 ;Y ; ;"&6$/; ;39; ; ;rG   
annotationc                 :   dt           j        dt          t                   ffd	 t	          |           }g } |          D ]5}t          |t          j                  r|                    |d                    9t          |t          j	                  r|
                                r|rt          |d         t          j                  re|d                                         dk    rG|                                 |                    t          t!          |          |d                     |                    t          t!          |          |                      |                    |           7|S # t"          $ r t          | |          gcY S w xY w)	zParse type annotation.noderP   c                 2   t          | t          j                  r3t          j         | j                  d         d| j                  gS t          | t          j                  rX | j                  }|	                     | j
                             |	                     | j                             |S t          | t          j                  r:t          j                    t          j        dd          t          j                    gS t          | t          j                  r| j        t"          u rt          j        dd          gS t          | j        t$                    r(t          j        dt)          | j                            gS t          | j        t*                    r(t          j        dt)          | j                            gS t          | j        t.                    r(t          j        dt)          | j                            gS t          j        t)          | j                            gS t          | t          j                  r | j                  S t          | t          j                  r | j                  S t          | t          j                  rt          j        dd          gS t          | t          j                  rt          j        dd          g}| j        r| j        D ]n}|	                     |                     |                    t          j        dd                     |                    t          j                               o|                                 |                                 |                    t          j        dd	                     |S t          | t          j                   r!tC          fd
| j"        D             g           S t          | t          j#                  rt          j        | j$                  gS t          | t          j%                  r | j                  }|                    t          j        dd                     |	                     | j&                             |                    t          j        dd	                     |d         dv rRtO          |dd          d          D ]8\  }}t          |t          j                  rt          j(        dd|          ||<   9|S t          | t          j)                  r! | j
                   | j*                  z   S t          | t          j+                  r| j        rg }| j        D ]n}|	                     |                     |                    t          j        dd                     |                    t          j                               o|                                 |                                 n*t          j        dd          t          j        dd          g}|S tX          j-        dk     r*t          | t          j.                  r(t          j        dt)          | j/                            gS t          | t          j                  rt          j        dd          gS t          | t          j0                  rt          j        | j                  gS t          | t          j1                  r(t          j        dt)          | j2                            gS t          | t          j3                  r(t          j        dt)          | j/                            gS th          )Nr   rR   rf   |z...rT   [,]c              3   .   K   | ]} |          V  d S NrF   ).0eunparses     rH   	<genexpr>z5_parse_annotation.<locals>.unparse.<locals>.<genexpr>   s+      66q

666666rG   )Literaltyping.LiteralrS   )start())      )5
isinstancer"   	Attributer   rq   valueattrBinOpleftextendoprightBitOrr   desc_sig_spacedesc_sig_punctuationConstantEllipsisrE   desc_sig_keywordreprintdesc_sig_literal_numberrC   desc_sig_literal_stringExprr   Invertr   eltsappendpopModulesumbodyNameid	Subscriptslice	enumerateliteralUnaryOpoperandr   sysversion_infoBytessNameConstantNumnStrSyntaxError)rx   resultelemisubnoder   s        rH   r   z"_parse_annotation.<locals>.unparse   s   dCM** Y	J''$**=*=a*@*@*@$))LMMNNci(( W	!(!3!3FMM''$'**+++MM''$*--...Mci(( R	+--1"c::+--/ / cl++ N	zX%% 5b%@@AADJ-- 	6 1"d4:6F6FGGHHDJ,, 6 8T$*=M=MNNOODJ,, 6 8T$*=M=MNNOO 
4
#3#34455ch'' A	74:&&&ci(( ?	74:&&&cj)) =	1"c::;;ch'' ;	3B<<=Fy 	 !I = =DMM''$--000MM("?C"H"HIIIMM("9";";<<<<



MM(7C@@AAAMcj)) -	6666DI666;;;ch'' +	Jtw''((cm,, )	WTZ((FMM(7C@@AAAMM''$*--...MM(7C@@AAA ay999"+F122Ja"@"@"@ C CJAw!'5:66 C$)M"b'$B$Bq	Mck** 	747##ggdl&;&;;;ci(( 	y 
B I = =DMM''$--000MM("?C"H"HIIIMM("9";";<<<<



"7C@@"7C@@B M&((dCI.. 	P$<RdfNNOOcl33 P$9"eDDEEc&677 P!Jtz2233cg.. P$<RdfNNOOcg.. P$<RdfNNOOrG   r   rU   rT   T)rO   )r"   ASTr   r   	ast_parser   r   r   r   rq   stripr   r   astextr   ru   rC   r   )rv   rb   treer   rx   r   s        @rH   _parse_annotationr      s   Zcg Z$t* Z Z Z Z Z Zx/$$GDMM 	$ 	$D$.. 
$d1g&&&&D%*-- $$**,, $ @z&*h6STT @r
))++s22JJLLLMM,s4yy#t"T"T"TUUUUMM,s4yy#">">????d#### / / /Z--..../s   EE< <FFarglistc           
         t          j        |           }t          d| z            }d}|j                                        D ]`}|j        |j        k    r7||j        k    r,|t          j        ddt          j        dd                    z  }|j        |j	        k    r=||j
        |j        dfv r,|t          j        ddt          j        dd                    z  }t          j                    }|j        |j        k    r6|t          j        dd          z  }|t          j        d|j                  z  }nc|j        |j        k    r6|t          j        dd          z  }|t          j        d|j                  z  }n|t          j        d|j                  z  }|j        |j        urYt#          |j        |          }|t          j        dd          z  }|t          j                    z  }|t          j        ddg|R  z  }|j        |j        ur|j        |j        urE|t          j                    z  }|t          j        dd          z  }|t          j                    z  }n|t          j        dd          z  }|t+          j        d|j        d	gd
          z  }||z  }|j        }b|t.          j        k    r,|t          j        ddt          j        dd                    z  }|S )z*Parse a list of arguments using AST parserz(%s)Nrf   /rj   z**:=default_valueF)classessupport_smartquotes)r   desc_parameterlistr+   
parametersvalueskindPOSITIONAL_ONLYdesc_parameterdesc_sig_operatorKEYWORD_ONLYPOSITIONAL_OR_KEYWORDVAR_POSITIONALdesc_sig_namenameVAR_KEYWORDrv   emptyr   r   r   defaultr   inliner   )r   rb   paramssig	last_kindparamrx   childrens           rH   _parse_arglistr      s    (11F
Vg-
.
.CI&&(( $ $:...9@U3U3Uh-b"h6PQSUX6Y6YZZZF:+++	e>Y>C>S>B>D 1D 1D h-b"h6PQSUX6Y6YZZZF&((:---H.r3777DH*2uz:::DDZ5,,,H.r4888DH*2uz:::DDH*2uz:::D5;..()93??HH1"c:::DH+---DH*2r=H====D=++u{22/11122s;;;/11122s;;;ELU]_<M5:< < < <D 	$J		I---()"b(2LRQT2U2UVVVMrG   signodec                    t          j                    }|g}	 |                    d          D ]R}|                                }dx}}|                    d          rm|                    t          j                               |dxx         |d         z  cc<   |dd                                         }|                    d          m|                    d          rE|                                 |dd                                         }|                    d          E|                    d          r`|                    d	          sK|dz  }|dd                                         }|                    d          r|                    d	          K|                    d          r6|dz  }|dd                                         }|                    d          6|r7|dxx         t          j	        d
d
t          j
        ||                    z  cc<   |rC|                    t          j                               |dxx         |d         z  cc<   |dz  }|C|r|                                 |dz  }|Tt          |          dk    rt          	 | |z  } dS # t          $ r4 t          j                    }|t          j	        ||          z  }| |z  } Y dS w xY w)z"Parse" a list of arguments separated by commas.

    Arguments can have "optional" annotations given by enclosing them in
    brackets.  Currently, this will split at any comma, even if it's inside a
    string literal (e.g. default argument value).
    r|   r   r{   rU   rS   Nr}   z[]rf   )r   r   r\   r   r[   r   desc_optionalr   endswithr   r   len
IndexError)r   r   	paramliststackargument	ends_open
ends_closes          rH   _pseudo_parse_arglistr   '  s4    +--I%;E%c** 	  	 H~~''H%&&I
%%c** 0X355666b			U2Y&			#ABB<--// %%c** 0 %%c** 0		#ABB<--// %%c** 0 ##C(( 11B1B41H1H 1a
#CRC=..00 ##C(( 11B1B41H1H 1 ##C(( 1Q	#CRC=..00 ##C(( 1  Hb			X4H28XFFH H H			 X355666b			U2Y&			Q	     		a
    u::??  	9     /11	X,Wg>>>	9s   JJ# #:K! K!c                        e Zd Zej        ddddfdedededee         dede	de
d	ed
ef fdZej        ddddfdedededee         dede	de
d	ed
ee         fdZ xZS )PyXrefMixinNrolenamedomainra   	innernodecontnoderb   inlinerlocationrP   c	           
         t                                          ||||||d d           }	t          |	t                    rd|	d<   |j                            d          |	d<   |j                            d          |	d<   t          |          \  }
}}}||k    r.|
|	d<   ||	d<   |	                                 |	 |||          z  }	n|j        j	        r{|	j
        }|	                                 |                    d          d	         } |d
|          }t          d
d
|d          t          d
d
g|R ddig}|	                    |           |	S )N)r   r   Tr]   rd   re   r_   rN   rR   rU   rf   rg   rh   ri   rj   )super	make_xrefr   r   rm   rn   r`   clearro   rp   r   r\   r   r   )selfr   r   ra   r   r   rb   r   r   r   r_   rN   reftitler    r   rs   textnodert   	__class__s                     rH   r   zPyXrefMixin.make_xref[  s}    ""8VV#,h#&t # E E fl++ 	)$(F=!"%/"5"5k"B"BF;!$!4!4Z!@!@F:.=f.E.E+GY!H$$$+y!&/{#))Hh777= )!?"LL--b1	$9R333BHPZ[[[3BUXUUUQTUUW	i(((rG   c	                    d}	t          j        |	          }
t          j        |	|          }t          |o|                                |k              }d}g }t          d |          D ]}|rt          j        |          }|s|
                    |          r"|	                    |p |||                     n/|	                    | 
                    ||||||||                     |dv rd}|S )Nz>(\s*[\[\]\(\),](?:\s*o[rf]\s)?\s*|\s+o[rf]\s+|\s*\|\s*|\.\.\.)F)r   r   z~typing.LiteralT)recompiler\   rE   r   filterr   rq   matchr   r   )r   r   r   ra   r   r   rb   r   r   delims	delims_resub_targetssplit_contnode
in_literalresults
sub_targets                   rH   
make_xrefszPyXrefMixin.make_xrefs|  s    SJv&&	hvv..hF8??+<+<+FGG
 {33 	" 	"J 2 :j11 \Y__Z88 \xL99Z+L+LMMMMt~~h
.73QY [  [ \ \ \ MMM!
rG   )r@   rA   rB   r   emphasisrC   r   r1   r   r   r   r   r   r  __classcell__r   s   @rH   r   r   Z  s$       27.#'%)D # s C !,/ .> # 6: FJ     D 49>$($&*T 3  S "<0!/? $ 7; GK4j       rG   r   c                       e Zd ZdS )PyFieldNr@   rA   rB   rF   rG   rH   r  r            DrG   r  c                       e Zd ZdS )PyGroupedFieldNr  rF   rG   rH   r  r    r  rG   r  c                       e Zd ZdS )PyTypedFieldNr  rF   rG   rH   r  r    r  rG   r  c                   H   e Zd ZU dZej        ej        ej        ej        ej        ej        dZee	d<    e
d ed          dddd	
           e
d ed          dddd	
           ed ed          ddd	           ed ed          dd           ed ed          ddd          gZdZdedeej                 fdZdefd Zded!edeeef         fd"Zd#edeed$f         fd%Zd&ed'eeef         defd(Zd)eeef         ded!edd*fd+Zd/d,Zd/d-Zd#edefd.Z d*S )0PyObjectz
    Description of a general Python object.

    :cvar allow_nesting: Class is an object that allows for nested namespaces
    :vartype allow_nesting: bool
    )noindexnoindexentrynocontentsentryr2   	canonicalrv   option_spec	parameter
Parameters)r   r  argr   r3   kwargkwparamrZ   )	paramtypetypeT)labelnamestyperolename	typenamescan_collapsevariable	Variables)varivarcvar)vartype
exceptionsRaisesexc)raisesraiser6   except)r"  r   r#  r&  returnvalueReturnsF)returnsrP   )r"  has_argr#  
returntypezReturn type)rtype)r"  r6  r#  bodyrolenamer   rP   c                     g S )zTMay return a prefix to put before the object name in the
        signature.
        rF   r   r   s     rH   get_signature_prefixzPyObject.get_signature_prefix  s	     	rG   c                     dS )zqMay return true if an empty argument list is to be generated even if
        the document contains none.
        FrF   r   s    rH   needs_arglistzPyObject.needs_arglist  s	     urG   r   c           	         t                               |          }|t          |                                \  }}}}| j                            d| j        j                            d                    }| j        j                            d          }	|	rid}
|rN||	k    s|                    |	dz             r0||z   }|t          |	          d         
                    d          }n:|r|	dz   |z   |z   }n,|	dz   |z   }n#d}
|r|                    d          }	||z   }nd}	|}||d<   |	|d	<   ||d
<   |                     |          }|rt          |          t          u rYt          j        d                    |          t$                     |t'          j        |dt+          j        |                    z  }n#|t'          j        t          |          dg|R  z  }|r|t'          j        ||          z  }n2|r0|
r.| j        j        j        r|dz   }|t'          j        ||          z  }|t'          j        ||          z  }|rz	 |t7          || j                  z  }n# t8          $ r t;          ||           Y nnt<          $ r8}t>                               d|||           t;          ||           Y d}~n2d}~ww xY w| !                                r|t'          j"                    z  }|r+tG          || j                  }|t'          j$        |dg|R  z  }| j                            d          }|r@|t'          j        d|z   dt'          j%                    t+          j        |                    z  }||fS )aJ  Transform a Python signature into RST nodes.

        Return (fully qualified name of the thing, classname if any).

        If inside a class, the current class name is handled intelligently:
        * it is stripped from the displayed name if present
        * it is added to the full name (return value) if not present
        Nr2   rd   re   FrR   Trf   rZ   fullnamezPython directive method get_signature_prefix() returning a string is deprecated. It must now return a list of nodes. Return value was '{}'.z could not parse arglist (%r): %sr   rv    )&	py_sig_rer   
ValueErrorgroupsoptionsrn   rb   rm   r[   r   lstriprstripr<  r!  rC   warningswarnformatr   r   desc_annotationr   rq   desc_addnamero   add_module_names	desc_namer   r   r   NotImplementedErrorloggerwarningr?  r   r   desc_returnsr   )r   r   r   mprefixr   r   retannmodname	classname
add_modulerA  
sig_prefixnodetextr/  r   annos                    rH   handle_signaturezPyObject.handle_signature  s	    OOC  9()

%gv ,""8TX-A-E-Ek-R-RSSH(,,Z88	 	 J 26Y..!,,Y_== /!D=I077<< 2 %s?V3d: %s?T1J  "MM#..	!D=	#$&
..s33
 	VJ3&&. /5fZ.@.@,. . . 83J49Jz4J4JL L L 83C
OORU*UUUU 	Ax,VV<<<GG 	A 	A(H 	A}Hx,Xx@@@G8%dD111 	9	8>'48<<< 8 8 8 &gw77777& 8 8 8A7C(/  1 1 1%gw777777778
 !!## 986888 	D(::Hx,VRC(CCCCG|-- 	Bx/d
B080G0I0I05
40@0@B B BG s   I J87	J8 .J33J8sig_node.c                     d|vrdS |                     d          }|d         }|r|g|                    d          R S t          |                    d                    S )NrA  rF   r2   rR   )rn   r\   tuple)r   r_  rX  rA  s       rH   _object_hierarchy_partsz PyObject._object_hierarchy_parts2  sl    X%%2,,x((J' 	.2hnnS11222,,---rG   rX  r   c                      t          d          )z2Return the text for the index entry of the object.z!must be implemented in subclasses)rQ  )r   rX  r   s      rH   get_index_textzPyObject.get_index_text=  s    !"EFFFrG   name_clsNc                    | j                             d| j        j                            d                    }|r|dz   nd|d         z   }t	          | j        | j        j        d|          }|d                             |           | j        j                            |           t          t          | j                            d                    }|                    || j        ||           | j                             d	          }|r|                    || j        |d
|           d| j         vr?|                     ||          }	|	r)| j        d                             d|	|dd f           d S d S d S )Nr2   rd   rR   rf   r   idsrk   rB  r  T)r>   r   r  entriessingle)rG  rn   rb   rm   r-   statedocumentr   note_explicit_targetr   PythonDomain
get_domainnote_objectr=   rd  	indexnode)
r   re  r   r   rX  rA  r<   r   canonical_name	indextexts
             rH   add_target_and_indexzPyObject.add_target_and_indexA  s   ,""8TX-A-E-Ek-R-RSS%,4GcMM"C$(DJ$7XFFg&&&
00999lDH$7$7$=$=>>8T\7WMMM))+66 	1~t|Wd(/  1 1 1 --++GX>>I [y)00(IwPRTX1YZZZZZ .-[ [rG   c                    d}| j         r1| j         d         \  }}| j        r|}n|r|                    d          }|rK|| j        j        d<   | j        r5| j        j                            dg           }|                    |           d| j        v rn| j        j                            dg           }|                    | j        j                            d                     | j        d         | j        j        d<   dS dS )	a  Handle object nesting before content

        :py:class:`PyObject` represents Python language constructs. For
        constructs that are nestable, such as a Python classes, this method will
        build up a stack of the nesting hierarchy so that it can be later
        de-nested correctly, in :py:meth:`after_content`.

        For constructs that aren't nestable, the stack is bypassed, and instead
        only the most recent object is tracked. This object prefix name will be
        removed with :py:meth:`after_content`.
        NrU   rR   re   
py:classesr2   
py:modulesrd   )	r#  allow_nestingr   rb   rm   
setdefaultr   rG  rn   )r   rV  rA  name_prefixr   moduless         rH   before_contentzPyObject.before_contentV  s    : 		0
 '+jn#X{! 0! 0$**3// 	'/5DH ,! '(.99,KKv&&&t|##h*55lBGGGNN48/33K@@AAA04X0FDH --- $#rG   c                    | j         j                            dg           }| j        r&	 |                                 n# t
          $ r Y nw xY wt          |          dk    r|d         nd| j         j        d<   d| j        v rf| j         j                            dg           }|r#|                                | j         j        d<   dS | j         j                            d           dS dS )	a^  Handle object de-nesting after content

        If this class is a nestable object, removing the last nested class prefix
        ends further nesting in the object.

        If this class is not a nestable object, the list of classes should not
        be altered as we didn't affect the nesting levels in
        :py:meth:`before_content`.
        ru  r   rU   Nre   r2   rv  rd   )rb   rm   rx  rw  r   r   r   rG  )r   r   rz  s      rH   after_contentzPyObject.after_contentw  s     (&11,CC 	   ;>w<<!;K;KGBKK15 	Z(t|##h*55lBGGG 64;KKMM$[111$((55555 $#s   > 
A
Ac                 v   |                     d          sdS | j        j        j        }|j                             d          }|j        r|dv rd}nd}|d         ^ }}|j        dk    r|                     d|          |z   S |j        dk    r||z   S |j        d	k    rd
                    |||z   gz             S dS )N
_toc_partsrf   r=   >   methodfunction()r   rA  hideallrR   )rn   rb   appro   parentadd_function_parenthesestoc_object_entries_show_parentsjoin)r   r_  ro   r=   parensparentsr   s          rH   _toc_entry_namezPyObject._toc_entry_name  s    ||L)) 	2$/%%i00* 	w:P/P/PFFF!,/$1X==<<
D11F::1V;;&= 1U::88Gtf}o5666rrG   )rP   N)!r@   rA   rB   __doc__r   flag	unchangedr  r0   rD   r  r    r  r&   r  doc_field_typesrw  rC   r   r   r   r<  rE   r?  r   r   r^  rb  rd  rs  r{  r}  r  rF   rG   rH   r  r    s          ?"%?&) * K    	[,;")5J"&		( 	( 	(
 	Zqq~~2")\"&	( 	( 	( 	|11X;;G$(	* 	* 	* 	m11Y<<)	+ 	+ 	+AAm$4$4e w	8 	8 	8O& M UZ0@    t    [ C [ . [ U3PS8_ [  [  [  [ z	. 	.5c? 	. 	. 	. 	.Gc GsCx GS G G G G[U38_ [3 [&4[9=[ [ [ [*G G G GB6 6 6 62 3      rG   r  c                       e Zd ZU dZej                                        Zeed<   e	                    de
j        i           dedeej                 fdZdefdZdeeef         ded	edd
f fdZdedeeef         defdZ xZS )
PyFunctionzDescription of a function.r  asyncr   rP   c                 h    d| j         v r(t          j        dd          t          j                    gS g S )Nr  rf   )rG  r   r   r   r;  s     rH   r<  zPyFunction.get_signature_prefix  s<    dl""-b'::+--/ / IrG   c                     dS )NTrF   r>  s    rH   r?  zPyFunction.needs_arglist  s    trG   re  r   Nc                    t                                          |||           d| j        vr| j                            d| j        j                            d                    }|d         d         }|\  }}|r;t          d          ||fz  }| j        d                             d||d	d f           d S t          d
         d|d}| j        d                             d||d	d f           d S d S )Nr  r2   rd   rg  r   %s() (in module %s)rh  ri  rf   r8   ; r  pair)
r   rs  rG  rn   rb   rm   r    rp  r   pairindextypes)
r   re  r   r   rX  r<   r   clstextr   s
            rH   rs  zPyFunction.add_target_and_index  s   $$XsG<<<--l&&x1E1I1I+1V1VWWGenQ'G ID# T.//4/Ay)00(D'2t1TUUUUU%3I%>%>%>Ey)00&$T1RSSSSS .-rG   rX  c                     d S r   rF   r   rX  re  s      rH   rd  zPyFunction.get_index_text  s    trG   )r@   rA   rB   r  r  r  copyr0   rD   updater   r  rC   r   r   r   r<  rE   r?  r   r   rs  rd  r
  r  s   @rH   r  r    s-        $$&27799K999    UZ0@    t    TU38_ T3 T&4T9=T T T T T Tc U38_         rG   r  c                   h     e Zd ZdZdee         f fdZdedede	eef         f fdZ
defdZ xZS )PyDecoratorFunctionzDescription of a decorator.rP   c                 R    d| _         t                                                      S )Nzpy:functionr   r   runr   r   s    rH   r  zPyDecoratorFunction.run  s    !	ww{{}}rG   r   r   c                     t                                          ||          }|                    dt          j        dd                     |S Nr   @r   r^  insertr   rN  r   r   r   retr   s       rH   r^  z$PyDecoratorFunction.handle_signature  B    gg&&sG44q(/S99:::
rG   c                     dS NFrF   r>  s    rH   r?  z!PyDecoratorFunction.needs_arglist      urG   r@   rA   rB   r  r   r   r  rC   r   r   r^  rE   r?  r
  r  s   @rH   r  r    s        %%T$Z      
C . U3PS8_      
t        rG   r  c                        e Zd ZU dZej                                        Zeed<   e	                    e
j        e
j        d           dededeeef         f fdZded	eeef         defd
Z xZS )
PyVariablezDescription of a variable.r  r!  r   r   r   rP   c                 .   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }| j                            d          }|rc|t          j        |dt          j	                    t          j        dd          t          j	                    t          j        |                    z  }||fS Nr!  rf   r   r   r   r   r^  rG  rn   r   rb   r   rM  r   r   r   rq   	r   r   r   rA  rV  typannotationsr   r   s	           rH   r^  zPyVariable.handle_signature  s    7733CAA&lv&& 	Y+C::Kx/R080MbRU0V0V080G0I0IYLWY Y Y YG   )) 	Cx/r080G0I0I080MbRU0V0V080G0I0I05
50A0A	C C CG rG   rX  re  c                 \    |\  }}|rt          d          ||fz  S t          d          |z  S )N%s (in module %s)z%s (built-in variable))r    )r   rX  re  r   r  s        rH   rd  zPyVariable.get_index_text  s?    	c 	6())T7O;;-..55rG   r@   rA   rB   r  r  r  r  r0   rD   r  r   r  rC   r   r   r^  rd  r
  r  s   @rH   r  r    s         $$&27799K999$%    
 C  .  U3PS8_            (6c 6U38_ 6 6 6 6 6 6 6 6 6rG   r  c                       e Zd ZU dZej                                        Zeed<   e	                    de
j        i           dZdedeej                 fdZded	eeef         defd
ZdS )PyClasslikezO
    Description of a class-like object (classes, interfaces, exceptions).
    r  finalTr   rP   c                    d| j         v rQt          j        d          t          j                    t          j        | j                  t          j                    gS t          j        | j                  t          j                    gS )Nr  )rG  r   rq   r   r   r=   r;  s     rH   r<  z PyClasslike.get_signature_prefix  so    dl""Jw'')@)B)BJt|,,h.E.G.GI I Jt|,,h.E.G.GHHrG   rX  re  c                     | j         dk    r4|st          d          |d         z  S t          d          |d         |fz  S | j         dk    r|d         S dS )NrZ   z%s (built-in class)r   z%s (class in %s)r6   rf   )r=   r    r  s      rH   rd  zPyClasslike.get_index_text  sh    <7"" >.//(1+=='((HQK+AAA\[((A;2rG   N)r@   rA   rB   r  r  r  r  r0   rD   r  r   r  rw  rC   r   r   r   r<  r   rd  rF   rG   rH   r  r     s           '27799K999    MI IUZ0@ I I I Ic U38_       rG   r  c            	          e Zd ZU dZej                                        Zeed<   e	                    e
j        e
j        e
j        e
j        e
j        e
j        d           defdZdedeej                 fdZded	eeef         defd
ZdS )PyMethodzDescription of a method.r  )abstractmethodr  classmethodr  propertystaticmethodrP   c                     d| j         v rdS dS )Nr  FT)rG  r>  s    rH   r?  zPyMethod.needs_arglist+  s    %%54rG   r   c                 `   g }d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rtt                              t          d                     |                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d	                     |                    t	          j                               |S )
Nr  r  abstractr  r  r  zdUsing the :property: flag with the py:method directiveis deprecated, use ".. py:property::" instead.r  static)	rG  r   r   rq   r   r   rR  rS  r    r   r   rV  s      rH   r<  zPyMethod.get_signature_prefix1  s   #%dl""MM%*W--...MM(133444t|++MM%*Z00111MM(133444dl""MM%*W--...MM(133444DL((MM%*]33444MM(133444%%NN1 N O O P P PMM%*Z00111MM(133444T\))MM%*X..///MM(133444rG   rX  re  c                    |\  }}	 |                     dd          \  }}|r(| j        j        j        rd                    ||g          }n-# t
          $ r  |rt          d          ||fz  cY S d|z  cY S w xY wd| j        v rt          d          ||fz  S d| j        v rt          d          ||fz  S d	| j        v rt          d
          ||fz  S t          d          ||fz  S )NrR   rS   r  z%s()r  z%s() (%s class method)r  %s (%s property)r  z%s() (%s static method)z%s() (%s method))rsplitrb   ro   rO  r  rE  r    rG  )r   rX  re  r   r  clsnamemethnames          rH   rd  zPyMethod.get_index_textI  s3   	c	% $C 3 3GX 748?; 7((GW#566 	% 	% 	% %.//4/AAAA}$$$		% DL((-..(G1DDD4<'''((Hg+>>>t|++.//8W2EEE'((Hg+>>>s   AA  A5-A54A5N)r@   rA   rB   r  r  r  r  r0   rD   r  r   r  rE   r?  rC   r   r   r   r<  r   rd  rF   rG   rH   r  r    s         ""&27799K999$/!O"    t     UZ0@    0?c ?U38_ ? ? ? ? ? ? ?rG   r  c                   r     e Zd ZU dZej                                        Zeed<   de	e
         f fdZ xZS )PyClassMethodzDescription of a classmethod.r  rP   c                 f    d| _         d| j        d<   t                                                      S )N	py:methodTr  r   rG  r   r  r  s    rH   r  zPyClassMethod.rund  s(    	&*]#ww{{}}rG   r@   rA   rB   r  r  r  r  r0   rD   r   r   r  r
  r  s   @rH   r  r  _  so         ''&27799K999T$Z          rG   r  c                   r     e Zd ZU dZej                                        Zeed<   de	e
         f fdZ xZS )PyStaticMethodzDescription of a staticmethod.r  rP   c                 f    d| _         d| j        d<   t                                                      S )Nr  Tr  r  r  s    rH   r  zPyStaticMethod.runp  s(    	'+^$ww{{}}rG   r  r  s   @rH   r  r  k  so         ((&27799K999T$Z          rG   r  c                   h     e Zd ZdZdee         f fdZdedede	eef         f fdZ
defdZ xZS )PyDecoratorMethodz!Description of a decoratormethod.rP   c                 R    d| _         t                                                      S )Nr  r  r  s    rH   r  zPyDecoratorMethod.runz  s    	ww{{}}rG   r   r   c                     t                                          ||          }|                    dt          j        dd                     |S r  r  r  s       rH   r^  z"PyDecoratorMethod.handle_signature~  r  rG   c                     dS r  rF   r>  s    rH   r?  zPyDecoratorMethod.needs_arglist  r  rG   r  r  s   @rH   r  r  w  s        ++T$Z      C . U3PS8_      
t        rG   r  c                        e Zd ZU dZej                                        Zeed<   e	                    e
j        e
j        d           dededeeef         f fdZded	eeef         defd
Z xZS )PyAttributeDescription of an attribute.r  r  r   r   rP   c                 .   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }| j                            d          }|rc|t          j        |dt          j	                    t          j        dd          t          j	                    t          j        |                    z  }||fS r  r  r  s	           rH   r^  zPyAttribute.handle_signature  s    7733CAA&lv&& 	>+C::Kx/R080MbRU0V0V080G0I0I> 2=> > > >G
   )) 	Cx/r080G0I0I080MbRU0V0V080G0I0I05
50A0A	C C CG rG   rX  re  c                    |\  }}	 |                     dd          \  }}|r(| j        j        j        rd                    ||g          }n*# t
          $ r |rt          d          ||fz  cY S |cY S w xY wt          d          ||fz  S )NrR   rS   r  z%s (%s attribute)r  rb   ro   rO  r  rE  r    r   rX  re  r   r  r  attrnames          rH   rd  zPyAttribute.get_index_text  s    	c	 $C 3 3GX 748?; 7((GW#566 	 	 	 ,--w????		 $%%7(;;;   AA  A2-A21A2r  r  s   @rH   r  r    s         &&&27799K999$%    
 C  .  U3PS8_            *<c <U38_ < < < < < < < < <rG   r  c                       e Zd ZdZej                                        Ze                    ej	        ej	        ej
        d           dededeeef         f fdZdedeej                 fdZded	eeef         defd
Z xZS )
PyPropertyr  )r  r  r!  r   r   rP   c           	      0   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }||fS )Nr!  rf   r   )
r   r^  rG  rn   r   rb   r   rM  r   r   )r   r   r   rA  rV  r  r  r   s          rH   r^  zPyProperty.handle_signature  s     7733CAA&lv&& 	>+C::Kx/R080MbRU0V0V080G0I0I> 2=> > > >G
 rG   c                    g }d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               |                    t          j        d                     |                    t	          j                               |S )Nr  r  r  rZ   r  )rG  r   r   rq   r   r   r  s      rH   r<  zPyProperty.get_signature_prefix  s    #%t|++MM%*Z00111MM(133444DL((MM%*W--...MM(133444ej,,---h-//000rG   rX  re  c                    |\  }}	 |                     dd          \  }}|r(| j        j        j        rd                    ||g          }n*# t
          $ r |rt          d          ||fz  cY S |cY S w xY wt          d          ||fz  S )NrR   rS   r  r  r  r  s          rH   rd  zPyProperty.get_index_text  s    	c	 $C 3 3GX 748?; 7((GW#566 	 	 	 ,--w????		 #$$'':::r  )r@   rA   rB   r  r  r  r  r  r   r  r  rC   r   r   r^  r   r   r   r<  rd  r
  r  s   @rH   r  r    s       &&&++--K$/!$     C  .  U3PS8_             UZ0@    ;c ;U38_ ; ; ; ; ; ; ; ; ;rG   r  c                       e Zd ZU dZdZdZdZdZd d ej	        ej	        ej	        dZ
eed	<   d
ee         fdZded
efdZdS )PyModulez8
    Directive to mark description of a new module.
    TrS   r   Fc                     | S r   rF   xs    rH   <lambda>zPyModule.<lambda>      a rG   c                     | S r   rF   r  s    rH   r  zPyModule.<lambda>  r  rG   )rL   rK   r  r  rM   r  rP   c           	      N   t          t          | j                            d                    }| j        d                                         }d| j        v }|| j        j        d<   t          j	                    }t          | j        | j                  5  | j        j        |_        t          | j        | j        |           d d d            n# 1 swxY w Y   g }|s0t          | j        | j        j        d|          }t          j        dd|gd          }|                     |           | j        j                            |           |                    ||| j                            d	d          | j                            d
d          d| j        v            |                    |d||           |                    |           t.          d         d|}t1          j        d||dd fg          }	|                    |	           |                    |j                   |S )Nrk   r   r  rd   r2   rf   T)rg  ismodrK   rL   rM   rB  r  r  )rh  )r   rm  rb   rn  	argumentsr   rG  rm   r   sectionr*   rj  contentrk  r/   r-   ra   set_source_inforl  note_modulern   ro  r   r  r   indexr   r   )
r   r   rX  r  content_noder  r<   ra   rr  inodes
             rH   r  zPyModule.run  sS   lDH$7$7$=$=>>.#))++t|+,3[) % T\:: 	M 	M$(J$7L!$TZ|LLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
  	dh
(;XwOOG\"bwitDDDF  (((J44V<<<w&#|//
B??#|//
B??+t|;	= = =
 w'FKKK JJv$28$<$<$<ggFINVYT,R+STTTEJJu

<()))
s   -CCCr   c                     d|z  S )zGenerate old styled node_id.

        Old styled node_id is incompatible with docutils' node_id.
        It can contain dots and hyphens.

        .. note:: Old styled node_id was mainly used until Sphinx-3.0.
        z	module-%srF   )r   r   s     rH   make_old_idzPyModule.make_old_id  s     T!!rG   N)r@   rA   rB   r  has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   r  r  r0   rD   r   r   r  rC   r  rF   rG   rH   r  r    s           K %KK?%? o K   #T$Z # # # #J" " " " " " " "rG   r  c                   J    e Zd ZU dZdZdZdZdZi Ze	e
d<   dee         fdZdS )	PyCurrentModulez
    This directive is just to tell Sphinx that we're documenting
    stuff in module foo, but links to module foo won't lead here.
    FrS   r   r  rP   c                     | j         d                                         }|dk    r!| j        j                            dd            n|| j        j        d<   g S )Nr   rX   rd   )r  r   rb   rm   r   )r   rX  s     rH   r  zPyCurrentModule.run4  sW    .#))++fH $$[$777707DH -	rG   N)r@   rA   rB   r  r  r  r  r  r  r0   rD   r   r   r  rF   rG   rH   r	  r	  (  sh          
 K % K   T$Z      rG   r	  c                   >    e Zd Zdedededededeeef         fdZdS )	
PyXRefRolerb   refnodehas_explicit_titler^   ra   rP   c                    |j                             d          |d<   |j                             d          |d<   |sj|                    d          }|                    d          }|dd         dk    r2|dd          }|                    d          }|dk    r||dz   d          }|dd         dk    r|dd          }d|d	<   ||fS )
Nrd   re   rR   rT   r   rS   rU   Tr]   )rm   rn   rH  rfind)r   rb   r  r  r^   ra   dots          rH   process_linkzPyXRefRole.process_link>  s    "22;??!o11*==
! 		,LL%%E]]3''F QqSzS  abb	kk#&&"99!#'((OE !A#;#ABBZF%)GM"f}rG   N)	r@   rA   rB   r   r   rE   rC   r   r  rF   rG   rH   r  r  =  sb         0 7 )-69CFKPQTVYQY?     rG   r  r  r   r=   r  c                    |dk    rdS |D ]}t          |t          j                  rt          t          t          j                 |          }t          |          D ]v}t          t          j        |d                                                   	                                }|dk    s|
                    d          r|                    |           wdS )z+Filter ``:meta:`` field from its docstring.rk   Nr   metazmeta )r   r   
field_listr   r   fieldreversed
field_bodyr   r   r[   remove)r  r   r=   r  rx   fieldsr  
field_names           rH   filter_meta_fieldsr  T  s    ~~ ' 'dE,-- 	'$u{+T22F!&)) ' '!%"2E!H==DDFFLLNN
'':+@+@+I+I'KK&&&' 'rG   c            
           e Zd ZdZdZ ed          Z ed          Zd	dee	         de
ee
e	ee         f                  ef         fdZdS )
PythonModuleIndexz<
    Index subclass to provide the Python module index.
    modindexzPython Module Indexrz  NdocnamesrP   c                 <   i }| j         j        j        d         }t          |t          d          }t          | j         j        d                                         d           }d}d}|D ]v\  }\  }}	}
}}|r||vr|D ]2}|                    |          r|t	          |          d          }|} n3d}|s|d}}|                    |d         	                                g           }|
                    d	          d         }||k    r||k    rG|rD|d
         }t          |d         d|d         |d         |d         |d         |d                   |d
<   n@|                    |          s+|                    t          ||z   dddddd                     d}n|dz  }d}|rt          d          nd}|                    t          ||z   |||	|||
                     |}xt	          |          |z
  |k     }t          |                                          }||fS )Nmodindex_common_prefixT)keyreverserz  c                 6    | d                                          S )Nr   )lowerr  s    rH   r  z,PythonModuleIndex.generate.<locals>.<lambda>t  s    qtzz|| rG   )r#  rf   r   rR   rU   rS      r            
Deprecated)r   rb   ro   sortedr   dataitemsr[   rx  r&  r\   r   r   r    )r   r   r  ignoresrz  prev_modnamenum_toplevelsrX  r;   r<   rK   	platformsrM   ignorestrippedrh  packagelastsubtype	qualifiercollapsesorted_contents                         rH   generatezPythonModuleIndex.generatel  s   /1![_34LMc4888))4::<<335 5 5 LS &	# &	#HGHgw)Z G833!  %%f-- %c&kkll3G%HE
   1$,b(()9)9););R@@GmmC((+G'!!7** L&r{&0a!T!Wd1g15a$q'47'L 'L%0099 ZNN:h.@!RRQSUW#X#XYYY"+5=,2INN:h&8'7&-y)XO O P P P"LL
 w<<-/-?  00x''rG   r   )r@   rA   rB   r  r   r    	localnamers   r   rC   r   r   r   rE   r;  rF   rG   rH   r  r  c  s          D'((I)I<( <(# <(DsD,<'<!=>DE<( <( <( <( <( <(rG   r  c                      e Zd ZU dZdZdZ e ed          dd           e ed          dd           e ed          dd	d           e ed
          d	dd           e ed          dd           e ed          dd           e ed          dd           e ed          dd           e ed          ddd           e ed          dd          d
Ze	e
ef         ed<   eeeeeeeeeeeeedZ e             e             ed           e             e             e             ed           e             e            d	Zi i dZe	e
e	e
ee         f         f         ed<   egZe de	e
e!f         fd            Z"	 dBd!e
d"e
d#e
d$e#d%edd fd&Z$e de	e
e%f         fd'            Z&d!e
d#e
d(e
d)e
d*e#dd fd+Z'd,e
dd fd-Z(d.e)e
         d/e	dd fd0Z*	 dCd2e+d3e
d4e
d!e
d5e
d6e,de)ee
e!f                  fd7Z-d2e+d8e
d9e.d5e
d:e
d;e/d<e0de1e0         fd=Z2d2e+d8e
d9e.d:e
d;e/d<e0de)ee
e0f                  fd>Z3d9e.d8e
d!e
d<e4de0f
d?Z5de6ee
e
e
e
e
e,f                  fd@Z7d;e0de1e
         fdAZ8d S )Drm  zPython language domain.rk   Pythonr  funcrY   r-  rZ   r/  r6   r  methzclass methodzstatic method	attributer   r  _propr2   mod)
r  r-  rZ   r6   r  r  r  rA  r  r2   object_types)r  r-  rZ   r6   r  r  r  rA  r  r2   currentmodule	decoratordecoratormethodT)
fix_parens)	r-  r/  r?  rZ   constr   r@  rC  rY   )objectsrz  initial_datarP   c                 8    | j                             di           S )NrJ  r-  rx  r>  s    rH   rJ  zPythonDomain.objects      y##Ir222rG   FNr   r=   r<   r>   r   c                    || j         v rV| j         |         }|j        r|du rn=|j        du r|rdS t                              t	          d          ||j        |           t          | j        j        |||          | j         |<   dS )zQNote a python object for cross reference.

        .. versionadded:: 2.1
        FNzWduplicate object description of %s, other instance in %s, use :noindex: for one of themrB  )rJ  r>   rR  rS  r!   r;   r:   rb   )r   r   r=   r<   r>   r   others          rH   ro  zPythonDomain.note_object  s     4<L&E} 
GE!1!1%''G' r #X  Y  Y#U]X  G G G ))97GWUUTrG   c                 8    | j                             di           S )Nrz  rM  r>  s    rH   rz  zPythonDomain.modules  rN  rG   rK   rL   rM   c                 P    t          | j        j        ||||          | j        |<   dS )zQNote a python module for cross reference.

        .. versionadded:: 2.1
        N)rJ   rb   r;   rz  )r   r   r<   rK   rL   rM   s         rH   r  zPythonDomain.note_module  s2     ))97)18ZI ITrG   r;   c                    t          | j                                                  D ]\  }}|j        |k    r| j        |= t          | j                                                  D ]\  }}|j        |k    r| j        |= d S r   )listrJ  r.  r;   rz  )r   r;   rA  rY   rX  rC  s         rH   	clear_doczPythonDomain.clear_doc  s    !$,"4"4"6"677 	+ 	+MHc{g%%L* !3!3!5!566 	* 	*LGS{g%%L)	* 	*rG   r   	otherdatac                     |d                                          D ]\  }}|j        |v r
|| j        |<   |d                                          D ]\  }}|j        |v r
|| j        |<   d S )NrJ  rz  )r.  r;   rJ  rz  )r   r   rV  rA  rY   rX  rC  s          rH   merge_domaindatazPythonDomain.merge_domaindata  s    &y17799 	- 	-MHc{h&&),X&%i06688 	, 	,LGS{h&&(+W%	, 	,rG   r   rb   rX  rY  r!  
searchmodec                    
 |dd         dk    r
|dd         }|sg S g }d}|dk    r|t           j                  
n                     |          

|r/|r-|dz   |z   dz   |z   }	|	 j        v r j        |	         j        
v r|	}|sn|r2|dz   |z    j        v r# j        |dz   |z            j        
v r	|dz   |z   }n| j        v r j        |         j        
v r|}nd|z   
 fd j        D             }no| j        v r|}nc|dk    rg S |r|dz   |z    j        v r	|dz   |z   }nA|r|dz   |z    j        v r	|dz   |z   }n'|r%|r#|dz   |z   dz   |z    j        v r|dz   |z   dz   |z   }|"|                    | j        |         f           |S )zFind a Python object for "name", perhaps using the given module
        and/or classname.  Returns a list of (name, object entry) tuples.
        r   Nr  rS   rR   c                     g | ]:}|                               r#j        |         j        v +|j        |         f;S rF   )r   rJ  r=   )r   onameobjtypes
searchnamer   s     rH   
<listcomp>z)PythonDomain.find_obj.<locals>.<listcomp>8  s[     #L #L #LE&+nnZ&@&@#L#'<#6#>(#J#J %*4<+>#?#J#J#JrG   rC  )rT  rD  objtypes_for_rolerJ  r=   r   )r   rb   rX  rY  r   r!  rY  matchesnewnamerA  r]  r^  s   `         @@rH   find_objzPythonDomain.find_obj  s}    99D 	I13??| 12211$77# +y +&}y83>EH4<//DL4J4RV^4^4^"* L 
L7S=4#74<#G#G|GcMD$89AXMM")C-$"6--$,t2D2LPX2X2X"& &)4Z
#L #L #L #L #L #LT\ #L #L #L
 t|##	 Ay35EE#c/D0 AWs]T1T\AA!C-$. AY AcMI-3d:dlJJ!C-)3c9D@NNGT\'%:;<<<rG   fromdocnamebuilderra   rx   r   c                 "   |                     d          }|                     d          }	|                    d          rdnd}
|                     |||	|||
          }|s |dk    r|                     |||	|d|
          }|s |dk    r|                     |||	|d|
          }|sd S t          |          dk    rld	 |D             }t          |          dk    r|}nJt                              t          d
          |d                    d |D                       dd|           |d         \  }}|d         dk    r|                     ||||          S t          |d          }|r|j
        }n|g}t          |||d         |d         ||          S )Nrd   re   r]   rS   r   r   r@  rB  c                 ,    g | ]}|d          j         |S )rS   )r>   )r   rU  s     rH   r_  z-PythonDomain.resolve_xref.<locals>.<listcomp>f  s#    AAAAaDLA!AAArG   z5more than one target found for cross-reference %r: %sz, c              3   &   K   | ]}|d          V  dS )r   NrF   )r   r   s     rH   r   z,PythonDomain.resolve_xref.<locals>.<genexpr>k  s&      0O0Oeq0O0O0O0O0O0OrG   refpython)r!  r7  r   r'  r2   rg   )rn   hasattrrc  r   rR  rS  r!   r  _make_module_refnoder,   r   r.   )r   rb   rd  re  r!  ra   rx   r   rX  r  rY  ra  
canonicalsr   rY   r  r   s                    rH   resolve_xrefzPythonDomain.resolve_xrefM  s    ((;''((:&&,,}55<QQ1
--Wgv $j2 2  	W46>> mmC'66:VVG 	X46>> mmC'67JWWG 		L4\\AAAWAAAJ:!##$r"YZZ%tyy0O0Ow0O0O0O'O'O$)8d  L L L AJ	cq6X,,Wk4RRR 2$
CCG &"+ %:c!fc!fhPTUUUrG   c                 ,   |                     d          }|                     d          }g }	|                     ||||d d          }
t          |
          dk    }|
D ]\  }}|r|j        r|d         dk    r.|	                    d|                     ||||          f           It          |d          }|r|j        }n|g}|	                    d|                     |d                   z   t          |||d	         |d         ||          f           |	S )
Nrd   re   rS   r'  r2   zpy:modrg   zpy:r   )
rn   rc  r   r>   r   rl  r,   r   role_for_objtyper.   )r   rb   rd  re  ra   rx   r   rX  r  r  ra  multiple_matchesr   rY   r  r   s                   rH   resolve_any_xrefzPythonDomain.resolve_any_xref|  sb    ((;''((:&&-/ --WgvtQGGw<<!+  	? 	?ID# CK 1v!! $ 9 9';:>!J !J K L L L L
 6dJGG *&/HH !)zH(=(=c!f(E(E E ,Wk3q63q6-5t!= != > ? ? ? ? rG   c                     | j         |         }|}|j        r|d|j        z   z  }|j        r|t          d          z  }|j        r|d|j        z   dz   z  }t          |||j        |j        ||          S )Nz: z (deprecated)z (r   )rz  rK   rM   r    rL   r.   r;   r<   )r   re  rd  r   r   r2   r^   s          rH   rl  z!PythonDomain._make_module_refnode  s     d#? 	,TFO++E 	(Q'''E? 	2TFO+c11EG[&.&.$e- - 	-rG   c              #   8  K   | j                                         D ]\  }}||d|j        |j        dfV  | j                                        D ]J\  }}|j        dk    r:|j        r|||j        |j        |j        dfV  1|||j        |j        |j        dfV  Kd S )Nr2   r   rU   rS   )rz  r.  r;   r<   rJ  r=   r>   )r   rX  rC  refnamerY   s        rH   get_objectszPythonDomain.get_objects  s       L..00 	L 	LLGSGXs{CKKKKKK L..00 	W 	WLGS{h&&; W"GS[#+s{TVWWWWW"GS[#+s{TUVVVV	W 	WrG   c                     |                     d          }|                     d          }|                     d          }|d S d                    t          d |||g                    S )Nrd   re   rN   rR   )rn   r  r   )r   rx   rX  r  ra   s        rH   get_full_qualified_namez$PythonDomain.get_full_qualified_name  sb    ((;''((:&&+&&>488F4'7F)CDDEEErG   )FN)r   )9r@   rA   rB   r  r   r"  r   r    rD  r   rC   rD   r  r  r  r  r  r  r  r  r  r	  r  r  r   r  rolesrK  r   r   r  indicesr  r:   rJ  rE   ro  rJ   rz  r  rU  r   rX  r   r   rc  r   r   r   r
   rn  rr  r   rl  r   rv  rx  rF   rG   rH   rm  rm    sM        !!DE*FEBB&		FEBB'

GUEJJ+E7EJJ(FEBB. 1 1FEBB/ 2 2FEBB+FEBB*FGUKK(E5AA( (L$sG|$    &%&&#()&%#*., J  t,,,t,,,
 
E 6 6L$sDeCj112   
 	G 3c;./ 3 3 3 X3 <@V V Vc VC V!V58VDHV V V V* 3c;./ 3 3 3 X3I Ic IS I!I/3I8<I I I I* * * * * *,c ,t , , , , , :;6 6, 6s 6s 66"%63665k!1236 6 6 6p-V 0 -Vs -VW -V-V(+-V3?-VKR-V"7+-V -V -V -V^!$4 !3 !QX !!$!,8!DK!"5g#67! ! ! !F-G -# -S -'+-07- - - -	WXeCc3S,H&IJ 	W 	W 	W 	WFG F F F F F F FrG   rm  rx   r   c                    dt           dt          fd}|                    d          dk    rdS |                    d          dv r|                    d	          d
k    r|S |                    d          dv rL|                    d	          }t          j        t          t          |d                    r|S  ||          r|S dS )z1Do not emit nitpicky warnings for built-in types.r   rP   c                     |                      d          r|                     dd          d         } | t          j        v S )NrV   rR   rS   )r[   r\   typing__all__)r   s    rH   istypingz"builtin_resolver.<locals>.istyping  s9    <<	"" 	#Q"AFN""rG   rl   rk   Nr_   )rZ   rY   rN   rX   )rZ   rY   r/  )rC   rE   rn   inspectisclassgetattrbuiltins)r  rb   rx   r   r  rN   s         rH   builtin_resolverr    s    #C #D # # # # xx$$t	)		 0	0	0TXXk5J5Jf5T5T	)		 7	7	7HH[))	?78Y==>> 	OXi   	O4rG   c                    |                      d           |                     t                     |                     ddd           |                     dt
                     |                     dt          d           d	d
dddS )Nzsphinx.directivesrp   Frb   zobject-description-transformzmissing-referencei  )priorityr8   r   T)versionenv_versionparallel_read_safeparallel_write_safe)setup_extension
add_domainrm  add_config_valueconnectr  r  )r  s    rH   setupr    s    +,,,NN<   <eUKKKKK.0BCCCKK#%5KDDD "#	  rG   )Fr  r   )tr  r  r  r   r   r}  rJ  r   r   r   r   r   r   r	   r
   r   r   r   docutilsr   docutils.nodesr   r   docutils.parsers.rstr   docutils.parsers.rst.statesr   sphinxr   sphinx.addnodesr   r   r   sphinx.applicationr   sphinx.buildersr   sphinx.deprecationr   sphinx.directivesr   sphinx.domainsr   r   r   r   sphinx.environmentr   sphinx.localer    r!   sphinx.pycode.astr"   r#   r   sphinx.rolesr$   sphinx.utilr%   sphinx.util.docfieldsr&   r'   r(   sphinx.util.docutilsr)   r*   sphinx.util.inspectr+   sphinx.util.nodesr,   r-   r.   r/   sphinx.util.typingr0   r1   	getLoggerr@   rR  r   VERBOSErD  r  r:   rJ   rC   rE   r`   ru   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  rm  r  r  rF   rG   rH   <module>r     s       				 



         _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _       ( ( ( ( ( ( ( ( + + + + + + / / / / / /       P P P P P P P P P P % % % % % % # # # # # # 7 7 7 7 7 7 / / / / / / = = = = = = = = = = = = / / / / / /         ! ! ! ! ! ! 0 0 0 0 0 0 ! ! ! ! ! !       A A A A A A A A A A E E E E E E E E 2 2 2 2 2 29 9 9 9 9 9 9 9 9 9 9 9 7 7 7 7 7 7 7 7		8	$	$ BJ
 z 	 89:8;;&''     *       *   2 2s 2T 2sCd232 2 2 26 AE).; ; ;8,<#= ;"&;3;3H; ; ; ;4o/# o/,< o/d o/ o/ o/ o/f 591 11 011 1 1 1 1h.> .C .D . . . .f; ; ; ; ; ; ; ;|	 	 	 	 	k5 	 	 		 	 	 	 	[, 	 	 		 	 	 	 	;
 	 	 	} } } } } sCx1 } } }@# # # # # # # #L    *   ""6 "6 "6 "6 "6 "6 "6 "6J    (   <>? >? >? >? >?x >? >? >?B	 	 	 	 	H 	 	 		 	 	 	 	X 	 	 	        *< *< *< *< *<( *< *< *<Z0; 0; 0; 0; 0; 0; 0; 0;f>" >" >" >" >" >" >" >"B    o   *       .'F 'C '# ' 'TX ' ' ' 'E( E( E( E( E( E( E( E(PTF TF TF TF TF6 TF TF TFn& '7 '3:?F   2v $sCx.      rG   