app/assets/mkdoc.html-jbMCr2yh.js

168 lines
73 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as n,o as s,c as a,e as t}from"./app-BiKNfxRB.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() -&gt; str</code></span></a></h3><p><strong>说明</strong>: 获取相对路径</p><p><strong>参数</strong>:</p><blockquote><ul><li>base_path: 基础路径</li><li>target_path: 目标路径</li></ul></blockquote><details><summary><b>源代码</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">&gt;</span> <span class="token builtin">str</span><span class="token punctuation">:</span>
<span class="token triple-quoted-string string">&quot;&quot;&quot;
获取相对路径
Args:
base_path: 基础路径
target_path: 目标路径
&quot;&quot;&quot;</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>
</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>说明</strong>: 输出文件</p><p><strong>参数</strong>:</p><blockquote><ul><li>file_data: 文件数据 相对路径</li></ul></blockquote><details><summary><b>源代码</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>
<span class="token triple-quoted-string string">&quot;&quot;&quot;
输出文件
Args:
file_data: 文件数据 相对路径
&quot;&quot;&quot;</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">&#39;w&#39;</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">&#39;utf-8&#39;</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>
</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>源代码</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>
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">&#39;.py&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;.pyi&#39;</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
</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) -&gt; ModuleInfo</code></span></a></h3><p><strong>说明</strong>: 获取函数和类</p><p><strong>参数</strong>:</p><blockquote><ul><li>file_path: Python 文件路径</li><li>ignore_private: 忽略私有函数和类</li></ul></blockquote><p><strong>返回</strong>: 模块信息</p><details><summary><b>源代码</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">&gt;</span> ModuleInfo<span class="token punctuation">:</span>
<span class="token triple-quoted-string string">&quot;&quot;&quot;
获取函数和类
Args:
file_path: Python 文件路径
ignore_private: 忽略私有函数和类
Returns:
模块信息
&quot;&quot;&quot;</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">&#39;r&#39;</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">&#39;utf-8&#39;</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">&#39;.&#39;</span><span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">&#39;.py&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;&#39;</span><span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">&#39;.pyi&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;&#39;</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">&#39;&#39;</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">&#39;_&#39;</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">&#39;self&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;cls&#39;</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">&#39;None&#39;</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">&#39;&#39;</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">&#39;&#39;</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">&#39;_&#39;</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">&#39;__init__&#39;</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">&#39;staticmethod&#39;</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">&#39;classmethod&#39;</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">&#39;property&#39;</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">&#39;None&#39;</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">&#39;&#39;</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">&#39;_&#39;</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
</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 = &#39;zh-CN&#39;) -&gt; str</code></span></a></h3><p><strong>说明</strong>: 生成模块的Markdown 你可在此自定义生成的Markdown格式</p><p><strong>参数</strong>:</p><blockquote><ul><li>module_info: 模块信息</li><li>front_matter: 自定义选项title, index, icon, category</li><li>lang: 语言</li></ul></blockquote><p><strong>返回</strong>: Markdown 字符串</p><details><summary><b>源代码</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">&#39;zh-CN&#39;</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token builtin">str</span><span class="token punctuation">:</span>
<span class="token triple-quoted-string string">&quot;&quot;&quot;
生成模块的Markdown
你可在此自定义生成的Markdown格式
Args:
module_info: 模块信息
front_matter: 自定义选项title, index, icon, category
lang: 语言
Returns:
Markdown 字符串
&quot;&quot;&quot;</span>
content <span class="token operator">=</span> <span class="token string">&#39;&#39;</span>
front_matter <span class="token operator">=</span> <span class="token string">&#39;---\\n&#39;</span> <span class="token operator">+</span> <span class="token string">&#39;\\n&#39;</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&#39;</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">&#39;</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">&#39;\\n---\\n\\n&#39;</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&#39;</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">&#39;</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&quot;### ***</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">&#39;async &#39;</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">&#39;&#39;</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">&#39;, &#39;</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">) -&gt; </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&quot;</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">&#39;\\n&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;\\n\\n&#39;</span><span class="token punctuation">)</span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;</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&#39;</span></span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;&lt;details&gt;\\n&lt;summary&gt;源代码&lt;/summary&gt;\\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&lt;/details&gt;\\n\\n&#39;</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&quot;(</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token string">&#39;, &#39;</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">)&quot;</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">&#39;&#39;</span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;### ***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&#39;</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&#39;### ***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&#39;</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">&#39;\\n&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;\\n\\n&#39;</span><span class="token punctuation">)</span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;</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&#39;</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&#39;</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">&#39;</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&#39;### &amp;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&#39;</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&#39;</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">&#39;</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">&#39;self&#39;</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&quot;### &amp;emsp; ***</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">&#39;async &#39;</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">&#39;&#39;</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">&#39;, &#39;</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">) -&gt; </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&quot;</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">&#39;\\n&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;\\n\\n&#39;</span><span class="token punctuation">)</span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;&amp;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&#39;</span></span>
<span class="token keyword">if</span> lang <span class="token operator">==</span> <span class="token string">&#39;zh-CN&#39;</span><span class="token punctuation">:</span>
TEXT_SOURCE_CODE <span class="token operator">=</span> <span class="token string">&#39;源代码&#39;</span>
<span class="token keyword">else</span><span class="token punctuation">:</span>
TEXT_SOURCE_CODE <span class="token operator">=</span> <span class="token string">&#39;Source Code&#39;</span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;&lt;details&gt;\\n&lt;summary&gt;</span><span class="token interpolation"><span class="token punctuation">{</span>TEXT_SOURCE_CODE<span class="token punctuation">}</span></span><span class="token string">&lt;/summary&gt;\\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&lt;/details&gt;\\n\\n&#39;</span></span>
<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&#39;### &amp;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&#39;</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&#39;### ***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&#39;</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&#39;### ***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&#39;</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">&#39;\\n&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;\\n\\n&#39;</span><span class="token punctuation">)</span>
content <span class="token operator">+=</span> <span class="token string-interpolation"><span class="token string">f&#39;</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&#39;</span></span>
<span class="token keyword">return</span> content
</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 = &#39;zh-CN&#39;, with_top: bool = None)</code></span></a></h3><p><strong>说明</strong>: 生成文档</p><p><strong>参数</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>源代码</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">&#39;zh-CN&#39;</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>
<span class="token triple-quoted-string string">&quot;&quot;&quot;
生成文档
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: 忽略的路径
lang: 语言
&quot;&quot;&quot;</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">&#39;__init__&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;README&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;.py&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;.md&#39;</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">&#39;\\\\&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;/&#39;</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">&#39;\\\\&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;/&#39;</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">&#39;README&#39;</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">&#39;title&#39;</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">&#39;.__init__&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;&#39;</span><span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">&#39;_&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;\\\\n&#39;</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">&#39;index&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;true&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;icon&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;laptop-code&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;category&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;API&#39;</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">&#39;title&#39;</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">&#39;_&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;\\\\n&#39;</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">&#39;order&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;1&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;icon&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;laptop-code&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;category&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;API&#39;</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&#39;Generate </span><span class="token interpolation"><span class="token punctuation">{</span>pyfile_path<span class="token punctuation">}</span></span><span class="token string"> -&gt; </span><span class="token interpolation"><span class="token punctuation">{</span>abs_md_path<span class="token punctuation">}</span></span><span class="token string">&#39;</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>
</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><h3 id="var-no-module-name-pyfile-path-get-relative-path-module-folder-pyfile-path" tabindex="-1"><a class="header-anchor" href="#var-no-module-name-pyfile-path-get-relative-path-module-folder-pyfile-path"><span><em><strong>var</strong></em> <code>no_module_name_pyfile_path = get_relative_path(module_folder, pyfile_path)</code></span></a></h3><ul><li><strong>说明</strong>: 去头路径</li></ul>`,36),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":"/dev/api/mkdoc.html","title":"liteyuki.mkdoc","lang":"zh-CN","frontmatter":{"title":"liteyuki.mkdoc","description":"func get_relative_path() -> str 说明: 获取相对路径 参数: base_path: 基础路径 target_path: 目标路径 源代码 func write_to_files() 说明: 输出文件 参数: file_data: 文件数据 相对路径 源代码 func get_file_list() 源代码 func ge...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/mkdoc.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/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 说明: 获取相对路径 参数: base_path: 基础路径 target_path: 目标路径 源代码 func write_to_files() 说明: 输出文件 参数: file_data: 文件数据 相对路径 源代码 func get_file_list() 源代码 func ge..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.mkdoc\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"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","link":"#func-get-module-info-normal-file-path-str-true-moduleinfo","children":[]},{"level":3,"title":"func generate_markdown(module_info: ModuleInfo = None, front_matter = 'zh-CN') -> str","slug":"func-generate-markdown-module-info-moduleinfo-none-front-matter-zh-cn-str","link":"#func-generate-markdown-module-info-moduleinfo-none-front-matter-zh-cn-str","children":[]},{"level":3,"title":"func generate_docs(module_folder: str = False, output_dir: str = 'zh-CN', with_top: bool = None)","slug":"func-generate-docs-module-folder-str-false-output-dir-str-zh-cn-with-top-bool-none","link":"#func-generate-docs-module-folder-str-false-output-dir-str-zh-cn-with-top-bool-none","children":[]},{"level":3,"title":"class DefType(Enum)","slug":"class-deftype-enum","link":"#class-deftype-enum","children":[]},{"level":3,"title":"class FunctionInfo(BaseModel)","slug":"class-functioninfo-basemodel","link":"#class-functioninfo-basemodel","children":[]},{"level":3,"title":"class AttributeInfo(BaseModel)","slug":"class-attributeinfo-basemodel","link":"#class-attributeinfo-basemodel","children":[]},{"level":3,"title":"class ClassInfo(BaseModel)","slug":"class-classinfo-basemodel","link":"#class-classinfo-basemodel","children":[]},{"level":3,"title":"class ModuleInfo(BaseModel)","slug":"class-moduleinfo-basemodel","link":"#class-moduleinfo-basemodel","children":[]},{"level":3,"title":"var no_module_name_pyfile_path = get_relative_path(module_folder, pyfile_path)","slug":"var-no-module-name-pyfile-path-get-relative-path-module-folder-pyfile-path","link":"#var-no-module-name-pyfile-path-get-relative-path-module-folder-pyfile-path","children":[]}],"git":{"createdTime":1724034253000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":3}]},"readingTime":{"minutes":4.14,"words":1241},"filePathRelative":"dev/api/mkdoc.md","localizedDate":"2024年8月19日","autoDesc":true}`);export{k as comp,r as data};