o
    NiA                     @  s  d Z ddlmZ ddlZddlZddlZddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ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rddl'm(Z(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddlm:Z:m;Z; ddlm<Z<m=Z=m>Z>m?Z?m@Z@ e AeBZCdddddddd ZDG d!d" d"e	ZEG d#d$ d$e	ZFG d%d& d&eZGG d'd( d(eGZHG d)d* d*eZIG d+d, d,eZJG d-d. d.eZKG d/d0 d0eKZLG d1d2 d2eKZMG d3d4 d4eKZNG d5d6 d6eZOG d7d8 d8eZPG d9d: d:eZQG d;d< d<e"ZRG d=d> d>e"ZSG d?d@ d@eZTd[dJdKZUG dLdM dMeZVG dNdO dOeZWd\dVdWZXd]dYdZZYdS )^zThe Python domain.    )annotationsN)TYPE_CHECKINGAnyClassVar
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Set)ElementNode)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)r,   r-   r.   r/   r0   r1   builtinc                   @  s.   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__ r?   r?   R/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/domains/python/__init__.pyr3   A   s
   
 r3   c                   @  s6   e Zd ZU ded< ded< ded< ded< ded< dS )	ModuleEntryr4   r5   r6   synopsisplatformr8   
deprecatedNr:   r?   r?   r?   r@   rA   H   s   
 rA   c                      sd   e Zd ZU dZej Zded< ede	j
i dd	d
ZdddZd fddZdddZ  ZS )
PyFunctionzDescription of a function.ClassVar[OptionSpec]option_specasyncsigr4   returnlist[nodes.Node]c                 C  s"   d| j v rtddt gS g S )NrH    )optionsr
   desc_sig_keyworddesc_sig_spaceselfrI   r?   r?   r@   get_signature_prefixX   s
   

zPyFunction.get_signature_prefixr8   c                 C     dS NTr?   rQ   r?   r?   r@   needs_arglist_      zPyFunction.needs_arglistname_clstuple[str, str]signoder   Nonec           	        s   t  ||| d| jvrQ| jd| jjd}|d d }|\}}|r<td||f }| jd d||d	d f d S d
| d}| jd d||d	d f d S d S )Nzno-index-entryr,   	py:moduleidsr   %s() (in module %s)entriessinglerL   zbuilt-in function; ()pair)	superadd_target_and_indexrM   getenvref_contextr   	indexnodeappend)	rQ   rX   rI   rZ   modnamer6   nameclstext	__class__r?   r@   rd   b   s   
zPyFunction.add_target_and_indexrj   c                 C  rS   )NrL   r?   rQ   rj   rX   r?   r?   r@   get_index_textq   s   zPyFunction.get_index_textrI   r4   rJ   rK   rJ   r8   )rX   rY   rI   r4   rZ   r   rJ   r[   rj   r4   rX   rY   rJ   r4   )r;   r<   r=   __doc__r   rG   copyr>   updater	   flagrR   rV   rd   rq   __classcell__r?   r?   rn   r@   rE   P   s   
 

rE   c                      :   e Zd ZdZd fddZd fddZdddZ  ZS )PyDecoratorFunctionzDescription of a decorator.rJ   
list[Node]c                      d| _ t  S )Nzpy:functionrk   rc   runrU   rn   r?   r@   r   y   s   
zPyDecoratorFunction.runrI   r4   rZ   r   rY   c                   &   t  ||}|dtdd |S Nr   @rc   handle_signatureinsertr
   desc_addnamerQ   rI   rZ   retrn   r?   r@   r   ~      z$PyDecoratorFunction.handle_signaturer8   c                 C  rS   NFr?   rU   r?   r?   r@   rV      rW   z!PyDecoratorFunction.needs_arglistrJ   r|   rI   r4   rZ   r   rJ   rY   rs   r;   r<   r=   ru   r   r   rV   ry   r?   r?   rn   r@   r{   v   s
    r{   c                      T   e Zd ZU dZej Zded< ee	j
e	j
d d fddZdddZ  ZS )
PyVariablezDescription of a variable.rF   rG   typevaluerI   r4   rZ   r   rJ   rY   c                      t  ||\}}| jd}|r+t|| j}|tj|dtddt	 g|R  7 }| jd}|rJ|t|dt	 tddt	 t
|7 }||fS Nr   rL   :r   =rc   r   rM   re   r   rf   r
   desc_annotationdesc_sig_punctuationrO   r   TextrQ   rI   rZ   fullnameprefixtypr   r   rn   r?   r@   r      s&   




