
    7 f5                       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
mZmZ ddlmZ ddlmZmZ ddlZdd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" e
rddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+  ej,        e-          Z.dZ/ G d de          Z0d8dZ1d9d!Z2d:d'Z3d;d-Z4d<d/Z5 G d0 d1e          Z6d=d2Z7d>d3Z8d?d5Z9d@d7Z:dS )Az7Add links to module code in Python object descriptions.    )annotationsN)import_module)path)TYPE_CHECKINGAnycast)nodes)ElementNode)addnodes)StandaloneHTMLBuilder)___)ModuleAnalyzer)SphinxPostTransform)logging)status_iterator)make_refnode)	GeneratorIterable)Sphinx)Builder)BuildEnvironment_modulesc                      e Zd ZdZdS )viewcode_anchorzNode for viewcode anchors.

    This node will be processed in the resolving phase.
    For viewcode supported builders, they will be all converted to the anchors.
    For not supported builders, they will be removed.
    N)__name__
__module____qualname____doc__     I/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/viewcode.pyr   r   %   s           r"   r   modnamestr	attributereturn
str | Nonec                   	 | d S t          |           }|}|                    d          D ]}|rt          ||          }t          |dd           S # t          $ r  t                              d||            Y d S t          $ rd}t                              t          j                    	                                           t                              d| |           Y d }~d S d }~ww xY w)N.r   zDidn't find %s in %sz0viewcode can't import %s, failed with error "%s")
r   splitgetattrAttributeErrorloggerverbose	Exception	traceback
format_excrstrip)r$   r&   modulevalueattres         r#   _get_full_modnamer8   .   s   ? 4w'' OOC(( 	- 	-D -t,,ulD111    	-y'BBBtt   
 	y+--4466777JGUVWWWttttts$   A AA &C(;	C(AC##C(builderr   boolc                    | j         dk    rdS | j        dk    rdS | j                            d          r| j        j        sdS dS )NhtmlF
singlehtmlepubT)formatname
startswithconfigviewcode_enable_epub)r9   s    r#   is_supported_builderrD   M   sT    ~u||##u|v&& w~/R u4r"   appr   doctreer   Nonec           	     6     j         j        t          d          si _        d fd	}t	          |                    t          j                            D ]>}|                    d
          dk    rt                      }|D ]}t          |t          j                  s|                    d          }|                    d          }|}j        j        r+                     d||          }	|	st          ||          }	|	}|s|                    d          } |||j        |          s||v r|                    |           t%          j        t(          |                    dd                    }
