文档提取器。

exdoc的Python项目详细描述


Build StatusPythons

EXDOC

文档提取器。

从代码中提取文档片段以构建可馈送到模板处理器的文档。

输出可以是json、yaml等格式。 使用任何命令行模板引擎(如j2cli)从中呈现模板。

它不做任何自动背景魔术:它只是提供帮助,让你提取必要的片段。

当前支持分析以下文档格式:

收集器

exdoc只是一组将信息收集到字典中的帮助函数。

Python

python对象的帮助程序

doc(obj,of_class=none)

获取作为dict的对象的解析文档。

这包括参数规范,以及从docstring解析的数据。

fromexdocimportdoc

函数doc()只是获取对象的文档,可以是

  • 模块
  • 函数或方法
  • 属性

生成的字典包括参数规范以及解析的docstring:

deff(a,b=1,*args):''' Simple function    : param a: First    : type a: int    : param b: Second    : type b: int    : param args: More numbers    : returns: nothing interesting    : rtype: bool    : raises ValueError: hopeless condition    '''fromexdocimportdocdoc(f)# ->{'module':'__main__','name':'f','qualname':'f',# qualified name: e.g. <class>.<method>'signature':'f(a, b=1, *args)','qsignature':'f(a, b=1, *args)',# qualified signature'doc':'Simple function','clsdoc':'',# doc from the class (used for constructors)# Exceptions'exc':[{'doc':'hopeless condition','name':'ValueError'}],# Return value'ret':{'doc':'nothing interesting','type':'bool'},# Arguments'args':[{'doc':'First','name':'a','type':'int'},{'default':1,'doc':'Second','name':'b','type':'int'},{'doc':'More numbers','name':'*args','type':None}],}

注意:在python 3中,当记录一个类的方法时,将该类作为第二个参数传递给doc()函数:

doc(cls.method,cls)

这是必要的,因为在python3中方法不像以前那样绑定。现在,它们只是功能。

getMembers(obj,*谓词)

将对象的所有成员作为按名称排序的(key, value)元组列表返回。

谓词的可选列表可用于筛选成员。

默认谓词删除名称以“\u”开头的成员。要禁用它,请将None作为第一个谓词传递。

子类(cls,leaves=false)

列出给定类的所有子类,包括它自己。

如果leaves=True,则只返回本身没有子类的类。

炼金术

记录sqlalchemy模型。

fromexdoc.saimportdocdoc(User)# ->{'name':'User',# List of tables the model uses'table':('users',),'doc':'User account',# PK: tuple[str]'primary':('uid',),# Unique keys'unique':(# tuple[str]('login',),),# Foreign keys'foreign':({'key':'uid','target':'users.uid','onupdate':None,'ondelete':'CASCADE'},),# Columns'columns':[{'key':'uid','type':'INTEGER NOT NULL','doc':''},{'key':'login','type':'VARCHAR NULL','doc':'Login'},{'key':'creator_uid','type':'INTEGER NULL','doc':'Creator'},{'key':'meta','type':'JSON NULL','doc':''},],# Relationships'relations':[{'key':'creator','model':'User','target':'User(creator_uid=uid)','doc':''},{'key':'devices[]','model':'Device','target':'Device(uid)','doc':''},{'key':'created[]','model':'User','target':'User(uid=creator_uid)','doc':''},]}

建筑

创建一个python文件,收集必要的信息并打印json:

#! /usr/bin/env pythonfromexdocimportdocimportjsonfromprojectimportUserprintjson.dumps({'user':doc(User),})

然后使用其输出:

./collect.py | j2 --format=json README.md.j2

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我无法从java运行python脚本,我认为这是因为该脚本没有执行权限   Java Http客户端通过POST上传文件   java检查一个枚举对象是否顺序在另一个枚举对象之后?   java MOXy JAXB在XmlIDREF上断开为具有enum属性的类型   java如何在安卓应用程序中集成大地水准面模型计算?   使用Jackson和Hibernate的java多对多无限递归   Java显然是一个传递值,但需要一些澄清   Android Studio Room中带参数的java查询   java我想根据表单中输入的数字更改屏幕转换目的地   java正则表达式:所有格量词中的回溯   java当元素的数量导致在回收器上生成滚动时,如何将一个recyclerView的元素与另一个元素分开?   如何将结果集作为输入从java传递到oracle存储过程   java问答应用程序在最后一个问题中未显示对话框   令牌“{”上的java语法错误,应在该令牌之后切换标签   java我的while循环有什么问题?   java Spring 5 webclient调用没有超时   ArrayList中的java对象不使用泛型保留其类型