2024-08-29 13:55:15 +08:00
|
|
|
|
import{_ as n,o as s,c as a,d as t}from"./app-CLi4lRj1.js";const p={},o=t(`<h3 id="func-get-relative-path-str" tabindex="-1"><a class="header-anchor" href="#func-get-relative-path-str"><span><em>func</em> <code>get_relative_path() -> str</code></span></a></h3><p><strong>Description</strong>: 获取相对路径</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>base_path: 基础路径</li><li>target_path: 目标路径</li></ul></blockquote><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_relative_path</span><span class="token punctuation">(</span>base_path<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> target_path<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
<span class="token triple-quoted-string string">"""
|
|
|
|
|
获取相对路径
|
|
|
|
|
Args:
|
|
|
|
|
base_path: 基础路径
|
|
|
|
|
target_path: 目标路径
|
|
|
|
|
"""</span>
|
|
|
|
|
<span class="token keyword">return</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>relpath<span class="token punctuation">(</span>target_path<span class="token punctuation">,</span> base_path<span class="token punctuation">)</span>
|
2024-08-29 13:53:08 +08:00
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="func-write-to-files" tabindex="-1"><a class="header-anchor" href="#func-write-to-files"><span><em>func</em> <code>write_to_files()</code></span></a></h3><p><strong>Description</strong>: 输出文件</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>file_data: 文件数据 相对路径</li></ul></blockquote><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">write_to_files</span><span class="token punctuation">(</span>file_data<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">str</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
<span class="token triple-quoted-string string">"""
|
|
|
|
|
输出文件
|
|
|
|
|
Args:
|
|
|
|
|
file_data: 文件数据 相对路径
|
|
|
|
|
"""</span>
|
|
|
|
|
<span class="token keyword">for</span> <span class="token punctuation">(</span>rp<span class="token punctuation">,</span> data<span class="token punctuation">)</span> <span class="token keyword">in</span> file_data<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>dirname<span class="token punctuation">(</span>rp<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
os<span class="token punctuation">.</span>makedirs<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>dirname<span class="token punctuation">(</span>rp<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>rp<span class="token punctuation">,</span> <span class="token string">'w'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
|
|
|
|
|
f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
2024-08-29 13:53:08 +08:00
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="func-get-file-list" tabindex="-1"><a class="header-anchor" href="#func-get-file-list"><span><em>func</em> <code>get_file_list()</code></span></a></h3><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_file_list</span><span class="token punctuation">(</span>module_folder<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
file_list <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
|
|
|
|
<span class="token keyword">for</span> <span class="token punctuation">(</span>root<span class="token punctuation">,</span> dirs<span class="token punctuation">,</span> files<span class="token punctuation">)</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>walk<span class="token punctuation">(</span>module_folder<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">for</span> <span class="token builtin">file</span> <span class="token keyword">in</span> files<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'.py'</span><span class="token punctuation">,</span> <span class="token string">'.pyi'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
file_list<span class="token punctuation">.</span>append<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>root<span class="token punctuation">,</span> <span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">return</span> file_list
|
2024-08-29 13:53:08 +08:00
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="func-get-module-info-normal-file-path-str-true-moduleinfo" tabindex="-1"><a class="header-anchor" href="#func-get-module-info-normal-file-path-str-true-moduleinfo"><span><em>func</em> <code>get_module_info_normal(file_path: str = True) -> ModuleInfo</code></span></a></h3><p><strong>Description</strong>: 获取函数和类</p><p><strong>Return</strong>: 模块信息</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>file_path: Python 文件路径</li><li>ignore_private: 忽略私有函数和类</li></ul></blockquote><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_module_info_normal</span><span class="token punctuation">(</span>file_path<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> ignore_private<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> ModuleInfo<span class="token punctuation">:</span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
<span class="token triple-quoted-string string">"""
|
|
|
|
|
获取函数和类
|
|
|
|
|
Args:
|
|
|
|
|
file_path: Python 文件路径
|
|
|
|
|
ignore_private: 忽略私有函数和类
|
|
|
|
|
Returns:
|
|
|
|
|
模块信息
|
|
|
|
|
"""</span>
|
|
|
|
|
<span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>file_path<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span>
|
|
|
|
|
file_content <span class="token operator">=</span> <span class="token builtin">file</span><span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
|
|
|
|
tree <span class="token operator">=</span> ast<span class="token punctuation">.</span>parse<span class="token punctuation">(</span>file_content<span class="token punctuation">)</span>
|
|
|
|
|
dot_sep_module_path <span class="token operator">=</span> file_path<span class="token punctuation">.</span>replace<span class="token punctuation">(</span>os<span class="token punctuation">.</span>sep<span class="token punctuation">,</span> <span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'.py'</span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'.pyi'</span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span>
|
|
|
|
|
module_docstring <span class="token operator">=</span> ast<span class="token punctuation">.</span>get_docstring<span class="token punctuation">(</span>tree<span class="token punctuation">)</span>
|
|
|
|
|
module_info <span class="token operator">=</span> ModuleInfo<span class="token punctuation">(</span>module_path<span class="token operator">=</span>dot_sep_module_path<span class="token punctuation">,</span> functions<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> classes<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> attributes<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> docstring<span class="token operator">=</span>module_docstring <span class="token keyword">if</span> module_docstring <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">for</span> node <span class="token keyword">in</span> ast<span class="token punctuation">.</span>walk<span class="token punctuation">(</span>tree<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>node<span class="token punctuation">,</span> <span class="token punctuation">(</span>ast<span class="token punctuation">.</span>FunctionDef<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>AsyncFunctionDef<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">any</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>parent<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>ClassDef<span class="token punctuation">)</span> <span class="token keyword">for</span> parent <span class="token keyword">in</span> ast<span class="token punctuation">.</span>iter_child_nodes<span class="token punctuation">(</span>node<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token keyword">not</span> ignore_private <span class="token keyword">or</span> <span class="token keyword">not</span> node<span class="token punctuation">.</span>name<span class="token punctuation">.</span>startswith<span class="token punctuation">(</span><span class="token string">'_'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> node<span class="token punctuation">.</span>args<span class="token punctuation">.</span>args<span class="token punctuation">:</span>
|
|
|
|
|
first_arg <span class="token operator">=</span> node<span class="token punctuation">.</span>args<span class="token punctuation">.</span>args<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
|
|
|
|
|
<span class="token keyword">if</span> first_arg<span class="token punctuation">.</span>arg <span class="token keyword">in</span> <span class="token punctuation">(</span><span class="token string">'self'</span><span class="token punctuation">,</span> <span class="token string">'cls'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">continue</span>
|
|
|
|
|
function_docstring <span class="token operator">=</span> ast<span class="token punctuation">.</span>get_docstring<span class="token punctuation">(</span>node<span class="token punctuation">)</span>
|
|
|
|
|
func_info <span class="token operator">=</span> FunctionInfo<span class="token punctuation">(</span>name<span class="token operator">=</span>node<span class="token punctuation">.</span>name<span class="token punctuation">,</span> args<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">(</span>arg<span class="token punctuation">.</span>arg<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>arg<span class="token punctuation">.</span>annotation<span class="token punctuation">)</span> <span class="token keyword">if</span> arg<span class="token punctuation">.</span>annotation <span class="token keyword">else</span> NO_TYPE_ANY<span class="token punctuation">)</span> <span class="token keyword">for</span> arg <span class="token keyword">in</span> node<span class="token punctuation">.</span>args<span class="token punctuation">.</span>args<span class="token punctuation">]</span><span class="token punctuation">,</span> return_type<span class="token operator">=</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>node<span class="token punctuation">.</span>returns<span class="token punctuation">)</span> <span class="token keyword">if</span> node<span class="token punctuation">.</span>returns <span class="token keyword">else</span> <span class="token string">'None'</span><span class="token punctuation">,</span> docstring<span class="token operator">=</span>function_docstring <span class="token keyword">if</span> function_docstring <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span>DefType<span class="token punctuation">.</span>FUNCTION<span class="token punctuation">,</span> is_async<span class="token operator">=</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>node<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>AsyncFunctionDef<span class="token punctuation">)</span><span class="token punctuation">,</span> source_code<span class="token operator">=</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>node<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
|
module_info<span class="token punctuation">.</span>functions<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func_info<span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>node<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>ClassDef<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
class_docstring <span class="token operator">=</span> ast<span class="token punctuation">.</span>get_docstring<span class="token punctuation">(</span>node<span class="token punctuation">)</span>
|
|
|
|
|
class_info <span class="token operator">=</span> ClassInfo<span class="token punctuation">(</span>name<span class="token operator">=</span>node<span class="token punctuation">.</span>name<span class="token punctuation">,</span> docstring<span class="token operator">=</span>class_docstring <span class="token keyword">if</span> class_docstring <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">,</span> methods<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> attributes<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> inherit<span class="token operator">=</span><span class="token punctuation">[</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>base<span class="token punctuation">)</span> <span class="token keyword">for</span> base <span class="token keyword">in</span> node<span class="token punctuation">.</span>bases<span class="token punctuation">]</span><span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">for</span> class_node <span class="token keyword">in</span> node<span class="token punctuation">.</span>body<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>class_node<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>FunctionDef<span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token keyword">not</span> ignore_private <span class="token keyword">or</span> <span class="token keyword">not</span> class_node<span class="token punctuation">.</span>name<span class="token punctuation">.</span>startswith<span class="token punctuation">(</span><span class="token string">'_'</span><span class="token punctuation">)</span> <span class="token keyword">or</span> class_node<span class="token punctuation">.</span>name <span class="token operator">==</span> <span class="token string">'__init__'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
method_docstring <span class="token operator">=</span> ast<span class="token punctuation">.</span>get_docstring<span class="token punctuation">(</span>class_node<span class="token punctuation">)</span>
|
|
|
|
|
def_type <span class="token operator">=</span> DefType<span class="token punctuation">.</span>METHOD
|
|
|
|
|
<span class="token keyword">if</span> class_node<span class="token punctuation">.</span>decorator_list<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">any</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>decorator<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token keyword">and</span> decorator<span class="token punctuation">.</span><span class="token builtin">id</span> <span class="token operator">==</span> <span class="token string">'staticmethod'</span> <span class="token keyword">for</span> decorator <span class="token keyword">in</span> class_node<span class="token punctuation">.</span>decorator_list<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
def_type <span class="token operator">=</span> DefType<span class="token punctuation">.</span>STATIC_METHOD
|
|
|
|
|
<span class="token keyword">elif</span> <span class="token builtin">any</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>decorator<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token keyword">and</span> decorator<span class="token punctuation">.</span><span class="token builtin">id</span> <span class="token operator">==</span> <span class="token string">'classmethod'</span> <span class="token keyword">for</span> decorator <span class="token keyword">in</span> class_node<span class="token punctuation">.</span>decorator_list<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
def_type <span class="token operator">=</span> DefType<span class="token punctuation">.</span>CLASS_METHOD
|
|
|
|
|
<span class="token keyword">elif</span> <span class="token builtin">any</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>decorator<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token keyword">and</span> decorator<span class="token punctuation">.</span><span class="token builtin">id</span> <span class="token operator">==</span> <span class="token string">'property'</span> <span class="token keyword">for</span> decorator <span class="token keyword">in</span> class_node<span class="token punctuation">.</span>decorator_list<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
def_type <span class="token operator">=</span> DefType<span class="token punctuation">.</span>PROPERTY
|
|
|
|
|
class_info<span class="token punctuation">.</span>methods<span class="token punctuation">.</span>append<span class="token punctuation">(</span>FunctionInfo<span class="token punctuation">(</span>name<span class="token operator">=</span>class_node<span class="token punctuation">.</span>name<span class="token punctuation">,</span> args<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">(</span>arg<span class="token punctuation">.</span>arg<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>arg<span class="token punctuation">.</span>annotation<span class="token punctuation">)</span> <span class="token keyword">if</span> arg<span class="token punctuation">.</span>annotation <span class="token keyword">else</span> NO_TYPE_ANY<span class="token punctuation">)</span> <span class="token keyword">for</span> arg <span class="token keyword">in</span> class_node<span class="token punctuation">.</span>args<span class="token punctuation">.</span>args<span class="token punctuation">]</span><span class="token punctuation">,</span> return_type<span class="token operator">=</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>class_node<span class="token punctuation">.</span>returns<span class="token punctuation">)</span> <span class="token keyword">if</span> class_node<span class="token punctuation">.</span>returns <span class="token keyword">else</span> <span class="token string">'None'</span><span class="token punctuation">,</span> docstring<span class="token operator">=</span>method_docstring <span class="token keyword">if</span> method_docstring <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span>def_type<span class="token punctuation">,</span> is_async<span class="token operator">=</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>class_node<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>AsyncFunctionDef<span class="token punctuation">)</span><span class="token punctuation">,</span> source_code<span class="token operator">=</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>class_node<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>class_node<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Assign<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">for</span> target <span class="token keyword">in</span> class_node<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>target<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Name<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
class_info<span class="token punctuation">.</span>attributes<span class="token punctuation">.</span>append<span class="token punctuation">(</span>AttributeInfo<span class="token punctuation">(</span>name<span class="token operator">=</span>target<span class="token punctuation">.</span><span class="token builtin">id</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>class_node<span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
|
module_info<span class="token punctuation">.</span>classes<span class="token punctuation">.</span>append<span class="token punctuation">(</span>class_info<span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>node<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Assign<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">any</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">isinstance</span><span class="token punctuation">(</span>parent<span class="token punctuation">,</span> <span class="token punctuation">(</span>ast<span class="token punctuation">.</span>ClassDef<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>FunctionDef<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> parent <span class="token keyword">in</span> ast<span class="token punctuation">.</span>iter_child_nodes<span class="token punctuation">(</span>node<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">for</span> target <span class="token keyword">in</span> node<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>target<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token keyword">not</span> ignore_private <span class="token keyword">or</span> <span class="token keyword">not</span> target<span class="token punctuation">.</span><span class="token builtin">id</span><span class="token punctuation">.</span>startswith<span class="token punctuation">(</span><span class="token string">'_'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
attr_type <span class="token operator">=</span> NO_TYPE_HINT
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>node<span class="token punctuation">.</span>value<span class="token punctuation">,</span> ast<span class="token punctuation">.</span>AnnAssign<span class="token punctuation">)</span> <span class="token keyword">and</span> node<span class="token punctuation">.</span>value<span class="token punctuation">.</span>annotation<span class="token punctuation">:</span>
|
|
|
|
|
attr_type <span class="token operator">=</span> ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>node<span class="token punctuation">.</span>value<span class="token punctuation">.</span>annotation<span class="token punctuation">)</span>
|
|
|
|
|
module_info<span class="token punctuation">.</span>attributes<span class="token punctuation">.</span>append<span class="token punctuation">(</span>AttributeInfo<span class="token punctuation">(</span>name<span class="token operator">=</span>target<span class="token punctuation">.</span><span class="token builtin">id</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span>attr_type<span class="token punctuation">,</span> value<span class="token operator">=</span>ast<span class="token punctuation">.</span>unparse<span class="token punctuation">(</span>node<span class="token punctuation">.</span>value<span class="token punctuation">)</span> <span class="token keyword">if</span> node<span class="token punctuation">.</span>value <span class="token keyword">else</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">return</span> module_info
|
2024-08-29 13:53:08 +08:00
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="func-generate-markdown-module-info-moduleinfo-none-front-matter-zh-cn-str" tabindex="-1"><a class="header-anchor" href="#func-generate-markdown-module-info-moduleinfo-none-front-matter-zh-cn-str"><span><em>func</em> <code>generate_markdown(module_info: ModuleInfo = None, front_matter = 'zh-CN') -> str</code></span></a></h3><p><strong>Description</strong>: 生成模块的Markdown 你可在此自定义生成的Markdown格式</p><p><strong>Return</strong>: Markdown 字符串</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>module_info: 模块信息</li><li>front_matter: 自定义选项title, index, icon, category</li><li>lang: 语言</li></ul></blockquote><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">generate_markdown</span><span class="token punctuation">(</span>module_info<span class="token punctuation">:</span> ModuleInfo<span class="token punctuation">,</span> front_matter<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> lang<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token operator">=</span><span class="token string">'zh-CN'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
<span class="token triple-quoted-string string">"""
|
|
|
|
|
生成模块的Markdown
|
|
|
|
|
你可在此自定义生成的Markdown格式
|
|
|
|
|
Args:
|
|
|
|
|
module_info: 模块信息
|
|
|
|
|
front_matter: 自定义选项title, index, icon, category
|
2024-08-21 18:06:07 +08:00
|
|
|
|
lang: 语言
|
2024-08-21 18:00:26 +08:00
|
|
|
|
Returns:
|
|
|
|
|
Markdown 字符串
|
|
|
|
|
"""</span>
|
|
|
|
|
content <span class="token operator">=</span> <span class="token string">''</span>
|
|
|
|
|
front_matter <span class="token operator">=</span> <span class="token string">'---\\n'</span> <span class="token operator">+</span> <span class="token string">'\\n'</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>k<span class="token punctuation">}</span></span><span class="token string">: </span><span class="token interpolation"><span class="token punctuation">{</span>v<span class="token punctuation">}</span></span><span class="token string">'</span></span> <span class="token keyword">for</span> <span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token keyword">in</span> front_matter<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'\\n---\\n\\n'</span>
|
|
|
|
|
content <span class="token operator">+=</span> front_matter
|
|
|
|
|
<span class="token keyword">for</span> func <span class="token keyword">in</span> module_info<span class="token punctuation">.</span>functions<span class="token punctuation">:</span>
|
|
|
|
|
args_with_type <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">: </span><span class="token interpolation"><span class="token punctuation">{</span>arg<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">'</span></span> <span class="token keyword">if</span> arg<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token keyword">else</span> arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">for</span> arg <span class="token keyword">in</span> func<span class="token punctuation">.</span>args<span class="token punctuation">]</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f"### ***</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'async '</span> <span class="token keyword">if</span> func<span class="token punctuation">.</span>is_async <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">def*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>func<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">(</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token string">', '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>args_with_type<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">) -> </span><span class="token interpolation"><span class="token punctuation">{</span>func<span class="token punctuation">.</span>return_type<span class="token punctuation">}</span></span><span class="token string">\`\\n\\n"</span></span>
|
|
|
|
|
func<span class="token punctuation">.</span>docstring <span class="token operator">=</span> func<span class="token punctuation">.</span>docstring<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'\\n'</span><span class="token punctuation">,</span> <span class="token string">'\\n\\n'</span><span class="token punctuation">)</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>func<span class="token punctuation">.</span>docstring<span class="token punctuation">}</span></span><span class="token string">\\n\\n'</span></span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'<details>\\n<summary>源代码</summary>\\n\\n\`\`\`python\\n</span><span class="token interpolation"><span class="token punctuation">{</span>func<span class="token punctuation">.</span>source_code<span class="token punctuation">}</span></span><span class="token string">\\n\`\`\`\\n</details>\\n\\n'</span></span>
|
|
|
|
|
<span class="token keyword">for</span> cls <span class="token keyword">in</span> module_info<span class="token punctuation">.</span>classes<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> cls<span class="token punctuation">.</span>inherit<span class="token punctuation">:</span>
|
|
|
|
|
inherit <span class="token operator">=</span> <span class="token string-interpolation"><span class="token string">f"(</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token string">', '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>cls<span class="token punctuation">.</span>inherit<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">)"</span></span> <span class="token keyword">if</span> cls<span class="token punctuation">.</span>inherit <span class="token keyword">else</span> <span class="token string">''</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'### ***class*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>cls<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token interpolation"><span class="token punctuation">{</span>inherit<span class="token punctuation">}</span></span><span class="token string">\`\\n\\n'</span></span>
|
|
|
|
|
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'### ***class*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>cls<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">\`\\n\\n'</span></span>
|
|
|
|
|
cls<span class="token punctuation">.</span>docstring <span class="token operator">=</span> cls<span class="token punctuation">.</span>docstring<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'\\n'</span><span class="token punctuation">,</span> <span class="token string">'\\n\\n'</span><span class="token punctuation">)</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>cls<span class="token punctuation">.</span>docstring<span class="token punctuation">}</span></span><span class="token string">\\n\\n'</span></span>
|
|
|
|
|
<span class="token keyword">for</span> method <span class="token keyword">in</span> cls<span class="token punctuation">.</span>methods<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> method<span class="token punctuation">.</span><span class="token builtin">type</span> <span class="token operator">!=</span> DefType<span class="token punctuation">.</span>METHOD<span class="token punctuation">:</span>
|
|
|
|
|
args_with_type <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">: </span><span class="token interpolation"><span class="token punctuation">{</span>arg<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">'</span></span> <span class="token keyword">if</span> arg<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token keyword">else</span> arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">for</span> arg <span class="token keyword">in</span> method<span class="token punctuation">.</span>args<span class="token punctuation">]</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'### &emsp; ***@</span><span class="token interpolation"><span class="token punctuation">{</span>method<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">.</span>value<span class="token punctuation">}</span></span><span class="token string">***\\n'</span></span>
|
|
|
|
|
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
|
|
|
|
args_with_type <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">: </span><span class="token interpolation"><span class="token punctuation">{</span>arg<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">'</span></span> <span class="token keyword">if</span> arg<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token keyword">and</span> arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">!=</span> <span class="token string">'self'</span> <span class="token keyword">else</span> arg<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">for</span> arg <span class="token keyword">in</span> method<span class="token punctuation">.</span>args<span class="token punctuation">]</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f"### &emsp; ***</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'async '</span> <span class="token keyword">if</span> method<span class="token punctuation">.</span>is_async <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">def*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>method<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">(</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token string">', '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>args_with_type<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">) -> </span><span class="token interpolation"><span class="token punctuation">{</span>method<span class="token punctuation">.</span>return_type<span class="token punctuation">}</span></span><span class="token string">\`\\n\\n"</span></span>
|
|
|
|
|
method<span class="token punctuation">.</span>docstring <span class="token operator">=</span> method<span class="token punctuation">.</span>docstring<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'\\n'</span><span class="token punctuation">,</span> <span class="token string">'\\n\\n'</span><span class="token punctuation">)</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'&emsp;</span><span class="token interpolation"><span class="token punctuation">{</span>method<span class="token punctuation">.</span>docstring<span class="token punctuation">}</span></span><span class="token string">\\n\\n'</span></span>
|
2024-08-21 18:06:07 +08:00
|
|
|
|
<span class="token keyword">if</span> lang <span class="token operator">==</span> <span class="token string">'zh-CN'</span><span class="token punctuation">:</span>
|
|
|
|
|
TEXT_SOURCE_CODE <span class="token operator">=</span> <span class="token string">'源代码'</span>
|
|
|
|
|
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
|
|
|
|
TEXT_SOURCE_CODE <span class="token operator">=</span> <span class="token string">'Source Code'</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'<details>\\n<summary></span><span class="token interpolation"><span class="token punctuation">{</span>TEXT_SOURCE_CODE<span class="token punctuation">}</span></span><span class="token string"></summary>\\n\\n\`\`\`python\\n</span><span class="token interpolation"><span class="token punctuation">{</span>method<span class="token punctuation">.</span>source_code<span class="token punctuation">}</span></span><span class="token string">\\n\`\`\`\\n</details>\\n\\n'</span></span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
<span class="token keyword">for</span> attr <span class="token keyword">in</span> cls<span class="token punctuation">.</span>attributes<span class="token punctuation">:</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'### &emsp; ***attr*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">: </span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">}</span></span><span class="token string">\`\\n\\n'</span></span>
|
|
|
|
|
<span class="token keyword">for</span> attr <span class="token keyword">in</span> module_info<span class="token punctuation">.</span>attributes<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> attr<span class="token punctuation">.</span><span class="token builtin">type</span> <span class="token operator">==</span> NO_TYPE_HINT<span class="token punctuation">:</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'### ***var*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string"> = </span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span>value<span class="token punctuation">}</span></span><span class="token string">\`\\n\\n'</span></span>
|
|
|
|
|
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'### ***var*** \`</span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">: </span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">}</span></span><span class="token string"> = </span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span>value<span class="token punctuation">}</span></span><span class="token string">\`\\n\\n'</span></span>
|
|
|
|
|
attr<span class="token punctuation">.</span>docstring <span class="token operator">=</span> attr<span class="token punctuation">.</span>docstring<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'\\n'</span><span class="token punctuation">,</span> <span class="token string">'\\n\\n'</span><span class="token punctuation">)</span>
|
|
|
|
|
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>attr<span class="token punctuation">.</span>docstring<span class="token punctuation">}</span></span><span class="token string">\\n\\n'</span></span>
|
|
|
|
|
<span class="token keyword">return</span> content
|
2024-08-29 13:53:08 +08:00
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="func-generate-docs-module-folder-str-false-output-dir-str-zh-cn-with-top-bool-none" tabindex="-1"><a class="header-anchor" href="#func-generate-docs-module-folder-str-false-output-dir-str-zh-cn-with-top-bool-none"><span><em>func</em> <code>generate_docs(module_folder: str = False, output_dir: str = 'zh-CN', with_top: bool = None)</code></span></a></h3><p><strong>Description</strong>: 生成文档</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>module_folder: 模块文件夹</li><li>output_dir: 输出文件夹</li><li>with_top: 是否包含顶层文件夹 False时例如docs/api/module_a, docs/api/module_b, True时例如docs/api/module/module_a.md, docs/api/module/module_b.md</li><li>ignored_paths: 忽略的路径</li><li>lang: 语言</li></ul></blockquote><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">generate_docs</span><span class="token punctuation">(</span>module_folder<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> output_dir<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> with_top<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> lang<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token operator">=</span><span class="token string">'zh-CN'</span><span class="token punctuation">,</span> ignored_paths<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
2024-08-21 18:00:26 +08:00
|
|
|
|
<span class="token triple-quoted-string string">"""
|
|
|
|
|
生成文档
|
|
|
|
|
Args:
|
|
|
|
|
module_folder: 模块文件夹
|
|
|
|
|
output_dir: 输出文件夹
|
|
|
|
|
with_top: 是否包含顶层文件夹 False时例如docs/api/module_a, docs/api/module_b, True时例如docs/api/module/module_a.md, docs/api/module/module_b.md
|
|
|
|
|
ignored_paths: 忽略的路径
|
2024-08-21 18:06:07 +08:00
|
|
|
|
lang: 语言
|
2024-08-21 18:00:26 +08:00
|
|
|
|
"""</span>
|
|
|
|
|
<span class="token keyword">if</span> ignored_paths <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
|
|
|
|
ignored_paths <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
|
|
|
|
file_data<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">str</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
|
|
|
|
file_list <span class="token operator">=</span> get_file_list<span class="token punctuation">(</span>module_folder<span class="token punctuation">)</span>
|
|
|
|
|
shutil<span class="token punctuation">.</span>rmtree<span class="token punctuation">(</span>output_dir<span class="token punctuation">,</span> ignore_errors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
|
|
|
|
|
os<span class="token punctuation">.</span>mkdir<span class="token punctuation">(</span>output_dir<span class="token punctuation">)</span>
|
|
|
|
|
replace_data <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'__init__'</span><span class="token punctuation">:</span> <span class="token string">'README'</span><span class="token punctuation">,</span> <span class="token string">'.py'</span><span class="token punctuation">:</span> <span class="token string">'.md'</span><span class="token punctuation">}</span>
|
|
|
|
|
<span class="token keyword">for</span> pyfile_path <span class="token keyword">in</span> file_list<span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token builtin">any</span><span class="token punctuation">(</span><span class="token punctuation">(</span>ignored_path<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'\\\\'</span><span class="token punctuation">,</span> <span class="token string">'/'</span><span class="token punctuation">)</span> <span class="token keyword">in</span> pyfile_path<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'\\\\'</span><span class="token punctuation">,</span> <span class="token string">'/'</span><span class="token punctuation">)</span> <span class="token keyword">for</span> ignored_path <span class="token keyword">in</span> ignored_paths<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
<span class="token keyword">continue</span>
|
|
|
|
|
no_module_name_pyfile_path <span class="token operator">=</span> get_relative_path<span class="token punctuation">(</span>module_folder<span class="token punctuation">,</span> pyfile_path<span class="token punctuation">)</span>
|
|
|
|
|
rel_md_path <span class="token operator">=</span> pyfile_path <span class="token keyword">if</span> with_top <span class="token keyword">else</span> no_module_name_pyfile_path
|
|
|
|
|
<span class="token keyword">for</span> <span class="token punctuation">(</span>rk<span class="token punctuation">,</span> rv<span class="token punctuation">)</span> <span class="token keyword">in</span> replace_data<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
|
|
|
rel_md_path <span class="token operator">=</span> rel_md_path<span class="token punctuation">.</span>replace<span class="token punctuation">(</span>rk<span class="token punctuation">,</span> rv<span class="token punctuation">)</span>
|
|
|
|
|
abs_md_path <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>output_dir<span class="token punctuation">,</span> rel_md_path<span class="token punctuation">)</span>
|
|
|
|
|
module_info <span class="token operator">=</span> get_module_info_normal<span class="token punctuation">(</span>pyfile_path<span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">if</span> <span class="token string">'README'</span> <span class="token keyword">in</span> abs_md_path<span class="token punctuation">:</span>
|
|
|
|
|
front_matter <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'title'</span><span class="token punctuation">:</span> module_info<span class="token punctuation">.</span>module_path<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'.__init__'</span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'_'</span><span class="token punctuation">,</span> <span class="token string">'\\\\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'index'</span><span class="token punctuation">:</span> <span class="token string">'true'</span><span class="token punctuation">,</span> <span class="token string">'icon'</span><span class="token punctuation">:</span> <span class="token string">'laptop-code'</span><span class="token punctuation">,</span> <span class="token string">'category'</span><span class="token punctuation">:</span> <span class="token string">'API'</span><span class="token punctuation">}</span>
|
|
|
|
|
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
|
|
|
|
front_matter <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'title'</span><span class="token punctuation">:</span> module_info<span class="token punctuation">.</span>module_path<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'_'</span><span class="token punctuation">,</span> <span class="token string">'\\\\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'order'</span><span class="token punctuation">:</span> <span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'icon'</span><span class="token punctuation">:</span> <span class="token string">'laptop-code'</span><span class="token punctuation">,</span> <span class="token string">'category'</span><span class="token punctuation">:</span> <span class="token string">'API'</span><span class="token punctuation">}</span>
|
|
|
|
|
md_content <span class="token operator">=</span> generate_markdown<span class="token punctuation">(</span>module_info<span class="token punctuation">,</span> front_matter<span class="token punctuation">)</span>
|
|
|
|
|
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Generate </span><span class="token interpolation"><span class="token punctuation">{</span>pyfile_path<span class="token punctuation">}</span></span><span class="token string"> -> </span><span class="token interpolation"><span class="token punctuation">{</span>abs_md_path<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
|
|
|
|
file_data<span class="token punctuation">[</span>abs_md_path<span class="token punctuation">]</span> <span class="token operator">=</span> md_content
|
|
|
|
|
write_to_files<span class="token punctuation">(</span>file_data<span class="token punctuation">)</span>
|
2024-08-29 13:53:08 +08:00
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="class-deftype-enum" tabindex="-1"><a class="header-anchor" href="#class-deftype-enum"><span><strong>class</strong> <code>DefType(Enum)</code></span></a></h3><h3 id="class-functioninfo-basemodel" tabindex="-1"><a class="header-anchor" href="#class-functioninfo-basemodel"><span><strong>class</strong> <code>FunctionInfo(BaseModel)</code></span></a></h3><h3 id="class-attributeinfo-basemodel" tabindex="-1"><a class="header-anchor" href="#class-attributeinfo-basemodel"><span><strong>class</strong> <code>AttributeInfo(BaseModel)</code></span></a></h3><h3 id="class-classinfo-basemodel" tabindex="-1"><a class="header-anchor" href="#class-classinfo-basemodel"><span><strong>class</strong> <code>ClassInfo(BaseModel)</code></span></a></h3><h3 id="class-moduleinfo-basemodel" tabindex="-1"><a class="header-anchor" href="#class-moduleinfo-basemodel"><span><strong>class</strong> <code>ModuleInfo(BaseModel)</code></span></a></h3>`,34),e=[o];function c(l,i){return s(),a("div",null,e)}const k=n(p,[["render",c],["__file","mkdoc.html.vue"]]),r=JSON.parse(`{"path":"/en/api/mkdoc.html","title":"liteyuki.mkdoc","lang":"en-US","frontmatter":{"title":"liteyuki.mkdoc","description":"func get_relative_path() -> str Description: 获取相对路径 Arguments: base_path: 基础路径 target_path: 目标路径 Source code func write_to_files() Description: 输出文件 Arguments: file_data: 文件数据 相...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/api/mkdoc.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/api/mkdoc.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.mkdoc"}],["meta",{"property":"og:description","content":"func get_relative_path() -> str Description: 获取相对路径 Arguments: base_path: 基础路径 target_path: 目标路径 Source code func write_to_files() Description: 输出文件 Arguments: file_data: 文件数据 相..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.mkdoc\\",\\"image\\":[\\"\\"],\\"dateModified\\":null,\\"author\\":[]}"]]},"headers":[{"level":3,"title":"func get_relative_path() -> str","slug":"func-get-relative-path-str","link":"#func-get-relative-path-str","children":[]},{"level":3,"title":"func write_to_files()","slug":"func-write-to-files","link":"#func-write-to-files","children":[]},{"level":3,"title":"func get_file_list()","slug":"func-get-file-list","link":"#func-get-file-list","children":[]},{"level":3,"title":"func get_module_info_normal(file_path: str = True) -> ModuleInfo","slug":"func-get-module-info-normal-file-path-str-true-moduleinfo
|