zPyVariable.handle_signaturerj   rX   c                 C  s(   |\}}|rt d||f S t d| S )N%s (in module %s)z%s (built-in variable))r   )rQ   rj   rX   rk   rl   r?   r?   r@   rq      s   zPyVariable.get_index_textr   rt   r;   r<   r=   ru   r   rG   rv   r>   rw   r	   	unchangedr   rq   ry   r?   r?   rn   r@   r      s   
 r   c                   @  sL   e Zd ZU dZej Zded< ede	j
i dZdd
dZdddZdS )PyClasslikezO
    Description of a class-like object (classes, interfaces, exceptions).
    rF   rG   finalTrI   r4   rJ   rK   c                 C  s@   d| j v rtdt t| jt gS t| jt gS )Nr   )rM   r   r   r
   rO   r7   rP   r?   r?   r@   rR      s
   
z PyClasslike.get_signature_prefixrj   rX   rY   c                 C  sH   | j dkr|std|d  S td|d |f S | j dkr"|d S dS )Nclassz%s (built-in class)r   z%s (class in %s)r0   rL   )r7   r   rp   r?   r?   r@   rq      s   

zPyClasslike.get_index_textNrr   rt   )r;   r<   r=   ru   r   rG   rv   r>   rw   r	   rx   allow_nestingrR   rq   r?   r?   r?   r@   r      s   
 
r   c                   @  sb   e Zd ZU dZej Zded< ee	j
e	j
e	j
e	j
e	j
d dddZdddZdddZdS )PyMethodzDescription of a method.rF   rG   )abstractmethodrH   classmethodr   staticmethodrJ   r8   c                 C  rS   rT   r?   rU   r?   r?   r@   rV      rW   zPyMethod.needs_arglistrI   r4   rK   c                 C  s   g }d| j v r|td |t  d| j v r*|td |t  d| j v r>|td |t  d| j v rR|td |t  d| j v rf|td |t  |S )Nr   r   abstractrH   r   r   staticrM   ri   r   r   r
   rO   rQ   rI   r   r?   r?   r@   rR      s"   




zPyMethod.get_signature_prefixrj   rX   rY   c                 C  s   |\}}z| dd\}}|r| jjjr| d| }W n ty5   |r/td||f  Y S d|  Y S w d| jv rCtd||f S d| jv rPtd||f S td	||f S )
N.   r^   z%s()r   z%s() (%s class method)r   z%s() (%s static method)z%s() (%s method))rsplitrf   configadd_module_names
ValueErrorr   rM   )rQ   rj   rX   rk   rl   clsnamemethnamer?   r?   r@   rq      s    

zPyMethod.get_index_textNrs   rr   rt   )r;   r<   r=   ru   r   rG   rv   r>   rw   r	   rx   rV   rR   rq   r?   r?   r?   r@   r      s   
 

r   c                      6   e Zd ZU dZej Zded< d fddZ  Z	S )	PyClassMethodzDescription of a classmethod.rF   rG   rJ   r|   c                      d| _ d| jd< t  S )N	py:methodTr   rk   rM   rc   r   rU   rn   r?   r@   r        

zPyClassMethod.runr   
r;   r<   r=   ru   r   rG   rv   r>   r   ry   r?   r?   rn   r@   r         
 r   c                      r   )	PyStaticMethodzDescription of a staticmethod.rF   rG   rJ   r|   c                   r   )Nr   Tr   r   rU   rn   r?   r@   r     r   zPyStaticMethod.runr   r   r?   r?   rn   r@   r     r   r   c                      rz   )PyDecoratorMethodz!Description of a decoratormethod.rJ   r|   c                   r}   )Nr   r~   rU   rn   r?   r@   r     s   
zPyDecoratorMethod.runrI   r4   rZ   r   rY   c                   r   r   r   r   rn   r?   r@   r     r   z"PyDecoratorMethod.handle_signaturer8   c                 C  rS   r   r?   rU   r?   r?   r@   rV   $  rW   zPyDecoratorMethod.needs_arglistr   r   rs   r   r?   r?   rn   r@   r     s
    r   c                      r   )PyAttributeDescription of an attribute.rF   rG   r   rI   r4   rZ   r   rJ   rY   c                   r   r   r   r   rn   r?   r@   r   1  s&   