|t-          |
|j                  z  }@d S )N_viewcode_modulesr$   r%   fullnamedocnamerefnamer'   r:   c                   j                             | d           }|du rdS                     d|           }|T	 t          j        |           }|                                 n# t          $ r dj         | <   Y dS w xY w|j        }|j        }n|\  }}||d         |k    r||i |f}|j         | <   |\  }	}}
}	||v r||
|<   dS dS )NFviewcode-find-sourcer   T)	rI   getemit_firstresultr   
for_module	find_tagsr0   codetags)r$   rJ   rK   rL   entry	code_tagsanalyzerrS   rT   r   usedrE   envs              r#   has_tagzdoctree_read.<locals>.has_tag\   s   %))'488E>>5(()?II	)4W==""$$$$   16%g.uu =D=DD"JD$=E!H,,$G+E-2C!'* 4qt$DN4us   (A% %A=<A=domainpyr4   viewcode-follow-importedr*   /)	reftargetrefidrefdoc)
r$   r%   rJ   r%   rK   r%   rL   r%   r'   r:   )r9   rY   hasattrrI   listfindallr   descrO   set
isinstancedesc_signaturerB    viewcode_follow_imported_membersrP   r8   rK   add	posixpathjoinOUTPUT_DIRNAMEreplacer   )rE   rF   rZ   objnodenamessignoder$   rJ   rL   new_modnamepagenamerY   s   `          @r#   doctree_readrt   W   s   
+/C3+,, # "      : 6677 _ _;;x  D((%% 	_ 	_Ggx'>?? kk(++G{{:..HGz: &!22.  # G"3GX"F"FK% {{:..H77Hck7CC 5  IIh ~ngooc36O6OPPHRUR]^^^^GG/	_	_ _r"   rY   r   docnamesIterable[str]otherc                P   t          |d          sd S t          |d          si |_        |j                                        D ]b\  }}||j        vr||j        |<   |j        |         r<|j        |         d         }|d                                         D ]\  }}||vr|||<   cd S )NrI      )rb   rI   items)	rE   rY   ru   rw   r$   rU   rX   rJ   rK   s	            r#   env_merge_infor{      s    5-.. 3+,, # "17799 1 1#///-2C!'**$W- 1,W5a8).q)9)9 1 1%Hgt++)0X1 1r"   rK   c                D   t          |di           }t          |                                          D ]l\  }}|du r
|\  }}}}	t          |          D ]#}
||
         |k    r|                    |
           $t	          |          dk    r|                    |           md S )NrI   Fr   )r,   rc   rz   poplen)rE   rY   rK   modulesr$   rU   rS   rT   rX   rL   rJ   s              r#   env_purge_docr      s    c.33Gw}}// 
! 
!E>>$)!dD'T

 	# 	#HH~(("""t99>>KK   
! 
!r"   c                  .    e Zd ZdZdZddZddZdd	Zd
S )ViewcodeAnchorTransformz;Convert or remove viewcode_anchor nodes depends on builder.d   kwargsr   r'   rG   c                    t          | j        j                  r|                                  d S |                                  d S N)rD   rE   r9   convert_viewcode_anchorsremove_viewcode_anchors)selfr   s     r#   runzViewcodeAnchorTransform.run   sG     011 	+))+++++((*****r"   c                   | j                             t                    D ]k}t          j        dt          d          dg          }t          | j        j        |d         |d         |d         |          }|	                    |           ld S )N z[source]zviewcode-link)classesra   r_   r`   )
documentrd   r   r	   inliner   r   rE   r9   replace_self)r   nodeanchorrefnodes       r#   r   z0ViewcodeAnchorTransform.convert_viewcode_anchors   s    M))/:: 	' 	'D\"a
mmo=NOOOF"48#3T(^T+EV#'=&: :Gg&&&&		' 	'r"   c                    t          | j                            t                              D ]}|j                            |           d S r   )rc   r   rd   r   parentremove)r   r   s     r#   r   z/ViewcodeAnchorTransform.remove_viewcode_anchors   sL    ..??@@ 	% 	%DKt$$$$	% 	%r"   N)r   r   r'   rG   )r'   rG   )r   r   r   r    default_priorityr   r   r   r!   r"   r#   r   r      s\        EE+ + + +' ' ' '% % % % % %r"   r   c                    |                      d|          }|rdS 	 t          j        |          \  }}|S # t          $ r Y dS w xY w)z"Get module filename for *modname*.rN   N)rP   r   get_module_sourcer0   )rE   r$   source_infofilenamesources        r#   get_module_filenamer      sf    &&'=wGGK t	-?HHHfO 	 	 	44	s   5 
AAc                P   t          | |          }|dS t          t          | j                  }|                    dd          |j        z   }t          j        | j        d|          }	 t          j	        |          t          j	        |          k    rdS n# t          $ r Y nw xY wdS )z*Check generation of module page is needed.NTr*   r^   z	_modules/F)r   r   r   r9   rn   
out_suffixr   rl   outdirgetmtimeOSError)rE   r$   module_filenamer9   basenamepage_filenames         r#   should_generate_module_pager      s    )#w77Ot(#+66GsC((7+==HIcj+x@@M=))T]=-I-III5 J     4s   )*B 
B#"B#6Generator[tuple[str, dict[str, Any], str], None, None]c              #  
  K   | j         j        }t          |d          sd S t          | j                   sd S | j         j        }| j         j        }t          |j                  }t          t          |j        
                                          t          d          dt          |j                  | j        d           D ]n\  }}|s	t          | |          s|\  }}}	}
t          j        t"          |                    dd                    }|j        j        dv r|j        j        }nd}d	|j        j        z  }|                    |||
          }|                                }|d                             d          \  }}|dz   |g|dd<   t          |          dz
  }t3          d          }|	
                                D ]_\  }}||         \  }}} |||          dz   |
