
    }c                        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@ ddlAmBZB ddlCmDZDmEZEmFZF ddlGmHZHmIZI  e:jJ        eK          ZL ejM        dejN                  ZO e1d           e1d           e1d           e1d           e1d            e1d!           e1d"          d#ZP G d$ d%e          ZQ G d& d'e          ZRdgd)eSd*eTd+eeSeSeSeTf         fd,ZUdhd-eSd.e/d*eTd+ej        fd/ZVd0eSd.e/d+ee         fd1ZWdid2eSd.e/d+ejX        fd3ZYd4ed2eSd+dfd5ZZ 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eSeSf                            Z_ G d@ dAe_          Z` G dB dCe`          Za G dD dEe_          Zb G dF dGe_          Zc G dH dIe_          Zd G dJ dKed          Ze G dL dMed          Zf G dN dOed          Zg G dP dQe_          Zh G dR dSe_          Zi G dT dUe@          Zj G dV dWe@          Zk G dX dYe8          ZldZe"d[eSd\eSd]ed+df
d^Zm G d_ d`e+          Zn G da dbe*          ZodZe"d.e/dcedded+ef
deZpdZe"d+e	eSef         fdfZqd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)signature_from_str)find_pending_xref_conditionmake_idmake_refnode)
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)r0   r1   r2   r3   r4   r5   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     5lib/python3.11/site-packages/sphinx/domains/python.pyr8   r8   <   s4         LLLLLLLLLMMMMMrE   r8   c                   B    e Zd ZU eed<   eed<   eed<   eed<   eed<   dS )ModuleEntryr9   r:   synopsisplatform
deprecatedNr=   rD   rE   rF   rH   rH   C   sB         LLLLLLMMMMMMrE   rH   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)rL   rM   refspecifictitlereftypes        rF   parse_reftargetr^   K   s     KC   abbM				c	"	" abbM	$$R(	 $$R(			i	(	( !""F i229== Iuk11rE   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)rb   rc   rP   rS    resolved	condition*py)	refdomainr]   rL   r[   )
ref_contextgetr^   config!python_use_unqualified_type_namesrZ   r   r   Textr   )	r_   r`   rM   kwargsr]   r\   r[   	shortname	contnodess	            rF   type_to_xrefrs   f   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; ; ;rE   
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.noderN   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   rP   rd   |z...rR   [,]c              3   .   K   | ]} |          V  d S NrD   ).0eunparses     rF   	<genexpr>z5_parse_annotation.<locals>.unparse.<locals>.<genexpr>   s+      66q

