o
    Ni]                     @  s  U d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	 ddl
mZmZm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 ddlmZ dd	lmZ dd
lmZ erd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& e d Z'de(d< e d Z)de(d< e*e+Z,i ededededej-dej.dej/dej0dej1dej2dej3dej4dej5d ej6d!ej7d"ej8d#ej9d$ej:d%ej;d&ej<d'ej=d(ej>d)ej?d*ej@d+iZAd,e(d-< djd2d3ZBejCejDB ZEde(d4< eeFgeGf ZHde(d5< erG d6d7 d7e!ZIn!eeFeFeFeJeeKeFef e	eF geLeMejN eMejO f f ZIde(d7< eKeFeeFgef f ZPde(d8< eejNgeFf ZQde(d9< erldd:lm?Z? dd;l#mRZR ed<eFeSd=d>ZTG d?d@ d@e!eT ZUeLeFeFeFeFf ZVde(dA< eKeFeKeFeVf f ZWde(dB< G dCdD dDedEdFZXeree&geXf ZYde(dG< 			EdkdldMdNZZdmdPdQZ[dndSdTZ\djdUdVZ]dodpd[d\Z^dqd^d_Z_	WdodrdadbZ`dqdcddZai Zbdee(df< dsdhdiZcdS )tzThe composite types for Sphinx.    )annotationsN)CallableSequence)Context
ContextVarToken)Struct)TYPE_CHECKING	AnnotatedAny
ForwardRefNewType	TypedDictTypeVarUnion)nodes)Inliner)logging)Mapping)FinalLiteralProtocol	TypeAlias)TypeIs)Sphinx)fully-qualified-except-typingsmartr   _RestifyMode)r   fully-qualifiedr   _StringifyModezcontextvars.Contextzcontextvars.ContextVarzcontextvars.Tokenzstruct.Structztypes.AsyncGeneratorTypeztypes.BuiltinFunctionTypeztypes.BuiltinMethodTypeztypes.CellTypeztypes.ClassMethodDescriptorTypeztypes.CodeTypeztypes.CoroutineTypeztypes.FrameTypeztypes.FunctionTypeztypes.GeneratorTypeztypes.GetSetDescriptorTypeztypes.LambdaTypeztypes.MappingProxyTypeztypes.MemberDescriptorTypeztypes.MethodDescriptorTypeztypes.MethodTypeztypes.MethodWrapperTypeztypes.ModuleTypeztypes.TracebackTypeztypes.WrapperDescriptorTypezFinal[Mapping[object, str]]_INVALID_BUILTIN_CLASSESobjr   returnboolc                 C  s    z| t v W S  ty   Y dS w )z)Check *obj* is an invalid built-in class.F)r    	TypeErrorr!    r&   F/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/util/typing.pyis_invalid_builtin_classO   s
   
