
    -Ph                       d Z ddlm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
 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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& er@ddl'm(Z(m)Z)m*Z*m+Z+ ddlm,Z,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z= ddlm>Z>m?Z? ddlm@Z@mAZAmBZBmCZCmDZD  e jE        eF          ZGdddddd d!d"ZH G d# d$e	          ZI G d% d&e	          ZJ G d' d(e          ZK G d) d*eK          ZL G d+ d,e          ZM G d- d.e          ZN G d/ d0e          ZO G d1 d2eO          ZP G d3 d4eO          ZQ G d5 d6eO          ZR G d7 d8e          ZS G d9 d:e          ZT G d; d<e          ZU G d= d>e"          ZV G d? d@e"          ZW G dA dBe          ZX G dC dDeX          ZYd\dNZZ G dO dPe          Z[ G dQ dRe          Z\d]dYZ]d^d[Z^dS )_zThe Python domain.    )annotationsN)NoneType)TYPE_CHECKING
NamedTuplecast)nodes)
directives)addnodes)DomainIndex
IndexEntryObjType)_parse_annotation)PyObject)___)XRefRole)logging)SphinxDirective)find_pending_xref_conditionmake_idmake_refnode)IterableIteratorSequenceSet)AnyClassVar)ElementNodeTextElement)desc_signaturepending_xref)Sphinx)Builder)BuildEnvironment)ExtensionMetadata
OptionSpec)_parse_arglisttype_to_xref)PyFieldPyGroupedFieldPyTypedFieldPyXrefMixin	py_sig_remodulekeywordoperatorobject	exception	statementzbuilt-in function)r0   r1   r2   r3   r4   r5   builtinc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )ObjectEntrystrdocnamenode_idobjtypeboolaliasedN__name__
__module____qualname____annotations__     ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/python/__init__.pyr8   r8   D   s4         LLLLLLLLLMMMMMrE   r8   c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )	ModuleEntryr9   r:   r;   synopsisplatformr=   
deprecatedNr?   rD   rE   rF   rH   rH   K   sB         LLLLLLMMMMMMrE   rH   c                       e Zd ZU dZej                                        Zded<   e                    de	j
        i           dd	ZddZd fdZddZ xZS )
PyFunctionzDescription of a function.ClassVar[OptionSpec]option_specasyncsigr9   returnSequence[nodes.Node]c                    g }d| j         v r;|                    t          j        dd          t          j                    f           |S )NrP    optionsextendr
   desc_sig_keyworddesc_sig_spaceselfrQ   prefixs      rF   get_signature_prefixzPyFunction.get_signature_prefix[   sR    24dl""MM)"g66'))    rE   r=   c                    dS NTrD   r\   s    rF   needs_arglistzPyFunction.needs_arglistd       trE   name_clstuple[str, str]signoder"   Nonec                   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 d
| d}| j        d                             d||d	d f           d S d S )Nno-index-entryr0   	py:moduleidsr   %s() (in module %s)entriessinglerU   zbuilt-in function; ()pair)	superadd_target_and_indexrW   getenvref_contextr   	indexnodeappend)
r\   rd   rQ   rf   modnamer;   nameclstext	__class__s
            rF   rr   zPyFunction.add_target_and_indexg   s     	$$XsG<<<4<//l&&x1E1I1I+1V1VWWGenQ'G ID# T.//4/Ay)00(D'2t1TUUUUU5T555y)00&$T1RSSSSS 0/rE   rx   c                    dS )NrU   rD   r\   rx   rd   s      rF   get_index_textzPyFunction.get_index_textw   s    rrE   rQ   r9   rR   rS   rR   r=   )rd   re   rQ   r9   rf   r"   rR   rg   rx   r9   rd   re   rR   r9   )r@   rA   rB   __doc__r   rO   copyrC   updater	   flagr^   rb   rr   r   __classcell__r|   s   @rF   rM   rM   S   s         $$(0(<(A(A(C(CKCCCC         T T T T T T        rE   rM   c                  8     e Zd ZdZd fdZd fd