666666rE   )Literaltyping.LiteralrQ   )start())      )5
isinstancer"   	Attributer   ro   valueattrBinOpleftextendoprightBitOrr   desc_sig_spacedesc_sig_punctuationConstantEllipsisrC   desc_sig_keywordreprintdesc_sig_literal_numberrA   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)rv   resultelemisubnoder   s        rF   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% 6 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 C"+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&( 
P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rE   r   rS   rR   T)rM   )r"   ASTr   r   	ast_parser   r   r   r   ro   stripr   r   astextr   rs   rA   r   )rt   r`   treer   rv   r   s        @rF   _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@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)Nrd   /rh   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_KEYWORDrt   emptyr   r   r   defaultr   inliner   )r   r`   paramssig	last_kindparamrv   childrens           rF   _parse_arglistr      s   (11F
Vg-
.
.CI&&(( $ $:.. 	[9@U3U 	[h-b"h6PQSUX6Y6YZZZF:++ 	[	e>Y>C>S>B>D 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 </11122s;;;/11122s;;;ELU]_<M5:< < < <D 	$J		I-- W()"b(2LRQT2U2UVVVMrE   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).
    rz   r   ry   rS   rQ   Nr{   z[]rd   )r   r   rZ   r   rY   r   desc_optionalr   endswithr   r   len
IndexError)r   r   	paramliststackargument	ends_open
ends_closes          rF   _pseudo_parse_arglistr   $  s7    +--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domainr_   	innernodecontnoder`   inlinerlocationrN   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[   rb   rc   r]   rL   rP   rS   rd   re   rf   rg   rh   )super	make_xrefr   r   rk   rl   r^   clearrm   rn   r   rZ   r   r   )selfr   r   r_   r   r   r`   r   r   r   r]   rL   reftitler    r   rq   textnoderr   	__class__s                     rF   r   zPyXrefMixin.make_xrefX  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(((rE   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 )Nz8(\s*[\[\]\(\),](?:\s*or\s)?\s*|\s+or\s+|\s*\|\s*|\.\.\.)F)r   r   z~typing.LiteralT)recompilerZ   rC   r   filterr   ro   matchr   r   )r   r   r   r_   r   r   r`   r   r   delims	delims_resub_targetssplit_contnode
in_literalresults
sub_targets                   rF   
make_xrefszPyXrefMixin.make_xrefsy  s     M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 "!
rE   )r>   r?   r@   r   emphasisrA   r   r/   r   r   r   r   r   r  __classcell__r   s   @rF   r   r   W  s$       27.#'%)D # s C !,/ .> # 6: FJ     D 49>$($&*T 3  S "<0!/? $ 7; GK4j       rE   r   c                       e Zd ZdS )PyFieldNr>   r?   r@   rD   rE   rF   r  r            DrE   r  c                       e Zd ZdS )PyGroupedFieldNr  rD   rE   rF   r  r    r  rE   r  c                       e Zd ZdS )PyTypedFieldNr  rD   rE   rF   r  r    r  rE   r  c                      e Zd ZU dZ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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'S ),PyObjectz
    Description of a general Python object.

    :cvar allow_nesting: Class is an object that allows for nested namespaces
    :vartype allow_nesting: bool
    )noindexnoindexentryr0   	canonicalrt   option_spec	parameter
Parameters)r   r  argr   r1   kwargkwparamrX   )	paramtypetypeT)labelnamestyperolename	typenamescan_collapsevariable	Variables)varivarcvar)vartype
exceptionsRaisesexc)raisesraiser4   except)r  r   r   r#  returnvalueReturnsF)returnsrN   )r  has_argr   
returntypezReturn type)rtype)r  r3  r   bodyrolenamer   rN   c                     g S )zTMay return a prefix to put before the object name in the
        signature.
        rD   r   r   s     rF   get_signature_prefixzPyObject.get_signature_prefix  s	     	rE   c                     dS )zqMay return true if an empty argument list is to be generated even if
        the document contains none.
        FrD   r   s    rF   needs_arglistzPyObject.needs_arglist  s	     urE   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
        Nr0   rb   rc   FrP   Trd   rX   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   rt    )&	py_sig_rer   
ValueErrorgroupsoptionsrl   r`   rk   rY   r   lstriprstripr9  r  rA   warningswarnformatr   r   desc_annotationr   ro   desc_addnamerm   add_module_names	desc_namer   r   r   NotImplementedErrorloggerwarningr<  r   r   desc_returnsr   )r   r   r   mprefixr   r   retannmodname	classname
add_moduler>  
sig_prefixnodetextr,  r   annos                    rF   handle_signaturezPyObject.handle_signature  s    OOC   	()