r(   TextlikeNodePathMatcherc                   @  s   e Zd Z		ddddZdS )RoleFunctionNr&   optionsdict[str, Any] | NonecontentSequence[str]namestrrawtexttextlinenointinlinerr   r"   3tuple[list[nodes.Node], list[nodes.system_message]]c                C     d S Nr&   )selfr0   r2   r3   r4   r6   r,   r.   r&   r&   r'   __call__a   s   
zRoleFunction.__call__)Nr&   )r,   r-   r.   r/   r0   r1   r2   r1   r3   r1   r4   r5   r6   r   r"   r7   )__name__
__module____qualname__r;   r&   r&   r&   r'   r+   `   s    	r+   
OptionSpecTitleGetter)TracebackType)Self_T_coT)	covariantc                   @  s,   e Zd ZddddZdd	d
ZdddZdS )_ReadableStream.sizer5   r"   rC   c                 C  r8   r9   r&   )r:   rF   r&   r&   r'   read       z_ReadableStream.readrB   c                 C  r8   r9   r&   )r:   r&   r&   r'   	__enter__   rH   z_ReadableStream.__enter__exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | NoneNonec                 C  r8   r9   r&   )r:   rJ   rL   rN   r&   r&   r'   __exit__   s   z_ReadableStream.__exit__N).)rF   r5   r"   rC   )r"   rB   )rJ   rK   rL   rM   rN   rO   r"   rP   )r<   r=   r>   rG   rI   rQ   r&   r&   r&   r'   rE      s    
rE   InventoryItem	Inventoryc                   @  s8   e Zd ZU dZded< 	 ded< 	 ded< 	 ded< d	S )
ExtensionMetadataz`The metadata returned by an extension's ``setup()`` function.

    See :ref:`ext-metadata`.
    r1   versionr5   env_versionr#   parallel_read_safeparallel_write_safeN)r<   r=   r>   __doc____annotations__r&   r&   r&   r'   rT      s   
 rT   F)total_ExtensionSetupFuncglobalnsr-   localnsinclude_extrasdict[str, Any]c                 C  s   ddl m} z
tj| |||dW S  ty   || di  Y S  ty-   || di  Y S  ty;   || di  Y S  tyE   i  Y S w )zReturn a dictionary containing type hints for a function, method, module or class
    object.

    This is a simple wrapper of `typing.get_type_hints()` that does not raise an error on
    runtime.
    r   )safe_getattr)r_   rZ   )sphinx.util.inspectra   typingget_type_hints	NameErrorAttributeErrorr$   KeyError)r!   r]   r^   r_   ra   r&   r&   r'   rd      s   rd   typc                 C  s   t | dd}|dkot| tS )z&Check *typ* is system defined TypeVar.r=    rc   )getattr
isinstancer   )rh   modnamer&   r&   r'   is_system_TypeVar   s   rm   TypeIs[Annotated[Any, ...]]c                 C  s   t | tu pt| dS )z$Check if *obj* is an annotated type.ztyping.Annotated)rc   
get_originr
   r1   
startswithr%   r&   r&   r'   _is_annotated_form   s   rq   c                 C  sH   t jdkrddlm} t| |u S t| }t|dddko#|jdkS )z<Check if the object is :class:`typing.Unpack` or equivalent.      r   )Unpackr=   Ntyping_extensionsru   )sysversion_inforc   ru   ro   rj   r<   )r!   ru   originr&   r&   r'   _is_unpack_form   s   

rz   r   clsmoder1   c              
     sl  ddl m}m} ddlm}m} ddh}|vr.dttt	|}d| d}t
|| d	u s7| tjkr9d
S | tu r?dS t| trF| S t| dddk}	dksT|	rVdnd}
z;|| rhd|
 | j dW S || rzd|
 | j d| j dW S t| rd|
 t|   dW S t| rt| jd }g }| jD ]= t tr|t  qt rd fddt D }|tt  d| d q|t  qd|}tjd	d dkrd| d| dW S d|
 | j d| j d| d| d
W S t| t rd|
 | j d| j dW S t| tj!r.dfdd| jD W S | jdv rjt"| d rb| jsJd| j d| jdW S dfd!d| jD }d| j d| dW S d| j dW S || r|	r| j#t$u rdfd"d| jD W S || r6t| j#t%j&rt| j#}n| jrd|
 | j d| j d}nt| j#}t| d d#}|s|W S t'tt(|r|W S |	r| jd$ks| jd%kr| jd$krdfd&d|d	d' D }t|d' }| d(| d)| dW S |	r!| j#jd*kr!dfd+d| jD }| d,| dW S dfd-d|D }| d,| dW S t| t%j&rId.| j d| j dW S tjd	d dkre| t%j)u red.| j d| j dW S t"| d/ryd|
 | j d| j* dW S t| t+rd| j, dW S d0|
 | j d| j dW S  t-t.fy } zt/0d1| | || W  Y d	}~S d	}~ww )2a}  Convert a type-like object to a reST reference.

    :param mode: Specify a method how annotations will be stringified.

                 'fully-qualified-except-typing'
                     Show the module name and qualified name of the annotation except
                     the "typing" module.
                 'smart'
                     Show the name of the annotation.
    r   ismockismockmodule)isgenericaliasobject_descriptionr   r   , mode must be one of ; got Nz:py:obj:`None`...r=   ri   rc   ~z:py:class:``.c                   0   g | ]}|j r|j d tt |j qS )z=\ )reprr0   restifyrj   .0fmr|   r&   r'   
<listcomp>$      zrestify.<locals>.<listcomp>z\ ()   rr   z :py:class:`~typing.Annotated`\ []z`\ [ | c                 3      | ]}t | V  qd S r9   r   r   ar|   r&   r'   	<genexpr>9      zrestify.<locals>.<genexpr>)__builtin__builtins__args__c                 3  r   r9   r   r   argr   r&   r'   r   ?      

