文档提取器。

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开始为Android开发应用程序   在哪种情况下,c++/c#namespace方法比Java方法更好?   java重构帮助。。。基于属性的对象还是大量成员字段?   java如何使用jackon json将嵌套对象作为字符串的对象转换为Pojo?   java是流式传输远程日志文件的有效方法   javajackson数据绑定:读入现有对象   java NullPointerException这是如何发生的?   java需要伪代码来进行文本压缩/解压缩   java JMS Websphere消息在发送时丢失   JUnit测试的Java SVNKit模拟单元测试   java Apache Crunch错误   java如何修复Android Studio/SQLite中的“空对象引用”错误?   java文件“navigation.json”在Android Studio项目中找不到   java如何在同一实体类上建立单向的一对一关系?   java调用web服务:javax。网ssl。SSLException:收到致命警报:协议\u版本   java与sql的连接   java Android:通过编程为透明背景图标(png)生成阴影,并在ImageButton中使用