o $a- @sdZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z ddlmZmZddlmZmZddlmZddlmZmZmZmZmZmZ e e!Z"d ed e#de#fddZ$d ed e#de e#fddZ%d(de#de&defddZ'ded fde#dee#de#deee#gefde&def ddZ(dedee e#effddZ)Gd d!d!e Z* d)d edee#ded"edee#e*ff d#d$Z+d edee#dedee#d%ffd&d'Z,dS)*z sphinx.ext.autodoc.importer ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Importer utilities for autodoc :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)AnyCallableDictList NamedTupleOptionalTuple)RemovedInSphinx50Warning)ismock undecorate)ModuleAnalyzer PycodeError)logging)getannotationsgetmrogetslotsisclass isenumclass safe_getattrF)Type) ObjectMembersubjectnamereturncCsTzt|r|dr|dsd|j|fWSW|SW|SW|Sty)Y|Sw)zMangle the given name.__z_%s%s)r startswithendswith__name__AttributeError)rrr=/usr/lib/python3/dist-packages/sphinx/ext/autodoc/importer.pymangle s r!cCsz8t|r0|ds3d|j}||r||ddWS|jD]}d|j}||r/WdSqW|SW|SW|StyBY|Sw)zUnmangle the given name.rz_%s__N)rrrrreplace__mro__r)rrprefixclsrrr unmangle+s(        r'modnamewarningiserrorc CszCt4tjdtdt| t|WdWdWS1s+wYWdWdS1ss &r2objpathobjtype attrgetterc Cs|r td|d|ntd|zd}d}t|}|durbzt||d}td||Wn.ty]}z"td||}d|vrR|dd\}}|d|nWYd}~nd}~ww|dus |} d} d} |D]/} | } td | t| | } || | } ztd | Wnt ytd | fYnw| } qj|| | | gWSt tfy }z[t |t r|r|}|rd |d||f}nd ||f}t |tr|j \}}t |t r|d 7}n!t |tr|j r|d|j d7}n|d|7}n|dt7}t|t||d}~ww)Nzutodoc] from %s import %s.z[autodoc] import %s)r)z[autodoc] import %s => %rz[autodoc] import %s => failedr"rz[autodoc] getattr(_, %r)z[autodoc] => %rz.autodoc: failed to import %s %r from module %rzautodoc: failed to import %s %rzJ; the module executes module level statement and it might call sys.exit().z(; the following exception was raised: %s)loggerdebugjoinlistr2r4rsplitinsertr! TypeErrorr isinstanceargs SystemExitr5r6)r(r9r:r;r)moduleexc_on_importingr7robjparent object_nameattrname mangled_nameerrmsgreal_exc traceback_msgrrr import_objectMsr               rQrGc Csddlm}tdti}t|D]}zt||d}||f||<Wqty+Yqwt|D] }||vr<||f||<q0t t | S)zGet members of target module.r INSTANCEATTRz?sphinx.ext.autodoc.importer.get_module_members() is deprecated.N) sphinx.ext.autodocrSr,warnr dirrrrsortedr@values)rGrSmembersrvaluerrr get_module_memberss"      r[c@s&eZdZUeed<eed<eed<dS) Attributerdirectly_definedrZN)r __module__ __qualname__str__annotations__boolrrrrr r\s  r\analyzerc Csddlm}||di}i}t|rD|jD]\}}||vr't|d|||<q|jd} |D]}|| jvrCt||}t|d|||<q/zt |} | r^ddlm } | D] }t|d| ||<qSWn t t fyjYnwt |D])}z|||}||v} t||}|r||vrt|| |||<WqotyYqowtt|D] \} }t|D]}t||}|r||vrt|| dk|||<qq|rd|}|D]\}}||kr||vrt|d|||<q|S)z,Get members and attributes of target object.rrR__dict__Tr" SLOTSATTRr<)rTrSr __members__itemsr\r$rdrrrfrC ValueErrorrVr'r enumeraterrr?find_attr_docs)rr9r;rcrSobj_dictrYrrZ superclass __slots__rfr]ir& namespacensrrr get_object_memberssb               rrrc Csddlm}m}||di}i}t|rH|jD]\}}||vr*||||d||<q|jd} |D]}|| jvrGt||}||||d||<q2z!t |} | rhddlm } | D]\}} ||| || d||<qYWn t t fytYnwt |D]:}z/|||}t|rt|}t||} | r| |vr||vr|| ||d|| <n|| ||| <WqytyYqywzt|D]}zt|d}t|d }t|}|Wntyd }d }Yn tyd }Ynwt|D]1}t||}|r||vr|r||f|jvrd |j||f} nd } ||||| d||<q|rE|jD]\\}}} ||krC||vrC||||d | d||<q&qW|StySY|Sw) z+Get members and attributes of target class.r)rSrrd)class_r"re)rs docstringr^r_N )rTrSrrrgrhr$rdrrrfrCrirVr r r'rrr for_moduleanalyzer r attr_docsr?)rr9r;rSrrlrYrrZrmrnrfrt unmangledr&r(qualnamercrqrrr get_class_memberss                      !r{)F)N)-__doc__r1r5r,typingrrrrrrrsphinx.deprecationr sphinx.ext.autodoc.mockr r sphinx.pycoder r sphinx.utilrsphinx.util.inspectrrrrrrrrTr getLoggerrr=r`r!r'rbr2rQr[r\rrr{rrrr sH $      I  =