%gv ,""8TX-A-E-Ek-R-RSSH(,,Z88	 	 J 26Y. 2!,,Y_==2!D=I077<< 2 %s?V3d: %s?T1J  "MM#..	!D=	#$&
..s33
 	VJ3& 
V. /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rU  r   c                      t          d          )z2Return the text for the index entry of the object.z!must be implemented in subclasses)rN  )r   rU  r   s      rF   get_index_textzPyObject.get_index_text.  s    !"EFFFrE   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 )Nr0   rb   rP   rd   r   idsri   r?  r  T)r<   r   r  entriessingle)rD  rl   r`   rk   r,   statedocumentr   note_explicit_targetr   PythonDomain
get_domainnote_objectr;   r]  	indexnode)
r   r^  r   r   rU  r>  r:   r   canonical_name	indextexts
             rF   add_target_and_indexzPyObject.add_target_and_index2  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	[ 	[[ [rE   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`.
        NrS   rP   rc   
py:classesr0   
py:modulesrb   )	r   allow_nestingr   r`   rk   
setdefaultr   rD  rl   )r   rS  r>  name_prefixr   moduless         rF   before_contentzPyObject.before_contentG  s    : 		0
 '+jn#X{! 0! 0$**3// 	'/5DH ,! '(.99,KKv&&&t|# 	Gh*55lBGGGNN48/33K@@AAA04X0FDH ---	G 	GrE   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`.
        rn  r   rS   Nrc   r0   ro  rb   )r`   rk   rq  rp  r   r   r   rD  )r   r   rs  s      rF   after_contentzPyObject.after_contenth  s    (&11,CC 	   ;>w<<!;K -6GBKK15 	Z(t|# 	6h*55lBGGG 64;KKMM$[111$((55555	6 	6s   > 
A
A)rN   N)r>   r?   r@   __doc__r   flag	unchangedr  r.   rB   r  r    r  r&   r  doc_field_typesrp  rA   r   r   r   r9  rC   r<  r   r   r[  r]  rl  rt  rv  rD   rE   rF   r  r    se          ?"&) * K    	[,;")5J"&		( 	( 	(
 	Zqq~~2")\"&	( 	( 	( 	|11X;;G$(	* 	* 	* 	m11Y<<)	+ 	+ 	+AAm$4$4e w	8 	8 	8O& M UZ0@    t    [ C [ . [ U3PS8_ [  [  [  [ zGc GsCx GS G G G G[U38_ [3 [&4[9=[ [ [ [*G G G GB6 6 6 6 6 6rE   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   rN   c                 h    d| j         v r(t          j        dd          t          j                    gS g S )Nr}  rd   )rD  r   r   r   r8  s     rF   r9  zPyFunction.get_signature_prefix  s>    dl" 	-b'::+--/ / IrE   c                     dS )NTrD   r;  s    rF   r<  zPyFunction.needs_arglist  s    trE   r^  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  r0   rb   r`  r   %s() (in module %s)ra  rb  rd   r6   ; ()pair)
r   rl  rD  rl   r`   rk   r    ri  r   pairindextypes)
r   r^  r   r   rU  r:   r   clstextr   s
            rF   rl  zPyFunction.add_target_and_index  s   $$XsG<<<- 
	T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
	T 
	TrE   rU  c                     d S r}   rD   r   rU  r^  s      rF   r]  zPyFunction.get_index_text  s    trE   )r>   r?   r@   rw  r  r  copyr.   rB   updater   rx  rA   r   r   r   r9  rC   r<  r   r   rl  r]  r  r	  s   @rF   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_         rE   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.rN   c                 R    d| _         t                                                      S )Nzpy:functionr   r   runr   r   s    rF   r  zPyDecoratorFunction.run  s    !	ww{{}}rE   r   r   c                     t                                          ||          }|                    dt          j        dd                     |S Nr   @r   r[  insertr   rK  r   r   r   retr   s       rF   r[  z$PyDecoratorFunction.handle_signature  B    gg&&sG44q(/S99:::
rE   c                     dS NFrD   r;  s    rF   r<  z!PyDecoratorFunction.needs_arglist      urE   r>   r?   r@   rw  r   r   r  rA   r   r   r[  rC   r<  r  r	  s   @rF   r  r    s        %%T$Z      
C . U3PS8_      
t        rE   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   rN   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  rd   r   r   r   r   r[  rD  rl   r   r`   r   rJ  r   r   r   ro   	r   r   r   r>  rS  typannotationsr   r   s	           rF   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 rE   rU  r^  c                 \    |\  }}|rt          d          ||fz  S t          d          |z  S )N%s (in module %s)z%s (built-in variable))r    )r   rU  r^  r   r  s        rF   r]  zPyVariable.get_index_text  s?    	c 	6())T7O;;-..55rE   r>   r?   r@   rw  r  r  r  r.   rB   r  r   ry  rA   r   r   r[  r]  r  r	  s   @rF   r  r    s         $$&27799K999$%    
 C  .  U3PS8_            (6c 6U38_ 6 6 6 6 6 6 6 6 6rE   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   rN   c                    d| j         v rQt          j        d          t          j                    t          j        | j                  t          j                    gS t          j        | j                  t          j                    gS )Nr  )rD  r   ro   r   r   r;   r8  s     rF   r9  z PyClasslike.get_signature_prefix  sr    dl" 	IJw'')@)B)BJt|,,h.E.G.GI I Jt|,,h.E.G.GHHrE   rU  r^  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 )NrX   z%s (built-in class)r   z%s (class in %s)r4   rd   )r;   r    r  s      rF   r]  zPyClasslike.get_index_text  sl    <7" 	 >.//(1+=='((HQK+AAA\[( 	A;2rE   N)r>   r?   r@   rw  r  r  r  r.   rB   r  r   rx  rp  rA   r   r   r   r9  r   r]  rD   rE   rF   r  r    s           '27799K999    MI IUZ0@ I I I Ic U38_       rE   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staticmethodrN   c                     d| j         v rdS dS )Nr  FT)rD  r;  s    rF   r<  zPyMethod.needs_arglist	  s    % 	54rE   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 rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               |S )	Nr  r  abstractr}  r  r  r  staticrD  r   r   ro   r   r   r   r   rS  s      rF   r9  zPyMethod.get_signature_prefix  s   #%dl" 	5MM%*W--...MM(133444t|+ 	5MM%*Z00111MM(133444dl" 	5MM%*W--...MM(133444DL( 	5MM%*]33444MM(133444% 	5MM%*Z00111MM(133444T\) 	5MM%*X..///MM(133444rE   rU  r^  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 )NrP   rQ   r  z%s()r  z%s() (%s class method)r  %s (%s property)r  z%s() (%s static method)z%s() (%s method))rsplitr`   rm   rL  joinrB  r    rD  )r   rU  r^  r   r  clsnamemethnames          rF   r]  zPyMethod.get_index_text%  s9   	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>   r?   r@   rw  r  r  r  r.   rB   r  r   rx  rC   r<  rA   r   r   r   r9  r   r]  rD   rE   rF   r  r    s         ""&27799K999$/!O"    t     UZ0@    ,?c ?U38_ ? ? ? ? ? ? ?rE   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  rN   c                 f    d| _         d| j        d<   t                                                      S )N	py:methodTr  r   rD  r   r  r  s    rF   r  zPyClassMethod.run@  s(    	&*]#ww{{}}rE   r>   r?   r@   rw  r  r  r  r.   rB   r   r   r  r  r	  s   @rF   r  r  ;  so         ''&27799K999T$Z          rE   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  rN   c                 f    d| _         d| j        d<   t                                                      S )Nr  Tr  r  r  s    rF   r  zPyStaticMethod.runL  s(    	'+^$ww{{}}rE   r  r	  s   @rF   r  r  G  so         ((&27799K999T$Z          rE   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.rN   c                 R    d| _         t                                                      S )Nr  r  r  s    rF   r  zPyDecoratorMethod.runV  s    	ww{{}}rE   r   r   c                     t                                          ||          }|                    dt          j        dd                     |S r  r  r  s       rF   r[  z"PyDecoratorMethod.handle_signatureZ  r  rE   c                     dS r  rD   r;  s    rF   r<  zPyDecoratorMethod.needs_arglist_  r  rE   r  r	  s   @rF   r  r  S  s        ++T$Z      C . U3PS8_      