zPyAttribute.handle_signaturerj   rX   c                 C  x   |\}}z| dd\}}|r| jjjr| d| }W n ty3   |r/td||f  Y S | Y S w td||f S )Nr   r   r   z%s (%s attribute)r   rf   r   r   r   r   rQ   rj   rX   rk   rl   r   attrnamer?   r?   r@   rq   F     zPyAttribute.get_index_textr   rt   r   r?   r?   rn   r@   r   (  s   
 r   c                      sX   e Zd ZdZej Zeej	ej	ej
d d fd	d
ZdddZdddZ  ZS )
PyPropertyr   )r   r   r   rI   r4   rZ   r   rJ   rY   c                   s^   t  ||\}}| jd}|r+t|| j}|tj|dtddt	 g|R  7 }||fS )Nr   rL   r   )
rc   r   rM   re   r   rf   r
   r   r   rO   )rQ   rI   rZ   r   r   r   r   rn   r?   r@   r   _  s   


zPyProperty.handle_signaturerK   c                 C  sv   g }d| j v r|td |t  d| j v r*|td |t  |td |t  |S )Nr   r   r   r   propertyr   r   r?   r?   r@   rR   l  s   

zPyProperty.get_signature_prefixrj   rX   c                 C  r   )Nr   r   r   z%s (%s property)r   r   r?   r?   r@   rq   y  r   zPyProperty.get_index_textr   rr   rt   )r;   r<   r=   ru   r   rG   rv   rw   r	   rx   r   r   rR   rq   ry   r?   r?   rn   r@   r   U  s    

r   c                      sZ   e Zd ZU dZej Zded< ede	j
i dd	d
Zd fddZdddZ  ZS )PyTypeAliaszDescription of a type alias.rF   rG   	canonicalrI   r4   rJ   rK   c                 C  s   t dt gS )Nr   )r   r   r
   rO   rP   r?   r?   r@   rR     s   z PyTypeAlias.get_signature_prefixrZ   r   rY   c              	     sd   t  ||\}}| jd }r.t|| j}|tj|dt t	ddt g|R  7 }||fS )Nr   rL   r   )
rc   r   rM   re   r   rf   r
   r   rO   r   )rQ   rI   rZ   r   r   r   canonical_annotationsrn   r?   r@   r     s   

zPyTypeAlias.handle_signaturerj   rX   c                 C  r   )Nr   r   r   z%s (type alias in %s)r   r   r?   r?   r@   rq     r   zPyTypeAlias.get_index_textrr   r   rt   )r;   r<   r=   ru   r   rG   rv   r>   rw   r	   r   rR   r   rq   ry   r?   r?   rn   r@   r     s   
 
r   c                	   @  s^   e Zd ZU dZdZdZdZdZdd dd ej	ej	ej	ej	ej	ej	d	Z
d
ed< dddZdS )PyModulez8
    Directive to mark description of a new module.
    Tr   r   Fc                 C     | S Nr?   xr?   r?   r@   <lambda>      zPyModule.<lambda>c                 C  r   r   r?   r   r?   r?   r@   r     r   )rC   rB   no-indexzno-contents-entryzno-typesettingnoindexnocontentsentryrD   rF   rG   rJ   r|   c           
   	   C  s(  d| j vrd| j v r| j d | j d< | jjj}| jd  }d| j v }|| jjd< | jdd}g }|st| j| j	j
d|}tjdd|gdd	}| | | j	j
| |||| j d
d| j ddd| j v  |j|d||d d| }tjd||dd fgd}	||	 || || |S )Nr   r   r   r\   T)allow_section_headingsr,   rL   )r]   ismodrB   rC   rD   locationzmodule; rb   )r_   )rM   rf   domainspython_domain	argumentsstriprg   parse_content_to_nodesr   statedocumentr   targetset_source_infonote_explicit_targetnote_modulere   note_objectr
   indexri   extend)
rQ   domainrj   no_indexcontent_nodesr   r6   r   	indextextinoder?   r?   r@   r     s4   






