跳转到主要内容

构建一个可查询的Python包内部导入的图。

项目描述

https://img.shields.io/pypi/v/grimp.svg Python versions CI Status

构建一个可查询的Python包内部导入的图。

  • 免费软件:BSD许可证

快速开始

安装grimp

pip install grimp

安装您要分析的一个Python包

pip install somepackage

在Python中,构建包的导入图

>>> import grimp
>>> graph = grimp.build_graph('somepackage')

现在您可以使用图对象来分析包。一些示例

>>> graph.find_children('somepackage.foo')
{
    'somepackage.foo.one',
    'somepackage.foo.two',
}

>>> graph.find_descendants('somepackage.foo')
{
    'somepackage.foo.one',
    'somepackage.foo.two',
    'somepackage.foo.two.blue',
    'somepackage.foo.two.green',
}

>>> graph.find_modules_directly_imported_by('somepackage.foo')
{
    'somepackage.bar.one',
}

>>> graph.find_upstream_modules('somepackage.foo')
{
    'somepackage.bar.one',
    'somepackage.baz',
    'somepackage.foobar',
}

>>> graph.find_shortest_chain(importer='somepackage.foobar', imported='somepackage.foo')
(
    'somepackage.foobar',
    'somepackage.baz',
    'somepackage.foo',
)

>>> graph.get_import_details(importer='somepackage.foobar', imported='somepackage.baz'))
[
    {
        'importer': 'somepackage.foobar',
        'imported': 'somepackage.baz',
        'line_number': 5,
        'line_contents': 'from . import baz',
    },
]

外部包

默认情况下,外部依赖项将不会包含在内。这可以通过以下方式覆盖

>>> graph = grimp.build_graph('somepackage', include_external_packages=True)
>>> graph.find_modules_directly_imported_by('somepackage.foo')
{
    'somepackage.bar.one',
    'os',
    'decimal',
    'sqlalchemy',
}

多个包

您可以分析多个根包。为此,将每个包名作为位置参数传递

>>> graph = grimp.build_graph('somepackage', 'anotherpackage')
>>> graph.find_modules_directly_imported_by('somepackage.foo')
{
    'somepackage.bar.one',
    'anotherpackage.baz',
}

命名空间包

也可以从部分 命名空间包构建图。为此,提供部分名称,而不是命名空间名称

>>> graph = grimp.build_graph('somenamespace.foo')

什么是命名空间包?

命名空间包是Python的一项特性,它允许子包独立分发,同时仍然可以在共享的命名空间下导入。例如,Google Cloud Logging API的Python客户端就使用了这项特性。安装后,可以在Python中以google.cloud.logging的方式导入。父包googlegoogle.cloud都是命名空间包,而google.cloud.logging被称为‘部分’。同一命名空间中的其他部分可以单独安装,例如google.cloud.secretmanager

Grimp期望传递给build_graph的包名是部分,而不是命名空间包。因此,在上述示例中,应按如下方式构建图

>>> graph = grimp.build_graph('google.cloud.logging')

如果传递了命名空间包(例如,grimp.build_graph('google.cloud')),Grimp将引发NamespacePackageEncountered异常。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分发

grimp-3.4.1.tar.gz (833.8 kB 查看哈希值)

上传时间

构建分发

grimp-3.4.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl (568.7 kB 查看哈希值)

上传时间 PyPy musllinux: musl 1.2+ x86-64