t        rE   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   rN   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	           rF   r[  zPyAttribute.handle_signaturel  s    7733CAA&lv&& 	>+C::Kx/R080MbRU0V0V080G0I0I> 2=> > > >G
   )) 	Cx/r080G0I0I080MbRU0V0V080G0I0I05
50A0A	C C CG rE   rU  r^  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 )NrP   rQ   r  z%s (%s attribute)r  r`   rm   rL  r  rB  r    r   rU  r^  r   r  r  attrnames          rF   r]  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   @rF   r  r  c  s         &&&27799K999$%    
 C  .  U3PS8_            *<c <U38_ < < < < < < < < <rE   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   rN   c           	      0   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }||fS )Nr  rd   r   )
r   r[  rD  rl   r   r`   r   rJ  r   r   )r   r   r   r>  rS  r  r  r   s          rF   r[  zPyProperty.handle_signature  s     7733CAA&lv&& 	>+C::Kx/R080MbRU0V0V080G0I0I> 2=> > > >G
 rE   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  rX   r  r  r  s      rF   r9  zPyProperty.get_signature_prefix  s    #%t|+ 	5MM%*Z00111MM(133444DL( 	5MM%*W--...MM(133444ej,,---h-//000rE   rU  r^  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 )NrP   rQ   r  r  r  r  s          rF   r]  zPyProperty.get_index_text  s    	c	 $C 3 3GX 748?; 7((GW#566 	 	 	 ,--w????		 #$$'':::r  )r>   r?   r@   rw  r  r  r  r  r   rx  ry  rA   r   r   r[  r   r   r   r9  r]  r  r	  s   @rF   r  r    s       &&&++--K$/!$     C  .  U3PS8_             UZ0@    ;c ;U38_ ; ; ; ; ; ; ; ; ;rE   r  c                   |    e Zd ZU dZdZdZdZdZd d 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.
    FrQ   r   c                     | S r}   rD   xs    rF   <lambda>zPyModule.<lambda>      a rE   c                     | S r}   rD   r  s    rF   r  zPyModule.<lambda>  r  rE   )rJ   rI   r  rK   r  rN   c           	      8   t          t          | j                            d                    }| j        d                                         }d| j        v }|| j        j        d<   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|}t)          j        d||dd fg          }|                    |           |S )Nri   r   r  rb   r0   rd   T)r`  ismodrI   rJ   rK   r?  r  r  )ra  )r   rf  r`   rg  	argumentsr   rD  rk   r,   rc  rd  r   r_   set_source_infore  note_modulerl   rh  r   r  r   index)	r   r   rU  r  r  r:   r_   rk  inodes	            rF   r  zPyModule.run  s   lDH$7$7$=$=>>.#))++t|+,3[) 	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
