
    Feo1                    l   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ZddlZddlm	Z	m
Z
mZmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZ e	rdd	lmZ dd
lmZ  ej@                  e!      Z"ddZ#ddZ$dddZ%dddZ&dedf	 	 	 	 	 ddZ' G d de      Z(	 d	 	 	 	 	 	 	 	 	 ddZ)	 d	 	 	 ddZ*y) zImporter utilities for autodoc    )annotationsN)TYPE_CHECKINGAnyCallable
NamedTuple)ismock
undecorate)ModuleAnalyzerPycodeError)logging)getannotationsgetmrogetslotsisclassisenumclasssafe_getattr)
ModuleType)ObjectMemberc                    	 t        |       r3|j                  d      r"|j                  d      sd| j                   | S |S # t        $ r Y |S w xY w)zMangle the given name.___)r   
startswithendswith__name__AttributeError)subjectnames     =/usr/lib/python3/dist-packages/sphinx/ext/autodoc/importer.pymangler   !   s]    7 5dmmD>Qw''(// K  Ks   =A 	AAc                ,   	 t        |       rw|j                  d      sfd| j                  z  }|j                  |      r|j	                  |dd      S | j
                  D ]$  }d|j                  z  }|j                  |      s$ y |S # t        $ r Y |S w xY w)zUnmangle the given name.r   z_%s__   N)r   r   r   r   replace__mro__r   )r   r   prefixclss       r   unmangler&   ,   s    7DMM$$7w///Fv&||FD!44"?? $C$s||3Fv.#	$ K  Ks$   AB /B B B 	BBFc                    	 t        j                  |       5  t        j                  |       cddd       S # 1 sw Y   yxY w# t        $ r$}t        |t        j                               |d}~ww xY w)zR
    Call importlib.import_module(modname), convert exceptions to ImportError
    N)r   skip_warningiserror	importlibimport_moduleBaseExceptionImportError	traceback
format_exc)modnamewarningiserrorexcs      r   r*   r*   ?   sg    @((^);< 	4**73	4 	4 	4 @ #y3356C?@0   A 7	A A A  A 	A0A++A0c                    	 t        j                  |       5  t        j                  |       cddd       S # 1 sw Y   yxY w# t        $ r$}t        |t        j                               |d}~ww xY w)zJ
    Call importlib.reload(module), convert exceptions to ImportError
    N)r   r(   r)   reloadr+   r,   r-   r.   )moduler0   r1   s      r   _reload_moduler6   L   sg    @((^);< 	,##F+	, 	, 	, @ #y3356C?@r2    c                ~   |r't         j                  d| dj                  |             nt         j                  d|        	 d }d }t        |      }|	 t	        t
        j                        }t        | |      }t        j                  j                  d      rt
        j                  D cg c]	  }||vs| }	}	 dt        _        t        j                  t        t               5  |	D ]  }t#        t
        j                  |            	 d d d        dt        _        t
        j                  |    }t         j                  d| |       ||}d }d }|D ]H  }|}t         j                  d|       t)        ||      } |||      }	 t         j                  d|       |}J ||||gS c c}w # 1 sw Y   xY w# dt        _        w xY w# t        $ rO}
t         j                  d	|        |
}d| v r(| j%                  dd
      \  } }|j'                  d|       n Y d }