c                 3  r   r9   r   r   r   r&   r'   r   F  r   r&   r   zcollections.abcc                 3  r   r9   r   r   r   r&   r'   r   ]  r   z\ [[], r   c                 3      | ]	}t | d V  qdS r   N)_format_literal_arg_restifyr   r   r&   r'   r   b      
z\ [c                 3  r   r9   r   r   r   r&   r'   r   h  r   z
:py:obj:`~r>   z	:py:obj:`z#restify on %r in mode %r failed: %r)1sphinx.ext.autodoc.mockr~   r   rb   r   r   joinmapr   sorted
ValueErrortypesNoneTypeEllipsisrk   r1   rj   r<   r=   r(   r    rq   r   r   __metadata__typeappenddataclassesis_dataclassfieldsrw   rx   r   	UnionTypehasattr
__origin__r   rc   _SpecialFormallrm   r   r>   r   __forward_arg__rf   r$   loggerdebug)r{   r|   r~   r   r   r   valid_modesvalidmsgcls_module_is_typingmodule_prefixargs	meta_argsd_fieldsmetaconcatenated_argsr3   r   returnsexcr&   r   r'   r      s   




"

  r   r   c               C  sp   ddl m} || r4| j}|dks|jdkr%d|j d|j d| j dS d|j d|j d| j dS t| S )	Nr   isenumattributer   rc   z:py:attr:`~r   r   z
:py:attr:`rb   r   	__class__r=   r>   r0   r   r   r|   r   enum_clsr&   r&   r'   r   {  s   r   
annotationc                  sT  ddl m}m} h d}|vr&dttt|}d| d}t|| du s/| tj	kr1dS | t
u r7d	S t| trN| d
rL| d
rL| dd S | S | sTt| S dkrZdnd}t| dd}t| dd}	t| dd}
|	dk}t| trt| s|rdv r|
S ||	 d|
  S t| tr||	 d|
  S || r||
 S || r||	 d|
  S t| r|t|   S t| rn-|	dkr|rt| dd}|du r|S |st| S dfdd|D }| d| dS 	 |	 d}t| dd}|s|r|sdkrd| }|rdkrd}nt| r'|	dkr'dkr$dnd}nd}|rI|r2|}n8|