rE   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-%srD   )r   r   s     rF   make_old_idzPyModule.make_old_id  s     T!!rE   N)r>   r?   r@   rw  has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   rx  r  r.   rB   r   r   r  rA   r  rD   rE   rF   r  r    s           K %KK? o	 K   T$Z    :" " " " " " " "rE   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.
    FrQ   r   r  rN   c                     | j         d                                         }|dk    r!| j        j                            dd            n|| j        j        d<   g S )Nr   rV   rb   )r  r   r`   rk   r   )r   rU  s     rF   r  zPyCurrentModule.run  sY    .#))++f 	8H $$[$777707DH -	rE   N)r>   r?   r@   rw  r  r  r  r  r  r.   rB   r   r   r  rD   rE   rF   r  r    sh          
 K % K   T$Z      rE   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 )	
PyXRefRoler`   refnodehas_explicit_titler\   r_   rN   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 )
Nrb   rc   rP   rR   r   rQ   rS   Tr[   )rk   rl   rE  rfind)r   r`   r  r  r\   r_   dots          rF   process_linkzPyXRefRole.process_link  s    "22;??!o11*==
! 		,LL%%E]]3''F QqSzS  ,abb	kk#&&"9 ,!#'((OE !A#;# 	*ABBZF%)GM"f}rE   N)	r>   r?   r@   r   r   rC   rA   r   r  rD   rE   rF   r  r    sb         0 7 )-69CFKPQTVYQY?     rE   r  appr   r;   contentc                    |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.ri   Nr   metazmeta )r   r   
field_listr   r   fieldreversed
field_bodyr   r   rY   remove)r  r   r;   r  rv   fieldsr  
field_names           rF   filter_meta_fieldsr  '  s    ~  ' 'dE,-- 	'$u{+T22F!&)) ' '!%"2E!H==DDFFLLNN
' ':+@+@+I+I 'KK&&&' 'rE   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 Indexrs  NdocnamesrN   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reversers  c                 6    | d                                          S )Nr   )lowerr  s    rF   r  z,PythonModuleIndex.generate.<locals>.<lambda>G  s    qtzz|| rE   )r  rd   r   rP   rS   rQ      r            
Deprecated)r   r`   rm   sortedr   dataitemsrY   rq  r  rZ   r   r   r    )r   r  r  ignoresrs  prev_modnamenum_toplevelsrU  r9   r:   rI   	platformsrK   ignorestrippedra  packagelastsubtype	qualifiercollapsesorted_contents                         rF   generatezPythonModuleIndex.generate?  s   /1![_34LMc4888))4::<<335 5 5 LS &	# &	#HGHgw)Z G83 !  %%f-- %c&kkll3G%HE
   1$,b(()9)9););R@@GmmC((+G'! 7* Z 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''rE   r}   )r>   r?   r@   rw  r   r    	localnamerq   r   rA   r   r   r   rC   r'  rD   rE   rF   r
  r
  6  s          D'((I)I<( <(# <(DsD,<'<!=>DE<( <( <( <( <( <(rE   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 )Drf  zPython language domain.ri   PythonfunctionfuncrW   r  rX   r,  r4   methodmethzclass methodzstatic method	attributer   r  _propr0   mod)
r+  r  rX   r4   r-  r  r  r/  r  r0   object_types)r+  r  rX   r4   r-  r  r  r/  r  r0   currentmodule	decoratordecoratormethodT)
fix_parens)	r  r,  r,  rX   constr   r.  r1  rW   )objectsrs  initial_datarN   c                 8    | j                             di           S )Nr8  r  rq  r;  s    rF   r8  zPythonDomain.objects      y##Ir222rE   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 themr?  )r8  r<   rO  rP  r!   r9   r8   r`   )r   r   r;   r:   r<   r   others          rF   rh  zPythonDomain.note_object  s     4< 	GL&E} 
GE!1 
G%' GG G r #X  Y  Y#U]X  G G G ))97GWUUTrE   c                 8    | j                             di           S )Nrs  r;  r;  s    rF   rs  zPythonDomain.modules  r<  rE   rI   rJ   rK   c                 P    t          | j        j        ||||          | j        |<   dS )zQNote a python module for cross reference.

        .. versionadded:: 2.1
        N)rH   r`   r9   rs  )r   r   r:   rI   rJ   rK   s         rF   r  zPythonDomain.note_module  s2     ))97)18ZI ITrE   r9   c                    t          | j                                                  D ]\  }}|j        |k    r| j        |= t          | j                                                  D ]\  }}|j        |k    r| j        |= d S r}   )listr8  r  r9   rs  )r   r9   r>  rW   rU  r1  s         rF   	clear_doczPythonDomain.clear_doc  s    !$,"4"4"6"677 	+ 	+MHc{g% +L* !3!3!5!566 	* 	*LGS{g% *L)	* 	*rE   r  	otherdatac                     |d                                          D ]\  }}|j        |v r
|| j        |<   |d                                          D ]\  }}|j        |v r
|| j        |<   d S )Nr8  rs  )r  r9   r8  rs  )r   r  rD  r>  rW   rU  r1  s          rF   merge_domaindatazPythonDomain.merge_domaindata  s    &y17799 	- 	-MHc{h& -),X&%i06688 	, 	,LGS{h& ,(+W%	, 	,rE   r   r`   rU  rV  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  rQ   rP   c                     g | ]:}|                               j        |         j        v +|j        |         f;S rD   )r   r8  r;   )r~   onameobjtypes
searchnamer   s     rF   
<listcomp>z)PythonDomain.find_obj.<locals>.<listcomp>  sd     #L #L #LE&+nnZ&@&@#L#'<#6#>(#J#LE4<+>#? #L #L #LrE   r1  )rB  r2  objtypes_for_roler8  r;   r   )r   r`   rU  rV  r   r  rG  matchesnewnamer>  rK  rL  s   `         @@rF   find_objzPythonDomain.find_obj  s    9 	9D 	I13? #	A 8 12211$77 L +y +&}y83>EH4</ +DL4J4RV^4^ +"* L 
L7S=4#74<#G 
L|GcMD$89AXM
L")C-$"6- L$,t2D2LPX2X L"& &)4Z
#L #L #L #L #L #LT\ #L #L #L
 t|# A 	A	 Ay35E A#c/D0 AWs]T1T\A A!C-$. AY AcMI-3d:dlJA!C-)3c9D@ 	=NNGT\'%:;<<<rE   fromdocnamebuilderr_   rv   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 )Nrb   rc   r[   rQ   r   r   r.  r0  c                 ,    g | ]}|d          j         |S )rQ   )r<   )r~   rR  s     rF   rM  z-PythonDomain.resolve_xref.<locals>.<listcomp>9  s#    AAAAaDLA!AAArE   z5more than one target found for cross-reference %r: %sz, c              3   &   K   | ]}|d          V  dS )r   NrD   )r~   r   s     rF   r   z,PythonDomain.resolve_xref.<locals>.<genexpr>>  s&      0O0Oeq0O0O0O0O0O0OrE   refpython)r  r#  r   r  r0   re   )rl   hasattrrQ  r   rO  rP  r!   r  _make_module_refnoder+   r   r-   )r   r`   rR  rS  r  r_   rv   r   rU  r  rG  rO  