~
d }
~
ww xY w# t*        $ r t         j                  d|f       Y w xY w# t,        t        f$ r}
t/        |
t,              rr|}
|rd|ddj                  |      d| }nd| d| }t/        |
t              r`|
j0                  \  }}t/        |t2              r|dz  }nUt/        |t              r"|j0                  r|d|j0                  d   z  z  }n#|d|z  z  }n|dt5        j6                         z  z  }t         j                  |       t        |      |
d }
~
ww xY w)Nz[autodoc] from %s import %s.z[autodoc] import %s)r0   SPHINX_AUTODOC_RELOAD_MODULESTFz[autodoc] import %s => %rz[autodoc] import %s => failedr!   r   z[autodoc] getattr(_, %r)z[autodoc] => %rzautodoc: failed to import  z from module zJ; the module executes module level statement and it might call sys.exit().z(; the following exception was raised:
%s)loggerdebugjoinlist	frozensetsysmodulesr*   osenvirongettypingr   
contextlibsuppressr,   KeyErrorr6   rsplitinsertr   	TypeErrorr   
isinstanceargs
SystemExitr-   r.   )r/   objpathobjtype
attrgetterr0   r5   exc_on_importingoriginal_module_namesmnew_modulesr1   r   objparentobject_nameattrnamemangled_nameerrmsgreal_exctraceback_msgs                       r   import_objectr_   Y   s    2GSXXg=NO*G4K+w-n(1#++(>%&w~N::>>"AB.1kk"\QF[=[1"\K"\5/3,'00hG ?%0 ? .s{{1~ >?? 05, [[1F8'6J! n6  	#HFLL3X>!#x0LS,/C8.4 #K	# S11O #]
? ? 05,  <gF#& '>$+NN3$:MGTNN1d+ ,*  8 .78 K( +c>*/?"C 17<F 2'!G;GFc;' '*hh#Hm(J/ ; <Hk2x}}EVWHXXXEUUAIDXDXDZZZFV&!s*5+s   I AG *	F"4F"8G ;)F3 $$F'	F3 5G I 	8I H	I "G 'F0,F3 3G  G 	HAHI HI  I>I  II L<C$L77L<c                  ,    e Zd ZU ded<   ded<   ded<   y)	Attributestrr   booldirectly_definedr   valueN)r   
__module____qualname____annotations__     r   ra   ra      s    
IJrj   ra   c                   ddl m}  || di       }i }t        |       rx| j                  j	                         D ]  \  }}||vst        |d|      ||<    | j                  d   }	|D ]-  }||	j                  vst        | |      }t        |d|      ||<   / 	 t        |       }
|
rddl m
} |
D ]  }t        |d|      ||<    t        |       D ]2  }	  || |      }||v }t        | |      }|r||vrt        |||      ||<   4 t!        t#        |             D ]<  \  }}t%        |      D ])  }t        ||      }|s||vst        ||dk(  |      ||<   + > |rDdj'                  |      }|j)                         D ]   \  }}||k(  s||vst        |d|      ||<   " |S # t        t        f$ r Y w xY w# t        $ r Y w xY w)z,Get members and attributes of target object.r   )INSTANCEATTR__dict__Tr!   	SLOTSATTRr9   )sphinx.ext.autodocrl   r   __members__itemsra   r#   rm   r   r   ro   rL   
ValueErrordirr&   r   	enumerater   r   r>   find_attr_docs)r   rP   rR   analyzerrl   obj_dictmembersr   re   
superclasssubject___slots__ro   rd   ir%   	namespacenss                    r   get_object_membersr      s'    0 ':r2H$&G 7"..446 	=KD%7" )$e <	= __Q'
 	=D:...$Wd3 )$e <	=$W-4) A )$i @A G 	w-E#x/GT*DG+ )$0@% H F7O, F3"3' 	FDC&DG+ )$Q E	FF HHW%	"113 	DJRB4w#6 )$l C	D N9 z"   		s$   *F /F1F.-F.1	F=<F=c           
        ddl m}m}  || di       }i }t        |       rt| j                  j                         D ]  \  }}	||vs |||	|       ||<    | j                  d   }
|D ]+  }||
j                  vst        | |      }	 |||	|       ||<   - 	 t        |       }|r-ddl m
} |j                         D ]  \  }} |||| |      ||<    t        |       D ]S  }	  || |      }	t        |	      rt        |	      }	t!        | |      }|r#||vr||v r |||	|       ||<   n |||	      ||<   U 	 t%        |       D ]C  }	 t        |d      }t        |d	      }t'        j(                  |      }|j+                          t/        |      D ]Z  }t!        ||      }|s||vs|r1|f|j0                  v r!dj3                  |j0                  ||f         }nd
} |||||      ||<   \ |s|j0                  j                         D ]z  \  \  }}}|k(  r#||vr ||||dj3                  |            ||<   1||k(  s7|s:t5        ||   |      sJ||   j6                  rZ|| k7  r|sbdj3                  |      ||   _        | F 	 |S # t        t        f$ r Y w xY w# t"        $ r Y w xY w# t"        $ r d
}d
}Y >t,        $ r d
}Y Kw xY w# t"        $ r Y |S w xY w)z+Get members and attributes of target class.r   )rl   r   rm   )class_r!   rn   )r   	docstringrf   rg   N
)rp   rl   r   r   rq   rr   r#   rm   r   r   ro   rL   rs   rt   r   r	   r&   r   r   r
   
for_moduleanalyzer   r   	attr_docsr>   rM   r   )r   rP   rR   inherit_docstringsrl   r   rx   ry   r   re   rz   r{   ro   r   	unmangledr%   r/   qualnamerw   r~   s                       r   get_class_membersr      sd    > ':r2H')G 7"..446 	JKD%7" ,T5 I	J __Q'
 	JD:...$Wd3 ,T5 I	J	$W-4#4#:#:#< Bi ,T9W7@!BB G 	w-Ee}"5) $/IYg58#)5iw)WGI&)5i)GGI&,'? )	GC	 &sL9'^<)44W=  " 's+ 	FT*D/Xt$48J8J$J$(IIh.@.@4.P$Q	$(	$0|C;D%FGDM	F -5-?-?-E-E-G G)JR	X~$g*=(4T<PS?Cyy?S)U.Y$WT]LA%dm55'>2D % 37))I2F/G5)	GZ NC z"    		 "     B  Ns   :J AJ1K =J,>K K  AK )AK :K =K K &K JJ	J)(J),K
9K <
K
K 	K

K 	KK)r   r   r   rb   returnrb   )r   r   r   rb   r   z
str | None)F)r/   rb   r0   rc   r   r   )r5   r   r0   rc   r   r   )r/   rb   rP   	list[str]rQ   rb   rR   zCallable[[Any, str], Any]r0   rc   r   r   )N)
r   r   rP   r   rR   r   rw   zModuleAnalyzer | Noner   zdict[str, Attribute])T)
r   r   rP   r   rR   r   r   rc   r   zdict[str, ObjectMember])+__doc__
__future__r   rG   r)   rC   rA   r-   rF   r   r   r   r   sphinx.ext.autodoc.mockr   r	   sphinx.pycoder
   r   sphinx.utilr   sphinx.util.inspectr   r   r   r   r   r   typesr   rp   r   	getLoggerr   r<   r   r&   r*   r6   r_   ra   r   r   ri   rj   r   <module>r      s    $ "   	 
   ; ; 6 5    /			8	$&
@
@ DF:F).S+7S+"&S+36S+l
  '+	>>> > $	>
 >D 26`*.`:Q`rj   