r8|
}n2|r>|}n,t| jddd}n!|rO|}nt| d r\t| j}nt| tjrfd!}nt| S t| dd"}|rt|ttB r|d#v rtd$d |D rtj| j }dfd%d|D }| d&| dS |d'v rd(fd)d|D S |d*krdfd+d|dd D }t|d }| d,| d-| dS |d.krdfd/d|D }| d&| dS t| rt|d }g }| j!D ]B t t"r|#t  qt$% r@d fd0d1t$& D }|#tt"  d2| d3 q|#t  qd|}t'j(dd4 d5krwdkrfd6| d| dS |dd}| d6| d| dS | d6| d| dS td7d |D r|| S dfd8d|D }| | d| dS || S )9a  Stringify type annotation object.

    :param annotation: The annotation to stringified.
    :param mode: Specify a method how annotations will be stringified.

                 'fully-qualified-except-typing'
                     Show the module name and qualified name of the annotation except
                     the "typing" module.
                 'smart'
                     Show the name of the annotation.
                 'fully-qualified'
                     Show the module name and qualified name of the annotation.
    r   r}   >   r   r   r   r   r   r   NrP   r   '   r   r   r   ri   r>   r=   r<   rc   >   r   r   r   r   r   c                 3  r   r9   stringify_annotationr   r   r&   r'   r     r   z'stringify_annotation.<locals>.<genexpr>[r   r   r   rv   ztyping.r   types.UnionTyper&   >   r   r   c                 s  s"    | ]}t |d dtju V  qdS )r   .N)rj   rc   r   r   r&   r&   r'   r     s     c                 3  r   r   _format_literal_arg_stringifyr   r   r&   r'   r     r   zLiteral[>   r   Optionalr   r   c                 3  r   r9   r   r   r   r&   r'   r     r   r   c                 3  r   r9   r   r   r   r&   r'   r     r   z
Callable[[r   r   c                 3  r   r   r   r   r   r&   r'   r     r   c                   r   )=)r   r0   r   rj   r   r   r&   r'   r   (  r   z(stringify_annotation.<locals>.<listcomp>(r   r   rr   z
Annotated[c                 s  s    | ]}t |V  qd S r9   )rm   r   r&   r&   r'   r   9  s    c                 3  r   r9   r   r   r   r&   r'   r   =  r   ))r   r~   r   r   r   r   r   r   r   r   r   rk   r1   rp   endswithrj   r   rz   r   r(   r    rq   r   r   replacer   r   listtupler   rc   r   r   r   r   r   r   r   r   rw   rx   )r   r|   r~   r   r   r   r   r   annotation_qualnameannotation_moduleannotation_nameannotation_module_is_typingr   r   annotation_forward_argqualnameannotation_argsflattened_argsr   r   r   r   r&   r   r'   r     s   













r   c               C  s`   ddl m} || r,| j}|dks|jdkr|j d| j S |j d|j d| j S t| S )Nr   r   r   rc   r   r   r   r&   r&   r'   r   C  s   r   z+dict[str, tuple[Any, str, tuple[int, int]]]_DEPRECATED_OBJECTSr0   c                 C  sN   | t vrdtd| }t|ddlm} t |  \}}}|t| ||d |S )Nzmodule z has no attribute r   )_deprecation_warning)remove)r   r<   rf   sphinx.deprecationr   )r0   r   r   deprecated_objectcanonical_namer   r&   r&   r'   __getattr__U  s   r   )r!   r   r"   r#   )NNF)
r!   r   r]   r-   r^   r-   r_   r#   r"   r`   )rh   r   r"   r#   )r!   r   r"   rn   )r   )r{   r   r|   r   r"   r1   )r   r   r|   r1   r"   r1   )r|   r   r   r   r"   r1   )r0   r1   r"   r   )drY   
__future__r   r   rw   r   rc   collections.abcr   r   contextvarsr   r   r   structr   r	   r
   r   r   r   r   r   r   docutilsr   docutils.parsers.rst.statesr   sphinx.utilr   r   r   r   r   r   rv   r   sphinx.applicationr   r   rZ   r   	getLoggerr<   r   AsyncGeneratorTypeBuiltinFunctionTypeBuiltinMethodTypeCellTypeClassMethodDescriptorTypeCodeTypeCoroutineType	FrameTypeFunctionTypeGeneratorTypeGetSetDescriptorType
LambdaTypeMappingProxyTypeMemberDescriptorTypeMethodDescriptorType
MethodTypeMethodWrapperType
ModuleTyperA   WrapperDescriptorTyper    r(   TextTextElementr)   r1   r#   r*   r+   r5   dictr   r   Nodesystem_messager?   r@   rB   bytesrC   rE   rR   rS   rT   r\   rd   rm   rq   rz   r   r   r   r   r   r   r&   r&   r&   r'   <module>   s    (
	

	
 

 
 
: