跳转到主要内容

Python模块依赖分析工具

项目描述

modulegraph

modulegraph通过字节码分析导入语句,主要确定Python模块之间的依赖关系图。

modulegraph使用与标准库中的modulefinder类似的方法,但使用更灵活的内部表示,对特殊情况有更广泛的知识,并且是可扩展的。

CI状态

https://github.com/ronaldoussoren/modulegraph/workflows/Lint/badge.svg https://github.com/ronaldoussoren/modulegraph/workflows/Test/badge.svg

发布历史

版本 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包含两种未使用且语义不明确的节点类型:FlatPackageArchiveModule。这些节点类型已弃用,将在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 (88.1 kB 查看哈希值)

上传时间

构建分布

modulegraph-0.19.6-py2.py3-none-any.whl (34.9 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持