o $a, @sdZddlmZmZmZddlmZddlmZddl Z ddl m Z ddl m Z ddl mZdd lmZGd d d eZd e d eddfddZd e deeeffddZdS)z sphinx.ext.linkcode ~~~~~~~~~~~~~~~~~~~ Add external links to module code in Python object descriptions. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. )AnyDictSet)nodes)NodeN)addnodes)Sphinx) SphinxError)_c@seZdZdZdS) LinkcodeErrorzlinkcode errorN)__name__ __module__ __qualname__categoryrr5/usr/lib/python3/dist-packages/sphinx/ext/linkcode.pyr sr appdoctreereturnc Cs&|jj}t|jdd}t|jjstdddgdgdgddgd}t|t j D]f}| d}t }|D]Y}t |t js?q6i} | |gD]} | | } | sRd } | | | <qG| sZq6||| } | sbq6| |vsh| siq6|| tjd td d gd } t jd d}|tjd d | d| d7}||7}q6q*dS)Nlinkcode_resolvez3Function `linkcode_resolve` is not given in conf.pymodulefullnamenamesobject)pyccppjsdomainz[source]z viewcode-link)classeshtml)exprF)internalrefuri)builderenvgetattrconfigcallablerr listtraverserdescgetset isinstancedesc_signatureaddrinliner only reference)rrr&resolve_target domain_keysobjnoderurissignodeinfokeyvalueurir2onlynoderrr doctree_readsJ          r?cCs&|dt|dddtjddS)Nz doctree-readrrT)versionparallel_read_safe)connectr?add_config_valuesphinx__display_version__)rrrrsetupLs  rF)__doc__typingrrrdocutilsrdocutils.nodesrrDrsphinx.applicationr sphinx.errorsr sphinx.localer r r?strrFrrrrs      1