canonicalsr   rW   r  r   s                    rF   resolve_xrefzPythonDomain.resolve_xref   s    ((;''((:&&,,}55<QQ1
--Wgv $j2 2  	W46> 	W mmC'66:VVG 	X46> 	X mmC'67JWWG 		L4\\A 	LAAWAAAJ:!# L$r"YZZ%tyy0O0Ow0O0O0O'O'O$)8d  L L L AJ	cq6X 	V,,Wk4RRR 2$
CCG &"+ %:c!fc!fhPTUUUrE   c                    |                     d          }|                     d          }g }	|                     ||||d d          }
|
D ]\  }}|d         dk    r.|	                    d|                     ||||          f           ?t	          |d          }|r|j        }n|g}|	                    d|                     |d                   z   t          |||d	         |d         ||          f           |	S )
Nrb   rc   rQ   r  r0   zpy:modre   zpy:r   )rl   rQ  r   rZ  r+   r   role_for_objtyper-   )r   r`   rR  rS  r_   rv   r   rU  r  r  rO  r   rW   r  r   s                  rF   resolve_any_xrefzPythonDomain.resolve_any_xrefO  s?    ((;''((:&&-/ --WgvtQGG  	? 	?ID#1v! ? $ 9 9';:>!J !J K L L L L
 6dJGG *&/HH !)zH(=(=c!f(E(E E ,Wk3q63q6-5t!= != > ? ? ? ? rE   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   )rs  rI   rK   r    rJ   r-   r9   r:   )r   rS  rR  r   r   r0   r\   s          rF   rZ  z!PythonDomain._make_module_refnodek  s     d#? 	,TFO++E 	(Q'''E? 	2TFO+c11EG[&.&.$e- - 	-rE   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 )Nr0   r   rS   rQ   )rs  r  r9   r:   r8  r;   r<   )r   rU  r1  refnamerW   s        rF   get_objectszPythonDomain.get_objectsy  s       L..00 	L 	LLGSGXs{CKKKKKK L..00 	W 	WLGS{h& W; W"GS[#+s{TVWWWWW"GS[#+s{TUVVVV	W 	WrE   c                     |                     d          }|                     d          }|                     d          }|d S d                    t          d |||g                    S )Nrb   rc   rL   rP   )rl   r  r   )r   rv   rU  r  r_   s        rF   get_full_qualified_namez$PythonDomain.get_full_qualified_name  sf    ((;''((:&&+&& 	F488F4'7F)CDDEEErE   )FN)r   )9r>   r?   r@   rw  r   r  r   r    r2  r   rA   rB   r|  r  r  r  r  r  r  r  r  r  r  r  r   r  rolesr9  r   r   r
  indicesr  r8   r8  rC   rh  rH   rs  r  rC  r   rF  r   r   rQ  r   r   r   r
   r\  r_  r   rZ  r   rc  re  rD   rE   rF   rf  rf  ~  sL        !!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   8-G -# -S -'+-07- - - -	WXeCc3S,H&IJ 	W 	W 	W 	WFG F F F F F F FrE   rf  rv   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   rN   c                     |                      d          r|                     dd          d         } | t          j        v S )NrT   rP   rQ   )rY   rZ   typing__all__)r   s    rF   istypingz"builtin_resolver.<locals>.istyping  s9    <<	"" 	#Q"AFN""rE   rj   ri   Nr]   )rX   rW   rL   rV   )rX   rW   r,  )rA   rC   rl   inspectisclassgetattrbuiltins)r  r`   rv   r   rl  rL   s         rF   builtin_resolverrq    s    #C #D # # # # xx$ t	)		 0	0 	TXXk5J5Jf5T 		)		 7	7 HH[))	?78Y==>> 	OXi   	O4rE   c                    |                      d           |                     t                     |                     ddd           |                     dt
                     |                     dt          d           d	d