grimp-3.4.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl (591.8 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ i686

grimp-3.4.1-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl (668.3 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl (582.1 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ ARM64

grimp-3.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (398.9 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

grimp-3.4.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (446.2 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ s390x

grimp-3.4.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (440.9 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (417.9 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686

grimp-3.4.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (406.6 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (405.4 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

grimp-3.4.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl (569.0 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ x86-64

grimp-3.4.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl (592.7 kB 查看哈希值)

上传时间: PyPy musllinux: musl 1.2+ i686

grimp-3.4.1-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl (669.6 kB 查看哈希值)

上传时间: PyPy musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl (582.5 kB 查看哈希值)

上传时间: PyPy musllinux: musl 1.2+ ARM64

grimp-3.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (399.6 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

grimp-3.4.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (447.1 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ s390x

grimp-3.4.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (441.6 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (419.0 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ i686

grimp-3.4.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (407.6 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (405.9 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ARM64

grimp-3.4.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl (569.4 kB 查看哈希值)

上传时间: PyPy musllinux: musl 1.2+ x86-64

grimp-3.4.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl (592.9 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ i686

grimp-3.4.1-pp38-pypy38_pp73-musllinux_1_2_armv7l.whl (669.3 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl (582.7 kB 查看哈希值)

上传于 PyPy musllinux: musl 1.2+ ARM64

grimp-3.4.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (447.2 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ s390x

grimp-3.4.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (441.9 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (407.4 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (406.0 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

grimp-3.4.1-cp313-none-win_amd64.whl (239.0 kB 查看哈希值)

上传于 CPython 3.13 Windows x86-64

grimp-3.4.1-cp313-none-win32.whl (228.8 kB 查看哈希值)

上传于 CPython 3.13 Windows x86

grimp-3.4.1-cp312-none-win_amd64.whl (239.3 kB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

grimp-3.4.1-cp312-none-win32.whl (229.1 kB 查看哈希值)

上传于 CPython 3.12 Windows x86

grimp-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl (566.4 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ x86_64

grimp-3.4.1-cp312-cp312-musllinux_1_2_i686.whl (589.9 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ i686

grimp-3.4.1-cp312-cp312-musllinux_1_2_armv7l.whl (666.9 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl (579.8 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ ARM64

grimp-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (396.1 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86_64

grimp-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (445.1 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ s390x

grimp-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (439.7 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (415.7 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ i686

grimp-3.4.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (405.7 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.4 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

grimp-3.4.1-cp312-cp312-macosx_11_0_arm64.whl (345.0 kB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

grimp-3.4.1-cp312-cp312-macosx_10_12_x86_64.whl (350.9 kB 查看哈希值)

上传于 CPython 3.12 macOS 10.12+ x86-64

grimp-3.4.1-cp311-none-win_amd64.whl (240.2 kB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

grimp-3.4.1-cp311-none-win32.whl (229.1 kB 查看哈希值)

上传于 CPython 3.11 Windows x86

grimp-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl (566.8 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ x86-64

grimp-3.4.1-cp311-cp311-musllinux_1_2_i686.whl (589.5 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ i686

grimp-3.4.1-cp311-cp311-musllinux_1_2_armv7l.whl (666.0 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl (580.0 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ ARM64

grimp-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (396.4 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

grimp-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (443.1 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ s390x

grimp-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (438.9 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (415.9 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686

grimp-3.4.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (405.2 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.4 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

grimp-3.4.1-cp311-cp311-macosx_11_0_arm64.whl (345.0 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

grimp-3.4.1-cp311-cp311-macosx_10_12_x86_64.whl (351.4 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.12+ x86-64

grimp-3.4.1-cp310-none-win_amd64.whl (240.1 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

grimp-3.4.1-cp310-none-win32.whl (229.1 kB 查看哈希值)

上传于 CPython 3.10 Windows x86

grimp-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl (566.9 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

grimp-3.4.1-cp310-cp310-musllinux_1_2_i686.whl (589.5 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ i686

grimp-3.4.1-cp310-cp310-musllinux_1_2_armv7l.whl (666.0 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl (580.0 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ ARM64

grimp-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (396.6 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

grimp-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (443.6 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ s390x

grimp-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (438.8 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (415.9 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686

grimp-3.4.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (405.2 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.6 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

grimp-3.4.1-cp310-cp310-macosx_11_0_arm64.whl (345.1 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

grimp-3.4.1-cp310-cp310-macosx_10_12_x86_64.whl (351.4 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.12+ x86-64

grimp-3.4.1-cp39-none-win_amd64.whl (240.1 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

grimp-3.4.1-cp39-none-win32.whl (229.2 kB 查看哈希值)

上传于 CPython 3.9 Windows x86

grimp-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl (566.5 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ x86-64

grimp-3.4.1-cp39-cp39-musllinux_1_2_i686.whl (589.6 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ i686

grimp-3.4.1-cp39-cp39-musllinux_1_2_armv7l.whl (666.3 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl (579.6 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ ARM64

grimp-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (396.5 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

grimp-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (443.4 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ s390x

grimp-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (438.7 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (415.7 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686

grimp-3.4.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (404.7 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.6 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

grimp-3.4.1-cp39-cp39-macosx_11_0_arm64.whl (345.2 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

grimp-3.4.1-cp39-cp39-macosx_10_12_x86_64.whl (351.3 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.12+ x86-64

grimp-3.4.1-cp38-none-win_amd64.whl (239.9 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

grimp-3.4.1-cp38-none-win32.whl (229.1 kB 查看哈希值)

上传于 CPython 3.8 Windows x86

grimp-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl (566.3 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ x86-64

grimp-3.4.1-cp38-cp38-musllinux_1_2_i686.whl (589.6 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ i686

grimp-3.4.1-cp38-cp38-musllinux_1_2_armv7l.whl (666.1 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ ARMv7l

grimp-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl (579.4 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ ARM64

grimp-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (396.3 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

grimp-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (442.9 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ s390x

grimp-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (438.4 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ppc64le

grimp-3.4.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (415.5 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ i686

grimp-3.4.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (404.7 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARMv7l

grimp-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.1 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

grimp-3.4.1-cp38-cp38-macosx_11_0_arm64.whl (345.0 kB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

grimp-3.4.1-cp38-cp38-macosx_10_12_x86_64.whl (351.0 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.12+ x86-64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面