
    Fe                        d Z ddlmZ ddlmZmZ ddlmZ ddlZddlm	Z	 ddl
mZ ddlmZ erdd	lmZ dd
lmZ  G d de      ZddZddZy)z@Add external links to module code in Python object descriptions.    )annotations)TYPE_CHECKINGAny)nodesN)addnodes)SphinxError)_)Node)Sphinxc                      e Zd ZdZy)LinkcodeErrorzlinkcode errorN)__name__
__module____qualname__category     5/usr/lib/python3/dist-packages/sphinx/ext/linkcode.pyr   r      s    Hr   r   c           
        | j                   j                  }t        |j                  dd       }t	        |j                  j
                        sd}t        |      |J ddgdgdgddgd}t        |j                  t        j                              D ]  }|j                  d      }t               }|D ]  }	t        |	t        j                        si }
|j                  |g       D ]  }|	j                  |      }|sd	}||
|<    |
sT |||
      }|s`||v s|sg|j                  |       t!        j"                  d	t%        d
      dg      }t        j&                  d      }|t!        j(                  d	d	|d|      z  }|	|z  }	  y )Nlinkcode_resolvez3Function `linkcode_resolve` is not given in conf.pymodulefullnamenamesobject)pyccppjsdomain z[source]zviewcode-link)classeshtml)exprF)internalrefuri)builderenvgetattrconfigcallabler   r   listfindallr   descgetset
isinstancedesc_signatureaddr   inliner	   only	reference)appdoctreer'   resolve_targetmsgdomain_keysobjnoder   urissignodeinfokeyvalueurir3   onlynodes                   r   doctree_readrC      s   
++//CSZZ);TBNCJJ//0CC  %%% $Yy$	K 67  X& 	 Ggx'>'>? D"vr2 "C(E!S		"
  !.Cd{#HHSM\\"a
mo=NOF}}&1HBsSSHxG9	  r   c                z    | j                  dt               | j                  dd d       t        j                  ddS )Nzdoctree-readr   r    T)versionparallel_read_safe)connectrC   add_config_valuesphinx__display_version__)r6   s    r   setuprK   J   s4    KK-+T2611NNr   )r6   r   r7   r
   returnNone)r6   r   rL   zdict[str, Any])__doc__
__future__r   typingr   r   docutilsr   rI   r   sphinx.errorsr   sphinx.localer	   docutils.nodesr
   sphinx.applicationr   r   rC   rK   r   r   r   <module>rV      s>    F " %    % #) K  / dOr   