ZddZ xZS )PyDecoratorFunctionzDescription of a decorator.rR   
list[Node]c                R    d| _         t                                                      S )Nzpy:functionry   rq   runr\   r|   s    rF   r   zPyDecoratorFunction.run   s    !	ww{{}}rE   rQ   r9   rf   r"   re   c                    t                                          ||          }|                    dt          j        dd                     |S Nr   @rq   handle_signatureinsertr
   desc_addnamer\   rQ   rf   retr|   s       rF   r   z$PyDecoratorFunction.handle_signature   B    gg&&sG44q(/S99:::
rE   r=   c                    dS NFrD   ra   s    rF   rb   z!PyDecoratorFunction.needs_arglist       urE   rR   r   rQ   r9   rf   r"   rR   re   r   r@   rA   rB   r   r   r   rb   r   r   s   @rF   r   r   |   su        %%     
     
       rE   r   c                       e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        d           d fdZddZ xZS )
PyVariablezDescription of a variable.rN   rO   typevaluerQ   r9   rf   r"   rR   re   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   rU   :r   =rq   r   rW   rs   r   rt   r
   desc_annotationdesc_sig_punctuationrZ   r   Text	r\   rQ   rf   fullnamer]   typr   r   r|   s	           rF   r   zPyVariable.handle_signature       7733CAA&lv&& 	+C::Kx/-b#66'))	
    G   )) 	x/'))-b#66'))