zPyModule.runNr   )r;   r<   r=   ru   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer	   rx   rG   r>   r   r?   r?   r?   r@   r     s    
 r   c                   @  s8   e Zd ZU dZdZdZdZdZi Zde	d< dd	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.
    Fr   r   rF   rG   rJ   r|   c                 C  s:   | j d  }|dkr| jjdd  g S || jjd< g S )Nr   r[   r\   )r   r   rf   rg   pop)rQ   rj   r?   r?   r@   r     s   zPyCurrentModule.runNr   )r;   r<   r=   ru   r   r   r   r   rG   r>   r   r?   r?   r?   r@   r     s   
 r   c                   @  s   e Zd ZdddZdS )
PyXRefRolerf   r"   refnoder   has_explicit_titler8   titler4   r   rJ   rY   c                 C  s   |j d|d< |j d|d< |s;|d}|d}|dd dkr;|dd  }|d}|dkr;||d d  }|dd dkrM|dd  }d|d	< ||fS )
Nr\   py:classr   ~r   r   Trefspecific)rg   re   lstriprfind)rQ   rf   r   r   r   r   dotr?   r?   r@   process_link  s   


zPyXRefRole.process_linkN)rf   r"   r   r   r   r8   r   r4   r   r4   rJ   rY   )r;   r<   r=   r   r?   r?   r?   r@   r     s    r   appr    r   r4   r7   contentr   rJ   r[   c                 C  sx   |dkrdS |D ]1}t |tjr9tttj |}t|D ]}ttj|d  	 }|dks3|
dr8|| qqdS )z+Filter ``:meta:`` field from its docstring.pyNr   metazmeta )
isinstancer   
field_listr   listfieldreversed
field_bodyastextr   
startswithremove)r   r   r7   r   nodefieldsr  
field_namer?   r?   r@   filter_meta_fields  s   
r  c                   @  s0   e Zd ZdZdZedZedZddd
dZdS )PythonModuleIndexz<
    Index subclass to provide the Python module index.
    modindexzPython Module IndexmodulesNdocnamesIterable[str] | NonerJ   /tuple[list[tuple[str, list[IndexEntry]]], bool]c                 C  s  i }| j jjd }t|tdd}t| j jd  dd d}d}d	}|D ]\}\}}	}
}}|r4||vr4q$|D ]}||rI|t|d  }|} nq6d}|sS|d}}||d	 	 g }|
d
d	 }||kr||kr|r|d }t|d	 d|d |d |d |d |d |d< n||s|t|| dddddd d}n|d7 }d	}|rtdnd}|t|| |||	|||
 |}q$t|| |k }t| }||fS )Nmodindex_common_prefixT)keyreverser  c                 S  s   | d   S )Nr   )lowerr   r?   r?   r@   r   8  s    z,PythonModuleIndex.generate.<locals>.<lambda>)r  rL   r   r   r   r                  
Deprecated)r   rf   r   sortedlendataitemsr
  
setdefaultr  splitr   ri   r   )rQ   r  r   ignoresr  prev_modnamenum_toplevelsrj   r5   r6   rB   	platformsrD   ignorestrippedr_   packagelastsubtype	qualifiercollapsesorted_contentr?   r?   r@   generate0  sV   


zPythonModuleIndex.generater   )r  r  rJ   r  )	r;   r<   r=   ru   rk   r   	localname	shortnamer2  r?   r?   r?   r@   r  '  s    r  c                   @  s  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de e e e edde e d
Zi i dZde	d < egZeddd#d$Z	&dedfd0d1Zedgd3d4Z dhd8d9Z!did;d<Z"djdAdBZ#	CdkdldLdMZ$dmdWdXZ%dndZd[Z&dod]d^Z'dpd`daZ(dqdbdcZ)d&S )rPythonDomainzPython language domain.r  Pythonfunctionfuncobjr"  r   excr0   methodmethzclass methodzstatic method	attributeattrr   _propz
type aliasr   r,   mod)r7  r"  r   r0   r;  r   r   r=  r   r   r,   zdict[str, ObjType]object_types)r7  r"  r   r0   r;  r   r   r=  r   r   r,   currentmodule	decoratordecoratormethodT)
fix_parens)
r"  r:  r8  r   constr>  r   r<  r@  r9  )objectsr  z dict[str, dict[str, tuple[Any]]]initial_datarJ   dict[str, ObjectEntry]c                 C     | j di S )NrG  r"  r$  rU   r?   r?   r@   rG       zPythonDomain.objectsFNrk   r4   r7   r6   r9   r8   r   r   r[   c                 C  sj   || j v r'| j | }|jr|du rn|jdu r|rdS tjtd||j|d 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   )rG  r9   loggerwarningr   r5   r3   rf   )rQ   rk   r7   r6   r9   r   otherr?   r?   r@   r     s   


zPythonDomain.note_objectdict[str, ModuleEntry]c                 C  rJ  )Nr  rK  rU   r?   r?   r@   r    rL  zPythonDomain.modulesrB   rC   rD   c                 C  s   t | jj||||| j|< dS )zQNote a python module for cross reference.

        .. versionadded:: 2.1
        N)rA   rf   r5   r  )rQ   rk   r6   rB   rC   rD   r?   r?   r@   r     s   