z   dz   |z   }d| d| d| d||         z   ||<   |t5          ||          xx         dz  cc<   `g }|}d|v rr|                    dd          d         }||v rN|                     ||t          j        t"          |                    dd                              |d           d|v r|                     ||t          j        t"          d                    t3          d          d           |                                 ||t3          d          |z  d                    |          z   d}||dfV  p|sd S dg}dg}t          |          D ]C}|                    |d                   r.|                    |dz              |                    d           n|                                 |                    |d                   sD|                                 |                    d           |                    |d                   D|                    |dz               |t          j        t"          d          t          j        t"          |                    dd                              }|                    d | d| d!           E|                    dt          |          dz
  z             t3          d"          t3          d#          d                    |          z   d$}t          j        t"          d          |dfV  d S )%NrI   zhighlighting module code... bluec                    | d         S )Nr   r!   )xs    r#   <lambda>zcollect_pages.<locals>.<lambda>  s
    QqT r"   r*   r^   >   nonedefaultpythonr   )linenosr   z<pre>   z[docs]#z <div class="viewcode-block" id="z"">
<a class="viewcode-back" href="z">z</a>
z</div>
)linktitleindexzModule codez<h1>Source code for %s</h1>
)parentsr   bodyz	page.htmlr   z<ul>z</ul>z<li><a href="z
</a></li>
zOverview: module codez0<h1>All modules for which code is available</h1>)r   r   ) r9   rY   rb   rD   highlighterget_relative_urirf   rI   r   sortedrz   r   r~   	verbosityr   rk   rl   rm   rn   rB   highlight_languageviewcode_line_numbershighlight_block
splitlinesr+   r   minrsplitappendreverserA   r}   ) rE   rY   r   uritomodnamesr$   rU   rS   rT   rX   rL   rs   lexerr   highlightedlinesbeforeafter	max_index	link_textr@   rK   typestartendbacklinkr   r   contextr<   stackrelative_uris                                    r#   collect_pagesr      s     
+/C3+,, ,, +)KK(E3())H)3(..0011-..%&&M>>	+ + ;/ ;/
  	*388 	$)!dD'>.'//#s2K2KLL:(,???J1EEESZ==!11$w1OO&&((aw//w&.ac

 JJN	hKK	!ZZ\\ 	5 	5MD'#DzD%uXw//#5?#ELH\t \ \>F\ \JS\ \ \#El+E%L #c9%%&&&*4&&&& Vmm]]3**1-F!!!E("+.PSUXAYAY"Z"Z\ \# %  % & & & Vmm 	h	~w0W0W X X!"=!1!13 3 	4 	4 	4 455?YYu%%&
 
 +..... 6DDE(## J JeBi(( 	(LL3'''KKIIKKK((r33 %		G$$$ ((r33 % LL3'''uY^NGDD&^NGOOCQT<U<UVVX XHLHHGHHHIIIIKK3u::>*+++*++EFF G >.'22G[
IIIIIIr"   dict[str, Any]c                H   |                      dd d           |                      ddd           |                      ddd           |                      dddt          f           |                     dt                     |                     d	t                     |                     d
t
                     |                     dt                     |                     d           |                     d           |                     t                     t          j        dddS )Nviewcode_importFrC   ri   Tr   rY   zdoctree-readzenv-merge-infozenv-purge-doczhtml-collect-pagesrN   r]   r   )versionenv_versionparallel_read_safe)add_config_valuer:   connectrt   r{   r   r   	add_eventadd_post_transformr   sphinx__display_version__)rE   s    r#   setupr   W  s   *D%888/>>>;T5III0%HHHKK---KK .111KK///KK$m444 MM()))MM,---2333-"  r"   )r$   r%   r&   r%   r'   r(   )r9   r   r'   r:   )rE   r   rF   r   r'   rG   )
rE   r   rY   r   ru   rv   rw   r   r'   rG   )rE   r   rY   r   rK   r%   r'   rG   )rE   r   r$   r%   r'   r(   )rE   r   r$   r%   r'   r:   )rE   r   r'   r   )rE   r   r'   r   );r    
__future__r   rk   r1   	importlibr   osr   typingr   r   r   docutilsr	   docutils.nodesr
   r   r   r   sphinx.builders.htmlr   sphinx.localer   r   sphinx.pycoder   !sphinx.transforms.post_transformsr   sphinx.utilr   sphinx.util.displayr   sphinx.util.nodesr   collections.abcr   r   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   	getLoggerr   r.   rm   r   r8   rD   rt   r{   r   r   r   r   r   r   r!   r"   r#   <module>r      s   = = " " " " " "         # # # # # #       + + + + + + + + + +       ( ( ( ( ( ( ( (        6 6 6 6 6 6         ( ( ( ( ( ( A A A A A A       / / / / / / * * * * * * 433333333))))))''''''333333		8	$	$     g      >   =_ =_ =_ =_@1 1 1 1&! ! ! ! % % % % %1 % % %,
 
 
 
   *bJ bJ bJ bJJ     r"   