5!!  G rE   rx   rd   c                \    |\  }}|rt          d          ||fz  S t          d          |z  S )N%s (in module %s)z%s (built-in variable))r   )r\   rx   rd   ry   rz   s        rF   r   zPyVariable.get_index_text   s?    	c 	6())T7O;;-..55rE   r   r   r@   rA   rB   r   r   rO   r   rC   r   r	   	unchangedr   r   r   r   s   @rF   r   r      s         $$(0(<(A(A(C(CKCCCC$%    
           66 6 6 6 6 6 6 6rE   r   c                      e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        d           dZdd
ZddZdS )PyClasslikezEDescription of a class-like object (classes, interfaces, exceptions).rN   rO   )abstractfinalTrQ   r9   rR   rS   c                   g }d| j         v r;|                    t          j        dd          t          j                    f           d| j         v r;|                    t          j        dd          t          j                    f           |                    t          j        d| j                  t          j                    f           |S )Nr   rU   r   )rW   rX   r
   rY   rZ   r<   r[   s      rF   r^   z PyClasslike.get_signature_prefix   s    24dl""MM)"g66'))    %%MM)"j99'))    	%b$,77#%%
 	 	 	 rE   rx   rd   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 )Nclassz%s (built-in class)r   z%s (class in %s)r4   rU   )r<   r   r~   s      rF   r   zPyClasslike.get_index_text   sh    <7"" >.//(1+=='((HQK+AAA\[((A;2rE   Nr   r   )r@   rA   rB   r   r   rO   r   rC   r   r	   r   allow_nestingr^   r   rD   rE   rF   r   r      s         OO(0(<(A(A(C(CKCCCCO    
 M   $     rE   r   c            	          e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        e	j
        e	j
        e	j
        e	j
        d           ddZddZddZdS )PyMethodzDescription of a method.rN   rO   )r   abstractmethodrP   classmethodr   staticmethodrR   r=   c                    dS r`   rD   ra   s    rF   rb   zPyMethod.needs_arglist   rc   rE   rQ   r9   rS   c                   g }d| j         v r;|                    t          j        dd          t          j                    f           d| j         v s	d| j         v r;|                    t          j        dd          t          j                    f           d| j         v r;|                    t          j        dd          t          j                    f           d| j         v r;|                    t          j        dd          t          j                    f           d| j         v r;|                    t          j        dd          t          j                    f           |S )	Nr   rU   r   r   rP   r   r   staticrV   r[   s      rF   r^   zPyMethod.get_signature_prefix   sx   24dl""MM)"g66'))    %%)9T\)I)IMM)".>??'))    dl""MM)"g66'))    DL((MM)"m<<'))    T\))MM)"h77'))    rE   rx   rd   re   c                b   |\  }}	 |                     dd          \  }}|r| j        j        r| d| }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 t	          d	          ||fz  S )
N.   rl   z%s()r   z%s() (%s class method)r   z%s() (%s static method)z%s() (%s method))rsplitconfigadd_module_names
ValueErrorr   rW   )r\   rx   rd   ry   rz   clsnamemethnames          rF   r   zPyMethod.get_index_text  s   	c	% $C 3 3GX 14;7 1$00w00 	% 	% 	% %.//4/AAAA}$$$		% DL((-..(G1DDDt|++.//8W2EEE'((Hg+>>>s   .6  A A A Nr   r   r   )r@   rA   rB   r   r   rO   r   rC   r   r	   r   rb   r^   r   rD   rE   rF   r   r      s         ""(0(<(A(A(C(CKCCCCO$/!"          :? ? ? ? ? ?rE   r   c                  b     e Zd ZU dZej                                        Zded<   d fdZ xZ	S )PyClassMethodzDescription of a classmethod.rN   rO   rR   r   c                f    d| _         d| j        d<   t                                                      S )N	py:methodTr   ry   rW   rq   r   r   s    rF   r   zPyClassMethod.run'  s(    	&*]#ww{{}}rE   r   
r@   rA   rB   r   r   rO   r   rC   r   r   r   s   @rF   r   r   "  se         ''(0(<(A(A(C(CKCCCC         rE   r   c                  b     e Zd ZU dZej                                        Zded<   d fdZ xZ	S )PyStaticMethodzDescription of a staticmethod.rN   rO   rR   r   c                f    d| _         d| j        d<   t                                                      S )Nr   Tr   r   r   s    rF   r   zPyStaticMethod.run3  s(    	'+^$ww{{}}rE   r   r   r   s   @rF   r   r   .  se         (((0(<(A(A(C(CKCCCC         rE   r   c                  8     e Zd ZdZd fdZd fd
ZddZ xZS )PyDecoratorMethodz!Description of a decoratormethod.rR   r   c                R    d| _         t                                                      S )Nr   r   r   s    rF   r   zPyDecoratorMethod.run=  s    	ww{{}}rE   rQ   r9   rf   r"   re   c                    t                                          ||          }|                    dt          j        dd                     |S r   r   r   s       rF   r   z"PyDecoratorMethod.handle_signatureA  r   rE   r=   c                    dS r   rD   ra   s    rF   rb   zPyDecoratorMethod.needs_arglistF  r   rE   r   r   r   r   r   s   @rF   r   r   :  su        ++          
       rE   r   c                       e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        d           d fdZddZ xZS )PyAttributeDescription of an attribute.rN   rO   r   rQ   r9   rf   r"   rR   re   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_signatureS  r   rE   rx   rd   c                    |\  }}	 |                     dd          \  }}|r| j        j        r| d| }n*# t          $ r |rt	          d          ||fz  cY S |cY S w xY wt	          d          ||fz  S )Nr   r   r   z%s (%s attribute)r   r   r   r   r   r\   rx   rd   ry   rz   r   attrnames          rF   r   zPyAttribute.get_index_textn  s    	c	 $C 3 3GX 14;7 1$00w00 	 	 	 ,--w????		 $%%7(;;;   .6  AAAr   r   r   r   s   @rF   r   r   J  s         &&(0(<(A(A(C(CKCCCC$%    
           6< < < < < < < <rE   r   c                       e Zd ZdZej                                        Ze                    ej	        ej	        ej	        ej
        d           d fd	ZddZddZ xZS )
PyPropertyr   )r   r   r   r   rQ   r9   rf   r"   rR   re   c           	     0   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }||fS )Nr   rU   r   )
rq   r   rW   rs   r   rt   r
   r   r   rZ   )r\   rQ   rf   r   r]   r   r   r|   s          rF   r   zPyProperty.handle_signature  s     7733CAA&lv&& 	+C::Kx/-b#66'))	
    G rE   rS   c                   g }d| j         v s	d| j         v r;|                    t          j        dd          t          j                    f           d| j         v r;|                    t          j        dd          t          j                    f           |                    t          j        dd          t          j                    f           |S )Nr   r   rU   r   r   propertyrV   r[   s      rF   r^   zPyProperty.get_signature_prefix  s    24%%)9T\)I)IMM)"j99'))    DL((MM)"g66'))    	%b*55#%%
 	 	 	 rE   rx   rd   c                    |\  }}	 |                     dd          \  }}|r| j        j        r| d| }n*# t          $ r |rt	          d          ||fz  cY S |cY S w xY wt	          d          ||fz  S )Nr   r   r   z%s (%s property)r   r   s          rF   r   zPyProperty.get_index_text  s    	c	 $C 3 3GX 14;7 1$00w00 	 	 	 ,--w????		 #$$'':::r   r   r   r   )r@   rA   rB   r   r   rO   r   r   r	   r   r   r   r^   r   r   r   s   @rF   r   r   }  s        &&&++--KO$/!$	                   $; ; ; ; ; ; ; ;rE   r   c                       e Zd ZU dZej                                        Zded<   e                    de	j
        i           dd	Zd fdZddZ xZS )PyTypeAliaszDescription of a type alias.rN   rO   	canonicalrQ   r9   rR   rS   c                R    t          j        dd          t          j                    gS )NrU   r   )r
   rY   rZ   )r\   rQ   s     rF   r^   z PyTypeAlias.get_signature_prefix  s#    )"f55x7N7P7PQQrE   rf   r"   re   c           
     T   t                                          ||          \  }}| j                            d          x}rct	          || j                  }|t          j        |dt          j                    t          j	        dd          t          j                    g|R  z  }||fS )Nr   rU   r   )
rq   r   rW   rs   r   rt   r
   r   rZ   r   )r\   rQ   rf   r   r]   r   canonical_annotationsr|   s          rF   r   zPyTypeAlias.handle_signature  s     7733CAA&((5559 		$5i$J$J!x/'))-b#66')) '   G rE   rx   rd   c                    |\  }}	 |                     dd          \  }}|r| j        j        r| d| }n*# t          $ r |rt	          d          ||fz  cY S |cY S w xY wt	          d          ||fz  S )Nr   r   r   z%s (type alias in %s)r   r   s          rF   r   zPyTypeAlias.get_index_text  s    	c	 $C 3 3GX 14;7 1$00w00 	 	 	 ,--w????		 ())Xw,???r   r   r   r   )r@   rA   rB   r   r   rO   r   rC   r   r	   r   r^   r   r   r   r   s   @rF   r   r     s         &&(0(<(A(A(C(CKCCCCZ)   R R R R           @ @ @ @ @ @ @ @rE   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	        ej	        ej	        ej	        ej	        d	Z
d	ed
<   ddZdS )PyModulez.Directive to mark description of a new module.Tr   r   Fc                    | S NrD   xs    rF   <lambda>zPyModule.<lambda>      a rE   c                    | S r   rD   r   s    rF   r   zPyModule.<lambda>  r   rE   )	rJ   rI   no-indexri   zno-contents-entryzno-typesettingnoindexnocontentsentryrK   rN   rO   rR   r   c           	        d| j         vrd| j         v r| j         d         | j         d<   | j        j        j        }| j        d                                         }d| j         v }|| j        j        d<   |                     d          }g }|s-t          | j        | j	        j
        d|          }t          j        dd|gd	          }|                     |           | j	        j
                            |           |                    ||| j                             d
d          | j                             dd          d| j         v            |                    |d||           d| j         vr5d| }t%          j        d||dd fg          }	|                    |	           |                    |           |                    |           |S )Nr   r   r   rj   T)allow_section_headingsr0   rU   )rk   ismodrI   rJ   rK   )ry   r;   rI   rJ   rK   locationri   zmodule; rp   )rm   )rW   rt   domainspython_domain	argumentsstripru   parse_content_to_nodesr   statedocumentr   targetset_source_infonote_explicit_targetnote_modulers   note_objectr
   indexrw   rX   )
r\   domainrx   no_indexcontent_nodesr   r;   r
  
index_textinodes
             rF   r   zPyModule.run  s    T\))i4<.G.G'+|I'>DL$!/.#))++-,3[)3343PP 	dh
(;XwOOG\"bwitDDDF  (((J44V<<<))*b99))*b99'4<7     w'FKKK
  t|33111
 $j'2tDE   

5!!!JJv

=!!!
rE   Nr   )r@   rA   rB   r   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer	   r   rO   rC   r   rD   rE   rF   r   r     s         88K %KKO$/'_$/?%? o
) 
)K 
 
 
 
, , , , , ,rE   r   c                  :    e Zd ZU dZdZdZdZdZi Zde	d<   dd	Z
d
S )PyCurrentModulezThis directive is just to tell Sphinx that we're documenting
    stuff in module foo, but links to module foo won't lead here.
    Fr   r   rN   rO   rR   r   c                    | j         d                                         }|dk    r!| j        j                            dd            n|| j        j        d<   g S )Nr   rg   rj   )r  r  rt   ru   pop)r\   rx   s     rF   r   zPyCurrentModule.run.  sW    .#))++fH $$[$777707DH -	rE   Nr   )r@   rA   rB   r   r  r  r  r  rO   rC   r   rD   rE   rF   r  r  #  s^           K %(*K****     rE   r  c                      e Zd ZddZdS )
PyXRefRolert   r&   refnoder   has_explicit_titler=   titler9   r
  rR   re   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 )
Nrj   py:classr   ~r   r   Trefspecific)ru   rs   lstriprfind)r\   rt   r  r   r!  r
  dots          rF   process_linkzPyXRefRole.process_link8  s      #22;??!o11*==
! 		-LL%%E]]3''F QqSzS  abb	kk#&&"99!#')),E !A#;#ABBZF%)GM"f}rE   N)rt   r&   r  r   r   r=   r!  r9   r
  r9   rR   re   )r@   rA   rB   r*  rD   rE   rF   r  r  7  s(             rE   r  c                  4     e Zd Z	 	 	 	 	 dd fdZddZ xZS )_PyDecoXRefRoleFN
fix_parensr=   	lowercase	nodeclasstype[Element] | Noneinnernodeclasstype[TextElement] | Nonewarn_danglingrR   rg   c                T    t                                          d||||           d S )NT)r-  r.  r/  r1  r3  )rq   __init__)r\   r-  r.  r/  r1  r3  r|   s         rF   r5  z_PyDecoXRefRole.__init__U  s?     	)' 	 	
 	
 	
 	
 	
rE   r!  r9   r
  re   c                    d| |fS )Nr   rD   )r\   r!  r
  s      rF   update_title_and_targetz'_PyDecoXRefRole.update_title_and_targete  s    5{{F""rE   )FFNNF)r-  r=   r.  r=   r/  r0  r1  r2  r3  r=   rR   rg   )r!  r9   r
  r9   rR   re   )r@   rA   rB   r5  r7  r   r   s   @rF   r,  r,  T  sg         !*.37#
 
 
 
 
 
 
 # # # # # # # #rE   r,  appr$   r  r9   r<   contentr   rR   rg   c                l   |dk    rdS |D ]}t          |t          j                  rt          d|          }t	          |          D ]l}t          d|d                                                                                   }|dk    s|                    d          r|                    |           mdS )z+Filter ``:meta:`` field from its docstring.pyNzlist[nodes.field]znodes.field_bodyr   metazmeta )	
isinstancer   
field_listr   reversedastextr  
startswithremove)r8  r  r<   r9  nodefieldsfield
field_names           rF   filter_meta_fieldsrG  i  s     ~~ ' 'dE,-- 	'-t44F!&)) ' '!"4eAh??FFHHNNPP
'':+@+@+I+I'KK&&&' 'rE   c                  Z    e Zd ZU dZdZ ed          Z ed          Zded<   	 dddZ	dS )PythonModuleIndexz2Index subclass to provide the Python module index.modindexzPython Module IndexmodulesPythonDomainr  NdocnamesIterable[str] | NonerR   /tuple[list[tuple[str, list[IndexEntry]]], bool]c                   |t          |          nd }i }t          | j        j        j        d         t
          d          }t          | j        j                                        d           }d}d}|D ]\  }}	|r
|	j        |vr|D ]0}
|	                    |
          r|
                    |
          }|
} n1d}|s|d}}|                    |d                                         g           }|                    dd	
          d         }||k    r||k    rB|r?|d         }t          |j        d	|j        |j        |j        |j        |j                  |d<   nC|	                    |          s.t          ||z   d	ddddd          }|                    |           d}n|d	z  }d}t          ||z   ||	j        |	j        |	j        |	j        rt1          d          nd|	j                  }|                    |           |}t          |          |z
  |k     }t          |                                          }||fS )Nmodindex_common_prefixT)keyreversec                6    | d                                          S )Nr   )lower)ts    rF   r   z,PythonModuleIndex.generate.<locals>.<lambda>  s    AaDJJLL rE   )rR  rU   r   r   r   )maxsplitr%  )ry   subtyper:   anchorextra	qualifierdescr   
Deprecated)	frozensetsortedr  rt   r   lenrK  itemsr:   rA  removeprefix
setdefaultrU  splitr   ry   rY  rZ  r[  r\  rw   r;   rJ   rK   r   rI   )r\   rM  	doc_namesr9  ignoresrK  prev_modnamenum_top_levelsrx   r0   ignorestrippedrm   packagelastdummy_entryrX  entrycollapsesorted_contents                       rF   generatezPythonModuleIndex.generate  s    ,4+?Ih'''T	/1#KO"#;<#t
 
 

 ,2244:P:PQQQ & =	# =	#OGV V^9<<!  %%f-- %226::G%HE
   1$,b(()9)9););R@@GmmC!m44Q7G'!!7** 
&r{&0!%$%$(L#';"&*&*n"&*' ' ' &0099 0",%/ ! "! "$ # # #K NN;///!#'~o-3->F!L///Bo  E NN5!!!"LL
 w<<.0>A  00x''rE   r   )rM  rN  rR   rO  )
r@   rA   rB   r   ry   r   	localname	shortnamerC   rr  rD   rE   rF   rI  rI  z  so         <<D'((I)I 04Y( Y( Y( Y( Y( Y( Y(rE   rI  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           e ed          dd          dZde	d<   e
eeeeeeeeeeeeedZ e             e             ed           e             e             e             e             e             ed           e             e            dZi i dZde	d <   egZedYd#            Z	 	 dZd[d/Z ed\d1            Z!d]d5Z"d^d7Z#d_d<Z$	 d`dadFZ%dbdPZ&dcdRZ'dddUZ(dedWZ)dfdXZ*d%S )grL  zPython language domain.r;  Pythonfunctionfuncobjdatar   excr4   methodmethzclass methodzstatic method	attributeattrr   _propz
type aliasr   r0   mod)rw  rz  r   r4   r|  r   r   r~  r   r   r0   zdict[str, ObjType]object_types)rw  rz  r   r4   r|  r   r   r~  r   r   r0   currentmodule	decoratordecoratormethodT)r-  )rz  r{  rx  decor   constr  r   r}  r  ry  )objectsrK  z dict[str, dict[str, tuple[Any]]]initial_datarR   dict[str, ObjectEntry]c                8    | j                             di           S )Nr  rz  rd  ra   s    rF   r  zPythonDomain.objects      y##Ir222rE   FNry   r9   r<   r;   r>   r=   r  r   rg   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
        FNzXduplicate object description of %s, other instance in %s, use :no-index: for one of themr  )r  r>   loggerwarningr   r:   r8   rt   )r\   ry   r<   r;   r>   r  others          rF   r  zPythonDomain.note_object  s     4<L&E} E!1!1%''G' O  M%     ))97GWUUTrE   dict[str, ModuleEntry]c                8    | j                             di           S )NrK  r  ra   s    rF   rK  zPythonDomain.modules;  r  rE   rI   rJ   rK   c                R    t          | j        j        ||||          | j        |<   dS )zQNote a python module for cross reference.

        .. versionadded:: 2.1
        )r:   r;   rI   rJ   rK   N)rH   rt   r:   rK  )r\   ry   r;   rI   rJ   rK   s         rF   r  zPythonDomain.note_module?  s9     )H$!
 
 
TrE   r:   c                    fd| j                                         D             }|D ]
}| j         |= fd| j                                        D             }|D ]
}| j        |= d S )Nc                0    g | ]\  }}|j         k    |S rD   r:   ).0r   ry  r:   s      rF   
<listcomp>z*PythonDomain.clear_doc.<locals>.<listcomp>O  s1     
 
 
&3#+QXBXBXHBXBXBXrE   c                0    g | ]\  }}|j         k    |S rD   r  )r  rx   r  r:   s      rF   r  z*PythonDomain.clear_doc.<locals>.<listcomp>T  s0     
 
 
$w@V@VG@V@V@VrE   )r  rb  rK  )r\   r:   	to_remover   s    `  rF   	clear_doczPythonDomain.clear_docN  s    
 
 
 
*.,*<*<*>*>
 
 
	 " 	' 	'HX&&
 
 
 
(,(:(:(<(<
 
 
	 " 	' 	'HX&&	' 	'rE   rM  Set[str]	otherdatadict[str, Any]c                    |d                                          D ]\  }}|j        |v r
|| j        |<   |d                                          D ]\  }}|j        |v r
|| j        |<   d S )Nr  rK  )rb  r:   r  rK  )r\   rM  r  r   ry  rx   r  s          rF   merge_domaindatazPythonDomain.merge_domaindataZ  s    &y17799 	- 	-MHc{h&&),X&%i06688 	, 	,LGS{h&&(+W%	, 	,rE   r   rt   r&   rx   	classname
str | None
searchmodeintlist[tuple[str, ObjectEntry]]c                   
 |                     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|	}|sk|r/| d|  j        v r! j        | d|          j        
v r| d| }n| j        v r j        |         j        
v r|}nd| 
 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.
        ro   Nr   r   c                    g | ]:}|                               r#j        |         j        v +|j        |         f;S rD   )endswithr  r<   )r  onameobjtypes
searchnamer\   s     rF   r  z)PythonDomain.find_obj.<locals>.<listcomp>  s]     # # # %$~~j99# !%U 3 ;x G G #DL$78 !H G GrE   r  )removesuffixlistr  objtypes_for_roler  r<   rw   )r\   rt   rx   r  ry   r   r  matchesnewnamer   r  r  s   `         @@rF   find_objzPythonDomain.find_objc  sz      && 	I13??|-1$2C-D-D11$77# +y +&}y83>EH DL00 L2:hFF"* &////4<?? LG)<)<d)<)<=EQQ%,"5"5t"5"5,,d1C1Kx1W1W"& &0ZZ
# # # # # #)-# # # t|##	 	Ay35EE#c/D0 AWs]T1T\AA!C-$.AA cMI-3d:dlJJ!C-)3c9D@NNGT\'%:;<<<rE   fromdocnamebuilderr%   r
  rC  r#   contnoder   nodes.reference | Nonec                "   |                     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 )Nrj   r#  r&  r   r   r  r}  r  c                ,    g | ]}|d          j         |S )r   )r>   )r  ms     rF   r  z-PythonDomain.resolve_xref.<locals>.<listcomp>  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  matchs     rF   	<genexpr>z,PythonDomain.resolve_xref.<locals>.<genexpr>  s&      <<5eAh<<<<<<rE   refpython)r   rX  r  r]  r0   resolved)rs   hasattrr  ra  r  r  r   join_make_module_refnoder   childrenr   )r\   rt   r  r  r   r
  rC  r  rx   r   r  r  