zPythonDomain.note_moduler5   c                 C  sX   t | j D ]\}}|j|kr| j|= qt | j D ]\}}|j|kr)| j|= qd S r   )r  rG  r#  r5   r  )rQ   r5   r   r9  rj   r@  r?   r?   r@   	clear_doc  s   

zPythonDomain.clear_docr  Set[str]	otherdatadict[str, Any]c                 C  sX   |d   D ]\}}|j|v r|| j|< q|d   D ]\}}|j|v r)|| j|< qd S )NrG  r  )r#  r5   rG  r  )rQ   r  rS  r   r9  rj   r@  r?   r?   r@   merge_domaindata  s   



zPythonDomain.merge_domaindatar   rf   r"   rj   	classname
str | None
searchmodeintlist[tuple[str, ObjectEntry]]c           
        s  | d}|s	g S g }d}|dkr|du rtj n|  dur|rA|rA|d | d | }	|	jv rAj|	 j v rA|	}|s|ra|d | jv raj|d |  j v ra|d | }nn|jv rqj| j v rq|}n^d|  fddjD }nM|jv r|}nE|dkrg S |r|d | jv r|d | }n-|r|d | jv r|d | }n|r|r|d | d | jv r|d | d | }|dur||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.
        ra   Nr   r   c                   s4   g | ]}| rj| j v r|j| fqS r?   )endswithrG  r7   ).0onameobjtypes
searchnamerQ   r?   r@   
<listcomp>  s    z)PythonDomain.find_obj.<locals>.<listcomp>r@  )removesuffixr  rA  objtypes_for_rolerG  r7   ri   )
rQ   rf   rj   rV  rk   r   rX  matchesnewnamer   r?   r^  r@   find_obj  sJ   


zPythonDomain.find_objfromdocnamebuilderr!   r   r  r   contnoder   Element | Nonec                 C  s6  | d}| d}	|drdnd}
| |||	|||
}|s-|dkr-| |||	|d|
}|s=|dkr=| |||	|d|
}|sAd S t|dkrld	d
 |D }t|dkrW|}ntjtd|ddd |D dd|d |d \}}|d dkr| ||||S t	|d}|r|j
}n|g}t|||d |d ||S )Nr\   r   r   r   r   r>  r<  r?  c                 S  s   g | ]	}|d  j s|qS )r   )r9   )r\  mr?   r?   r@   ra  -  s    z-PythonDomain.resolve_xref.<locals>.<listcomp>z5more than one target found for cross-reference %r: %sz, c                 s  s    | ]}|d  V  qdS )r   Nr?   )r\  matchr?   r?   r@   	<genexpr>2  s    z,PythonDomain.resolve_xref.<locals>.<genexpr>refpython)r   r.  r   r  r,   resolved)re   hasattrrf  r!  rM  rN  r   join_make_module_refnoder   childrenr   )rQ   rf   rg  rh  r   r   r  ri  rj   r   rX  rd  
canonicalsrk   r9  r   rt  r?   r?   r@   resolve_xref  s8   



zPythonDomain.resolve_xreflist[tuple[str, Element]]c                 C  s   | d}| d}g }	| ||||d d}
t|
dk}|
D ]G\}}|r(|jr(q|d dkr<|	d| ||||f qt|d}|rG|j}n|g}d| |d  }|	|t	|||d	 |d ||f q|	S )
Nr\   r   r   r  r,   zpy:modrp  zpy:r   )
re   rf  r!  r9   ri   rs  r   rt  role_for_objtyper   )rQ   rf   rg  rh  r   r  ri  rj   r   resultsrd  multiple_matchesrk   r9  r   rt  roler?   r?   r@   resolve_any_xrefC  s.   




