Python模块依赖分析工具
项目描述
modulegraph
modulegraph通过字节码分析导入语句,主要确定Python模块之间的依赖关系图。
modulegraph使用与标准库中的modulefinder类似的方法,但使用更灵活的内部表示,对特殊情况有更广泛的知识,并且是可扩展的。
CI状态
项目链接
发布历史
版本 0.19.6
- 实际上引入了Python 3.12支持 - 以前的支持是在一个之前安装了早期alpha版本且未清理的安装上测试的,导致无法删除所有对imp模块的使用。 
0.19.5
- 唉..实际上修复了2.7支持 - (代码清理破坏了0.19.4中的PR) 
0.19.4
- 修复损坏的Python 2.7支持 - 由Josua Root提出的PR 
- 初始支持Python 3.12 - 支持Python 3.12的更改有些粗糙,测试通过,但我不是100%确信更改是正确的。 
0.19.3
- 修复与Python 3.11的兼容性问题 
0.19.2
- 修复PyPI侧边栏中的项目链接 
0.19.1
- 在包元数据中明确提及对Python 3.10的支持 
0.19
- 修复当包__init__是扩展时路径错误的问题 
0.18
- 避免在“packages”中的某个项不是包时抛出异常(modulegraph.find_modules.find_needed_modules) 
- #45: Modulegraph.foldReferences() 调用了错误的方法 - 由Anthony Foglia报告。 
0.17
- Python 3.7中对.pyc格式进行了一些小的更改 
0.16
特性
- 将LICENSE文件添加到分发中 
- 不要依赖pkg_resources来计算包版本 
- 将使用optparse替换为argparse,因为前者已弃用 - 由htgoebel修复 
- 尝试减少创建ModuleGraph所需的最大递归次数 
- 不要将文件类型包含在zipio.getmode的结果中 
- 修复ModuleGraph调试输出中不一致的缩进/缩进问题 - 由codewarrior0修复 
错误修复
- 测试套件现在在Windows上通过(通过appveyor进行测试d) - 这只需要更改测试套件中的平台依赖项。 
0.15
特性
- 问题#39:编译异步函数时出现语法错误时的回溯 - 在Python 3.5中,一些(无效)的异步函数定义会导致modulegraph回溯,而不是向图中添加“InvalidSourceModule”节点。 
- 问题#40:现在图中包含类型为“InvalidRelativeImport”的节点,用于尝试使用超出顶级包的相对导入。 
- 模块modulegraph.find_modules不能再作为脚本使用,请使用python -m modulegraph代替。 
错误修复
- 问题38:Python 3中的Dot输出损坏 - 在bitbucket上由用户elnuno修复。 
- 问题36:确保测试套件在其他系统上也能工作,而不仅仅是macOS - 由Hartmut Goebel修复 
- 将“async def”添加到AST扫描器中,以正确识别异步函数定义中的导入。 
0.14
错误修复
- #33:在Python 3.4或更高版本上扫描字节码时出错 - 使用dis.get_instructions在Python 3.4或更高版本上扫描字节码的代码没有正常工作,导致在尝试扫描字节码时出现问题。 
0.13
- Thomas Kluyver进行了各种文档修复。 
- 修复与setuptools最近版本的兼容性问题 - 有关更多信息,请参阅py2app跟踪器中的问题#206。 
- Python 3:在编译输入文件时忽略文件开头的BOM。 - 这与CPython的行为相匹配,并避免了难以诊断的问题。有关更多信息,请参阅py2app跟踪器中的问题#178 
- Python 3.6引入了新的字节码格式(wordcode),调整字节码扫描器以适应。 
0.12.1
- 问题#25:复杂的Python文件可能由于使用基于堆栈的递归遍历模块AST而导致“最大递归深度超出”异常。 
0.12
- 添加了‘modulegraph.modulegraph.InvalidSourceModule’。此图节点用于无法编译的Python源模块(例如,因为它们包含语法错误)。 - 这主要用于能够为具有python 2.x或python 3.x兼容性的包创建图,这些包在包含无效“其他”Python版本代码的单独模块中。 
- 添加了‘modulegraph.modulegraph.InvalidCompiledModule’。此图节点用于无法加载的Python字节码模块。 
- 添加了‘modulegraph.modulegraph.NamespacePackage’。 - 由bitbucket用户htgoebel修复。 
- 当使用‘from collections import defaultdict’时,不再将MissingModule节点添加到图中的‘collections.defaultdict’(‘collections.defaultdict’是‘collections’的属性,而不是子模块)。 
- 修复了ModuleGraph.getReferences()中的拼写错误 
- 添加了ModuleGraph.getReferers(tonode)方法。此方法返回引用tonode(即getReferences的逆操作)的节点。 
- 在Python模块中使用‘from … import name’导入全局变量时,图表将不再包含MissingModule节点。 - 对于C扩展中的全局变量以及当‘missing’本身是MissingModule时,仍会有MissingModule节点。 
- 问题#18:不要假设PEP 302加载器对象有一个path属性。该属性没有文档记载,且并不总是存在。 
0.11.2
0.11.1
- 问题#145:不要排除平台特定的‘path’模块(如ntpath)。 
0.11
这是一个特性发布版本。
特性
- 在email模块中硬编码关于兼容性别名的知识(对于Python 2.5至3.0)。 - 这使得从py2app中删除一个强制性的食谱成为可能。 
- 添加了modegraph.zipio.getmode以获取文件的Unix文件模式。 
- 为modulegraph.modulegraph.ModuleGraph添加了一些实用方法。 
0.10.5
这是一个错误修复版本。
- 在modulegraph.find_modules.parse_mf_results中,不要查看文件扩展名来决定文件类型,而是使用项的类。 
- 问题#13:改进了处理错误的相对导入(如“from .foo import bar”),这些导入通常会引发令人困惑的错误,现在它们像任何其他失败的导入一样被处理。 
0.10.4
这是一个错误修复版本。
- 由于setup.py中的错误,包元数据中没有‘分类器’。 
0.10.3
这是一个错误修复版本。
错误修复
- 当py2app模块的主脚本没有以‘.py’结尾的文件名时,modulegraph.find.modules.parse_mf_results失败。 
0.10.2
这是一个错误修复版本。
错误修复
- 问题#12:由于使用了错误的方法,modulegraph有时会找到错误的包__init__模块。一个简单的复现问题的方法是拥有一个名为__init__的顶级模块。 - 由Kentzo报告。 
0.10.1
这是一个错误修复版本。
错误修复
- 问题#11:由于使用了在该版本Python中不可用的API,从modulegraphs创建xrefs和dotty图表(py2app的–xref和–graph选项)在Python 3中不起作用。 - 由Andrew Barnert报告。 
0.10
这是一个小特性发布版本。
特性
- modulegraph.find_modules.find_needed_modules声称会自动将子包包含在“packages”参数中,但该代码根本不起作用。 
- 问题#9:modulegraph脚本已弃用,请使用“python -mmodulegraph”代替。 
- 问题#10:确保“zipio.open”的结果可以在with语句中使用(即with zipio.open(...) as fp)。 
- 不再使用“2to3”来支持Python 3。 - 因此,modulegraph现在支持Python 2.6及以后的版本。 
- 略微改进了HTML输出,这使得使用JavaScript操作生成的HTML变得更容易。 - 由anatoly techtonik提供的补丁。 
- 确保modulegraph与Python 3.3b1之后引入的更改兼容。 
- 在Python 3.3中实现对PEP 420(“隐式命名空间包”)的支持。 
- modulegraph.util.imp_walk已弃用,将在该软件包的下一个版本中删除。 
错误修复
- 当子包包含子模块的导入语句时,模块图不完整,并且在过程中生成错误的警告。 - 例如,sqlalchemy.util,该软件包的__init__.py文件包含使用经典相对导入语法(即import compat来导入sqlalchemy.util.compat)的模块导入。在此版本之前,modulegraph搜索错误的路径来定位这些模块(因此找不到它们)。 
0.9.2
这是一个错误修复版本。
错误修复
- modulegraph.find_modules.find_modules的“packages”选项忽略了搜索路径参数,但始终使用默认搜索路径。 
- modulegraph.util中的“imp_find_modules”函数有一个名为“path”的参数,在先前版本中它是字符串,现在也可以是序列。 
- 当包含在‘includes’列表中的模块不存在时,不要崩溃,但像处理缺少的‘packages’一样警告(modulegraph.find_modules.find_modules)。 
0.9.1
这是一个错误修复版本。
错误修复
- 修复了在包中节点导入名称的问题,其中点分名称的第一个元素可以找到,但其余元素不能。这曾导致在全局命名空间中创建一个MissingModule节点,而不是相对于包。 - 也就是说,给定一个包含子模块“sub”的包“pkg”,如果“pkg”的“__init__.py”包含“import sub.nomod”,我们现在为“pkg.sub.nomod”创建一个MissingModule节点,而不是“sub.nomod”。 - 这解决了Brendan Simon在pythonmac-sig邮件列表上首次报告的包含crcmod包到应用程序包中的问题。 
0.9
这是一个小特性发布版本。
特性
- 现在使用sphinx生成文档,可以在<http://packages.python.org/modulegraph>查看。 - 目前的文档非常粗糙,需要重新组织和语言清理。我主要是通过阅读代码和记录它做了什么来编写当前版本,因此类和方法记录的顺序不一定是最有用的。 
- 仓库已迁移至bitbucket。 
- 将modulegraph.modulegraph.AddPackagePath重命名为addPackagePath,同样,ReplacePackage现在为replacePackage。旧名称仍然可用,但已弃用,将在1.0版本发布前删除。 
- modulegraph.modulegraph包含两种未使用且语义不明确的节点类型:FlatPackage和ArchiveModule。这些节点类型已弃用,将在1.0版本发布前删除。 
- 添加了一个简单的命令行工具(modulegraph),可以打印脚本依赖图的详细信息。 
- 添加了一个模块(zipio),用于处理可能引用zip文件内条目(如指向zip egg文件中模块的源路径)的路径。 - 在此添加后,modulegraph.modulegraph.os_listdir已弃用,将在1.0版本发布前删除。 
错误修复
- 当比较的对象不是Node时,Node的__cmp__方法不再引发异常。由Ivan Kozik补丁。 
- 问题#1:当路径(sys.path)上的条目实际不存在时,modulegraph.ModuleGraph的初始化器会引发异常。 - 由“skurylo”修复,由Ronald提供测试用例。 
- 代码不再与python 2.5兼容,此版本修复了此问题。 
- 由于切换到mercurial,setuptools将不再包含所有必需的文件。通过添加MANIFEST.in文件修复。 
- 打印.dot表示的ModuleGraph的方法再次工作。 
0.8.1
这是一个小特性发布版本。
特性
- 现在支持from __future__ import absolute_import。 
- 现在支持相对导入(from . import module)。 
- 当使用选项--single-version-externally-managed安装时,添加了对命名空间包的支持(setuptools/distribute的一部分)。 
0.8
这是一个小特性发布版本。
特性
- 对Python 3.x的初始支持。 
- 现在可以使用python setup.py test运行测试套件。 - (实际的测试套件仍然相当有限) 
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
modulegraph-0.19.6.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | c914c8c95a0e10fe88505d4e9c2284b4e3dbc70943e306cc6567e36cc541bf4b | |
| MD5 | fe73bbd9e3912fe7e46750e09733cf69 | |
| BLAKE2b-256 | 127a7d1ef5824553c960b441b937dd26a0f99ea04a8c29a5ed099b7c06e9ef61 | 
modulegraph-0.19.6-py2.py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5443e6d93c0b263f4ea309e2ff01312eef7c424dd51981a1e78e960c90e572b8 | |
| MD5 | 3ff6c41ce61ce3755c72751d7a6777ce | |
| BLAKE2b-256 | cee2f4e1bb5b49ca5521f86309554cebb1ce61290e2d813cd397946b3b354c13 |