
    FeA              	      L   d Z ddlmZ ddlZddl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mZmZ ddlmZ dd	lmZ erddlZ	 dd
l	mZ ede
diZddZeej4                  ej6                  f   Z ed      Zeege f   Z!eeeee"ee#eef   ee   ge$e%ejL                     e%ejN                     f   f   Z(e#eeegef   f   Z)eejL                  gef   Z*e$eeeef   Z+e#ee#ee+f   f   Z,	 d	 	 	 	 	 	 	 ddZ-ddZ.dddZ/	 d	 	 	 	 	 ddZ0ddZ1de0dfiZ2d Z3y# e$ r dZY w xY w)zThe composite types for Sphinx.    )annotationsN)Sequence)Struct)TracebackType)TYPE_CHECKINGAnyCallable
ForwardRefTypeVarUnion)nodes)Inliner)	UnionTypezstruct.Structztypes.TracebackTypec                2    	 | t         v S # t        $ r Y yw xY w)z)Check *obj* is an invalid built-in class.F)INVALID_BUILTIN_CLASSES	TypeError)objs    4/usr/lib/python3/dist-packages/sphinx/util/typing.pyis_invalid_builtin_classr      s%    --- s   
 	c                    ddl m} 	 t        j                  | ||      S # t        $ r  || di       cY S t
        $ r  || di       cY S t        $ r  || di       cY S t        $ r i cY S w xY 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__annotations__)sphinx.util.inspectr   typingget_type_hints	NameErrorAttributeErrorr   KeyError)r   globalnslocalnsr   s       r   r   r   C   s}     1$$S(G<< 8C!2B77 8C!2B77 8C!2B77 	s     A)A)A)
A)(A)c                J    t        | dd      }|dk(  xr t        | t              S )z&Check *typ* is system defined TypeVar.
__module__ r   )getattr
isinstancer   )typmodnames     r   is_system_TypeVarr(   ^   s'    c<,Gh;:c7#;;    c                   ddl m}m} ddlm} dk(  rd}nd}	 | | t
        u ry| t        u ry	t        | t              r| S  ||       rd
| | j                   dS  ||       rd
| | j                   d| j                   dS t        |       rd
| t        |     dS |j                  |       rDt        j                  dd dk\  rd
| | j                   d| j                   dS d| j                  z  S t         rt        | t               rst#        | j$                        dkD  r7d| j$                  v r)dj'                  fd| j$                  D              }d|z  S dj'                  fd| j$                  D              S | j                  dv r{t)        | d      r`| j$                  sd
| j                   d| j$                  dS dj'                  fd| j$                  D              }d
| j                   d| dS d| j                  z  S |j+                  |       r| j                  dk(  r| j,                  t.        u rt#        | j$                        dkD  ru| j$                  d   t
        u r`t#        | j$                        dkD  r,dj'                  fd| j$                  dd D              }d|z  S dt1        | j$                  d         z  S dj'                  fd | j$                  D              }d!|z  S |j+                  |       rt        | j,                  t2        j4                        rt1        | j,                        }nht7        | d"d      rE| j8                  }	| j                  dk(  rd#| j                   d|	 d}n,d
| | j                   d|	 d}nt1        | j,                        }t7        | d$d      }
t)        | d      s	 |S t;        d% | j$                  D              r	 |S | j                  dk(  r[| j8                  d&k(  rLdj'                  fd'| j$                  dd D              }|d(| d)t1        | j$                  d          dz  }|S | j                  dk(  rt7        |
d"d      d*k(  rug }| j$                  D ]J  }|j=                  |      r|j?                  tA        |+             1|j?                  tC        |             L |d,dj'                  |      z  z  }~|S | j$                  r*|d,dj'                  fd-| j$                  D              z  z  }|S t        | t2        j4                        rd.| j                   d| j8                   dS t        j                  dd d/k\  r/| t2        jD                  u rd.| j                   d| j                   dS t)        | d0      rK| j                  dk(  rd#| j                   d| jF                   dS d
| | j                   d| jF                   dS t        | tH              rd| jJ                  z  S | j                  dk(  rd.| j                   d| j                   dS d1| | j                   d| j                   dS # tL        tN        f$ r |jQ                  |       cY S w xY w)2aw  Convert python class 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)inspectsmart~r#   Nz:py:obj:`None`...z:py:class:``.      
   z:py:class:`%s`    | c              3  <   K   | ]  }|st        |        y wNrestify.0amodes     r   	<genexpr>zrestify.<locals>.<genexpr>   s     !NqA'!T"2!Ns   zOptional[%s]c              3  6   K   | ]  }t        |        y wr;   r<   r>   s     r   rB   zrestify.<locals>.<genexpr>   s     !Iq'!T"2!I   )__builtin__builtins__args__z`\ [], c              3  6   K   | ]  }t        |        y wr;   r<   r?   argrA   s     r   rB   zrestify.<locals>.<genexpr>   s     -YSgc4.@-YrD   r   c              3  6   K   | ]  }t        |        y wr;   r<   r>   s     r   rB   zrestify.<locals>.<genexpr>   s"      %A)* &-Q%5 %ArD   z8:py:obj:`~typing.Optional`\ [:obj:`~typing.Union`\ [%s]]z :py:obj:`~typing.Optional`\ [%s]c              3  6   K   | ]  }t        |        y wr;   r<   r>   s     r   rB   zrestify.<locals>.<genexpr>   s       !8%& ")D!1 !8rD   z:py:obj:`~typing.Union`\ [%s]_namez:py:class:`~
__origin__c              3  2   K   | ]  }t        |        y wr;   r(   r?   r@   s     r   rB   zrestify.<locals>.<genexpr>   s     @a&q)@   r	   c              3  6   K   | ]  }t        |        y wr;   r<   r>   s     r   rB   zrestify.<locals>.<genexpr>   s      MaD!1 MrD   z\ [[], Literal)rA   z\ [%s]c              3  6   K   | ]  }t        |        y wr;   r<   r>   s     r   rB   zrestify.<locals>.<genexpr>   s     -U1ga.>-UrD   z
:py:obj:`~)r6      __qualname__z	:py:obj:`))sphinx.ext.autodoc.mockr,   r-   sphinx.utilr.   NoneTypeEllipsisr%   str__name__r"   r   r   	isNewTypesysversion_infor   lenrG   joinhasattrisgenericaliasrQ   r   r=   r   _SpecialFormr$   rP   allisenumattributeappend_format_literal_enum_argreprr   r[   r
   __forward_arg__r   r   object_description)clsrA   r,   r-   r.   	modprefixargsconcatenated_argstextcls_nameoriginliteral_argsr@   s    `           r   r=   r=   d   s!    =#w		h/;#/#H_S!J# CLL>;;C[ CNN+;1S\\N!LL%c* ,CC,H+IKKs##w.$YK/?qaPP'#,,66:c953<< 1$)=zz!NCLL!NN%,,zz!ICLL!III^^::sJ'||)#,,tCLL;K1MM$(II-YCLL-Y$Y!%cll^48I7J!LL'#,,66$$S)..H,..E)CLL!A%R(H4s||$q(99 %A.1ll3B.?%A ADWZ^^^>QB/ / / yy !8*-,,!8 87$>>##C(#..&*=*=>s~~t4gt,99>>X-)#..)98*AFD(CNN3C1XJaPDs~~t4S,5F3