zPythonDomain.resolve_any_xrefr   c                 C  sb   | j | }|}|jr|d|j 7 }|jr|td7 }|jr&|d|j d 7 }t|||j|j||S )Nz: z (deprecated)z ())r  rB   rD   r   rC   r   r5   r6   )rQ   rh  rg  rk   ri  r,   r   r?   r?   r@   rs  f  s   
z!PythonDomain._make_module_refnode-Iterator[tuple[str, str, str, str, str, int]]c                 c  s    | j  D ]\}}||d|j|jdfV  q| j D ]%\}}|jdkr@|jr4|||j|j|jdfV  q|||j|j|jdfV  qd S )Nr,   r   r   r   )r  r#  r5   r6   rG  r7   r9   )rQ   rj   r@  refnamer9  r?   r?   r@   get_objectst  s   
zPythonDomain.get_objectsc                 C  s@   | d}| d}| d}|d u rd S dtd |||gS )Nr\   r   	reftargetr   )re   rr  filter)rQ   r  rj   r   r   r?   r?   r@   get_full_qualified_name  s   


z$PythonDomain.get_full_qualified_name)rJ   rI  )FN)rk   r4   r7   r4   r6   r4   r9   r8   r   r   rJ   r[   )rJ   rP  )rk   r4   r6   r4   rB   r4   rC   r4   rD   r8   rJ   r[   )r5   r4   rJ   r[   )r  rR  rS  rT  rJ   r[   )r   )rf   r"   rj   r4   rV  r4   rk   r4   r   rW  rX  rY  rJ   rZ  )rf   r"   rg  r4   rh  r!   r   r4   r   r4   r  r   ri  r   rJ   rj  )rf   r"   rg  r4   rh  r!   r   r4   r  r   ri  r   rJ   rw  )
rh  r!   rg  r4   rk   r4   ri  r   rJ   r   )rJ   r~  )r  r   rJ   rW  )*r;   r<   r=   ru   rk   labelr   r   rA  r>   rE   r   r   r   r   r   r   r   r   r   r   r{   r   r	   r   rolesrH  r  indicesr   rG  r   r  r   rQ  rU  rf  rv  r|  rs  r  r  r?   r?   r?   r@   r5  o  s~   
 

	


7
/
#
r5  rf   r"   r  r   ri  rj  c                 C  sz   ddd}| ddkrd	S | d
dv r| ddkr|S | d
dv r;| d}ttt|d	r5|S ||r;|S d	S )z1Do not emit nitpicky warnings for built-in types.sr4   rJ   r8   c                 S  s$   |  dr| ddd } | tjv S )Nztyping.r   r   )r
  r%  typing__all__)r  r?   r?   r@   istyping  s   

z"builtin_resolver.<locals>.istyping	refdomainr  Nreftype)r   r9  r  r[   )r   r9  r:  )r  r4   rJ   r8   )re   inspectisclassgetattrbuiltins)r   rf   r  ri  r  r  r?   r?   r@   builtin_resolver  s   

r  r#   c                 C  sr   |  d | t | ddd | dd dttd h | ddd | dt | jdtd	d
 dddddS )Nzsphinx.directives!python_use_unqualified_type_namesFrf   $python_maximum_signature_line_length"python_display_short_literal_typeszobject-description-transformzmissing-referencei  )priorityr2   r  T)versionenv_versionparallel_read_safeparallel_write_safe)	setup_extension
add_domainr5  add_config_valuerY  r   connectr  r  )r   r?   r?   r@   setup  s   

r  )
r   r    r   r4   r7   r4   r   r   rJ   r[   )
r   r    rf   r"   r  r   ri  r   rJ   rj  )r   r    rJ   r#   )Zru   
__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   docutils.nodesr   r   sphinx.addnodesr   r   sphinx.applicationr    sphinx.buildersr!   sphinx.environmentr"   sphinx.util.typingr#   r$   r%   r&   r'   r(   r)   r*   r+   	getLoggerr;   rM  pairindextypesr3   rA   rE   r{   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r5  r  r  r?   r?   r?   r@   <module>   sv    
&%6-3'=
H  