dddS )Nzsphinx.directivesrn   Fr`   zobject-description-transformzmissing-referencei  )priorityr6   r   T)versionenv_versionparallel_read_safeparallel_write_safe)setup_extension
add_domainrf  add_config_valueconnectr  rq  )r  s    rF   setupr|    s    +,,,NN<   <eUKKKKK.0BCCCKK#%5KDDD "#	  rE   )Fr  r}   )rrw  rp  rm  r   r   rj  rG  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)   sphinx.util.inspectr*   sphinx.util.nodesr+   r,   r-   sphinx.util.typingr.   r/   	getLoggerr>   rO  r   VERBOSErA  r  r8   rH   rA   rC   r^   rs   r   r   r   r   r   r  r  r  r  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  rf  rq  r|  rD   rE   rF   <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 0 0 0 0 0 0 2 2 2 2 2 2 P P P P P P P P P P 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; ; ;#3 ;T ;+; ; ; ;4o/# o/,< o/d o/ o/ o/ o/d/ /C /&6 /(B] / / / /d.> .C .D . . . .f; ; ; ; ; ; ; ;|	 	 	 	 	k5 	 	 		 	 	 	 	[, 	 	 		 	 	 	 	;
 	 	 	^6 ^6 ^6 ^6 ^6 sCx1 ^6 ^6 ^6B# # # # # # # #L    *   ""6 "6 "6 "6 "6 "6 "6 "6J    (   <<? <? <? <? <?x <? <? <?~	 	 	 	 	H 	 	 		 	 	 	 	X 	 	 	        *< *< *< *< *<( *< *< *<Z0; 0; 0; 0; 0; 0; 0; 0;f5" 5" 5" 5" 5" 5" 5" 5"p    o   *       .'F 'C '# ' 'TX ' ' ' 'E( E( E( E( E( E( E( E(PMF MF MF MF MF6 MF MF MF`& '7 '3:?F   2v $sCx.      rE   