+( K' @3<<@@" K! ..H,ii:-yy M3<<;L MM4vSb1A4)H(IKK K 8+0NR[0[! 5A..q1$++,DQT,RS$++DG4	5
 	DIIl$;;;  K 	DII-U-U$UUUKV001/q1==bq!W,

1B/qa@@S.)~~)%cnn%5Qs7G7G6HJJ$YK/?qAQAQ@RRSTTZ(#c&9&999 ~~)#CNN#31S\\N!DD"9+cnn-=Qs||nANNI& /))#../s   
Y Y Y Y &Y Y AY "Y 1A$Y #Y :AY =6Y 4Y B"Y &Y (Y +CY <Y A)Y BY 7Y 6Y AY 7Y Y $Y +Y /Y  Y10Y1c                  ddl m}m} ddlm} dvrdd}t        |      dk(  rd}nd	}t        | d
d	      }t        | dd	      }t        | dd	      }	|dk(  }
t        | t              r)| j                  d      r| j                  d      r| dd S | S t        | t              r|
rdv r|	S || d|	 z   S  ||       r"t        j                  dd dk\  r
|| d|	 z   S |	S | st        |       S | t        u ry ||       r||	z   S  ||       r
|| d|	 z   S t!        |       r|t"        |    z   S t        |       j                  d      rnP|dk(  rB|r@t        | dd      x}/|st        |       S dj%                  fd|D              }| d| dS |S | t&        u ry| d}t        | dd      }|s|
r|sdk(  rd|z   }|
r
dk(  rd	}nd	}|
rC|r|}nt        | d d	      }|r|}nx|r|}nst)        | j*                  d      j-                  d!d	      }nL|r|}nGt/        | d"      rt)        | j*                        }n$t0        rt        | t0              rd#}nt        |       S t        | dd      }|rt        |t2        t4        f      s	 ||z   S |d$v rd%j%                  fd&|D              S |d'k(  r7dj%                  fd(|dd D              }t)        |d         }| d)| d*| dS |d+k(  r/dd,lm fd-}dj%                  t9        ||            }| d.| dS t        |       j                  d      rt)        |d         S t;        d/ |D              r||z   S dj%                  fd0|D              }| | d| dS ||z   S )1a  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+   )rb   >   fully-qualifiedr/   fully-qualified-except-typingzZ'mode' must be one of 'fully-qualified-except-typing', 'fully-qualified', or 'smart'; got r3   r/   r0   r#   r[   r"   ra   r   'r8   rM   >   r/   r{   Nr4   r5   Noneztyping.AnnotatedrF   rG   rI   c              3  6   K   | ]  }t        |        y wr;   stringify_annotationrK   s     r   rB   z'stringify_annotation.<locals>.<genexpr>(  s     )Zc*>sD*I)ZrD   [rH   r1   ro   r{   rP   ztyping.rQ   types.UnionType>   r   Optionalr   r9   c              3  6   K   | ]  }t        |        y wr;   r   r>   s     r   rB   z'stringify_annotation.<locals>.<genexpr>Y  s     U21d;UrD   r	   c              3  6   K   | ]  }t        |        y wr;   r   r>   s     r   rB   z'stringify_annotation.<locals>.<genexpr>[  s     Yq1!T:YrD   z
Callable[[rW   rX   )rk   c                     |       rT| j                   }dk(  r|j                   d| j                   S |j                   d|j                   d| j                   S t	        |       S )Nr/   r3   )	__class__r[   namer"   rn   )rL   enumclsrk   rA   s     r   format_literal_argz0stringify_annotation.<locals>.format_literal_arga  sl    "3'!mmGw")"6"6!7q
CC &00173G3G2H#((TTCy r)   zLiteral[c              3  2   K   | ]  }t        |        y wr;   rS   rT   s     r   rB   z'stringify_annotation.<locals>.<genexpr>q  s     ?!"1%?rU   c              3  6   K   | ]  }t        |        y wr;   r   r>   s     r   rB   z'stringify_annotation.<locals>.<genexpr>u  s     Tq1!T:TrD   )r\   r,   r-   r   rb   
ValueErrorr$   r%   r`   
startswithendswithr   rc   rd   rn   r^   r   r   rf   r_   r   rQ   replacerg   r   listtuplerk   maprj   )
annotationrA   r,   r-   rb   msgmodule_prefixannotation_qualnameannotation_moduleannotation_nameannotation_module_is_typingrs   rt   annotation_forward_argqualnamerP   annotation_argsreturnsr   rk   s    `                 @r   r   r      s4   $ =-PP559HA?ow!*nbA
L"=j*b9O"3x"?*c"  %**=*=c*Ba##	J	(&43]+]"" &7%8/9J#KKK	:	BQ7* &7%8/9J#KKK""J	x		j	!..	
	"3!4Ao5FGGG	!*	-6zBBB	Z	#	#$6	7	j	(-@J
D99DFJ'' $		)ZUY)Z Z)*!,=+>a@@&&	x	()+M$Z1BDI:CY7?-/M&43R+RM"!-HJ4E $./))+J')R(  
&	\	*'
(=(=tD	z*i8$ Jj*d;O/D%=9B 8##A AA::U_UUU#99YOTWUWDXYYD*?2+>EG#_JtfCyBB";
! 99S!3_EFD#_HTF!44_''(:;'(:DAA??? 8++99TOTTD#_XJavQ778##r)   c                  | j                   }|dk(  s|j                  dk(  r*d|j                   d|j                   d| j                   dS d|j                   d|j                   d| j                   dS )Nr/   r   z:py:attr:`~r3   r2   z
:py:attr:`)r   r"   r[   r   )rL   rA   enum_clss      r   rm   rm   {  s{    }}Hw(--9X00183H3H2I388*TUVVH//0(2G2G1H#((STUUr)   	stringifyz'sphinx.util.typing.stringify_annotationc                    | t         vrdt        d| }t        |      ddlm} t         |    \  }} |t        | |d       |S )Nzmodule z has no attribute r   )_deprecation_warning)   r   )remove)_DEPRECATED_OBJECTSra   r   sphinx.deprecationr   )r   r   r   deprecated_objectcanonical_names        r   __getattr__r     sP    &&|#5dX>S!!7(;D(A%~4Gr)   )r   r   returnbool)NN)r   r   r   dict[str, Any] | Noner    r   r   zdict[str, Any])r&   r   r   r   )r{   )rq   ztype | NonerA   r`   r   r`   )rA   r`   r   r   r   r`   )rL   z	enum.EnumrA   r`   r   r`   )4__doc__
__future__r   rc   r   collections.abcr   structr   typesr   r   r   r	   r
   r   r   docutilsr   docutils.parsers.rst.statesr   enumr   ImportErrorr   r   TextTextElementTextlikeNodetyper^   r`   r   PathMatcherintdictr   r   Nodesystem_messageRoleFunction
OptionSpecTitleGetterInventoryItem	Inventoryr   r(   r=   r   rm   r   r    r)   r   <module>r      s   % " 
  $   K K  / O(  UZZ!2!223 : ud{# c3Wd38nhsmTd5::.U5I5I0JJKL M #xs
++,
 

|S() 	 d3-../	 X\	-?T6<{/B 0V$ V$V$ 		V$rV &(QR 
	k  Is   D D#"D#