canonicalsry   ry  r9  r  s                    rF   resolve_xrefzPythonDomain.resolve_xref  s    ((;''((:&&,,}55<QQ1
--WgvtZPP 	W46>> mmC'66:VVG 	X46>> mmC'67JWWG 	4\\AAAWAAAJ:!##$NOOII<<G<<<<<$!     AJ	cq6X,,Wk4RRR 2$
CCG &"+ %:c!fc!fhPTUUUrE   !list[tuple[str, nodes.reference]]c                0   |                     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 )
Nrj   r#  r   r]  r0   zpy:modr  zpy:r   )
rs   r  ra  r>   rw   r  r   r  role_for_objtyper   )r\   rt   r  r  r
  rC  r  rx   r   resultsr  multiple_matchesry   ry  r9  r  roles                    rF   resolve_any_xrefzPythonDomain.resolve_any_xref  sY    ((;''((:&&57 --WgvtQGGw<<!+  	 	ID# CK 1v!!--g{D(SS      6dJGG *&/HH !)zHt44SV<<< +s1vs1vxQUVV      rE   r    nodes.referencec                l   | j         |         }|g}|j        r|                    d|j                    |j        r"|                    t	          d                     |j        r|                    d|j         d           d                    |          }t          |||j        |j	        ||          S )Nz: z (deprecated)z ()rU   )
rK  rI   rw   rK   r   rJ   r  r   r:   r;   )r\   r  r  ry   r  r0   title_partsr!  s           rF   r  z!PythonDomain._make_module_refnode  s     #l40f? 	75FO55666 	3q11222? 	86FO666777$$[&.&.(E
 
 	
rE   -Iterator[tuple[str, str, str, str, str, int]]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   r%  r   )rK  rb  r:   r;   r  r<   r>   )r\   rx   r  refnamery  s        rF   get_objectszPythonDomain.get_objects$  s       L..00 	J 	JLGS7Hck3;IIIII L..00 	U 	ULGS{h&&; U!7CKckSUUUUUU!7CKckSTTTTT	U 	UrE   c                    |                     d          }|                     d          }|                     d          }|d S d                    t          d |||g                    S )Nrj   r#  	reftargetr   )rs   r  filter)r\   rC  rx   r   r
  s        rF   get_full_qualified_namez$PythonDomain.get_full_qualified_name/  sb    ((;''((:&&+&&>488F4'7F)CDDEEErE   )rR   r  )FN)ry   r9   r<   r9   r;   r9   r>   r=   r  r   rR   rg   )rR   r  )ry   r9   r;   r9   rI   r9   rJ   r9   rK   r=   rR   rg   )r:   r9   rR   rg   )rM  r  r  r  rR   rg   )r   )rt   r&   rx   r9   r  r9   ry   r9   r   r  r  r  rR   r  )rt   r&   r  r9   r  r%   r   r9   r
  r9   rC  r#   r  r   rR   r  )rt   r&   r  r9   r  r%   r
  r9   rC  r#   r  r   rR   r  )
r  r%   r  r9   ry   r9   r  r    rR   r  )rR   r  )rC  r   rR   r  )+r@   rA   rB   r   ry   labelr   r   r  rC   rM   r   r   r   r   r   r   r   r   r   r  r   r   r	   r  r,  rolesr  rI  indicesr   r  r  rK  r  r  r  r  r  r  r  r  r  rD   rE   rF   rL  rL    s        !!DEGAAjMM6599&		65117WeU;;WQQ{^^UGUCC'!!H++vu55wqq00&%@@/ 2 2FEBBWQQ{^^VU;;GAAjMM67EBB,77'!!H++ue44( (L      $& ((, J" 
z||
d+++!!


d+++z||z|| E 6 6L    
 	G 3 3 3 X3 V V V V VB 3 3 3 X3
 
 
 

' 
' 
' 
', , , ,  I I I I IV8V 8V 8V 8Vt) ) ) )V
 
 
 
"	U 	U 	U 	UF F F F F FrE   rL  rt   r&   rC  r#   r  Element | Nonec                n   d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.sr9   rR   r=   c                    |                      d          r|                     dd          d         } | t          j        v S )Nztyping.r   r   )rA  re  typing__all__)r  s    rF   istypingz"builtin_resolver.<locals>.istyping>  s9    <<	"" 	#Q"AFN""rE   	refdomainr;  Nreftype>   ry  r   r  rg   >   r{  ry  r   )r  r9   rR   r=   )rs   inspectisclassgetattrbuiltins)r8  rt   rC  r  r  r  s         rF   builtin_resolverr  9  s    
# # # # xx$$t	)		 0	0	0TXXk5J5Jf5T5T	)		 7	7	7HH[))	?78Y==>> 	O8I 	O4rE   r'   c           	     J   |                      d           |                     t                     |                     dddt	          t
          h                     |                     dd dt	          t          t          h                     |                     dddt	          t
          h                     |                     d	ddt	          t
          h                     |                     d
t                     |                     dt          d           dddddS )Nzsphinx.directives!python_use_unqualified_type_namesFrt   )types$python_maximum_signature_line_length.python_trailing_comma_in_multi_line_signaturesT"python_display_short_literal_typeszobject-description-transformzmissing-referencei  )priorityr6      )versionenv_versionparallel_read_safeparallel_write_safe)setup_extension
add_domainrL  add_config_valuer_  r=   r  r   connectrG  r  )r8  s    rF   setupr  T  sF   +,,,NN<   +UED6ARAR     .h((	     8	     ,eU)TFBSBS     KK.0BCCCKK#%5KDDD "#	  rE   )
r8  r$   r  r9   r<   r9   r9  r   rR   rg   )
r8  r$   rt   r&   rC  r#   r  r   rR   r  )r8  r$   rR   r'   )_r   
__future__r   r  r  r  r  r   r   r   r   docutilsr   docutils.parsers.rstr	   sphinxr
   sphinx.domainsr   r   r   r   "sphinx.domains.python._annotationsr   sphinx.domains.python._objectr   sphinx.localer   r   sphinx.rolesr   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.nodesr   r   r   collections.abcr   r   r   r   r   r   docutils.nodesr   r    r!   sphinx.addnodesr"   r#   sphinx.applicationr$   sphinx.buildersr%   sphinx.environmentr&   sphinx.util.typingr'   r(   r)   r*   r+   r,   r-   r.   r/   	getLoggerr@   r  pairindextypesr8   rH   rM   r   r   r   r   r   r   r   r   r   r   r   r  r  r,  rG  rI  rL  r  r  rD   rE   rF   <module>r     sd     " " " " " "          2 2 2 2 2 2 2 2 2 2       + + + + + +       = = = = = = = = = = = = @ @ @ @ @ @ 2 2 2 2 2 2         ! ! ! ! ! !       0 0 0 0 0 0           
AAAAAAAAAAAAA$$$$$$$$9999999999<<<<<<<<))))))''''''333333@@@@@@@@
                     
	8	$	$ "     *       *   & & & & & & & &R    *   ")6 )6 )6 )6 )6 )6 )6 )6X% % % % %( % % %P>? >? >? >? >?x >? >? >?B	 	 	 	 	H 	 	 		 	 	 	 	X 	 	 	        0< 0< 0< 0< 0<( 0< 0< 0<f9; 9; 9; 9; 9; 9; 9; 9;x%@ %@ %@ %@ %@( %@ %@ %@P? ? ? ? ? ? ? ?D    o   (       :# # # # #j # # #*' ' ' '"a( a( a( a( a( a( a( a(HXF XF XF XF XF6 XF XF XFv
   6     rE   