Skip to main content

Resolve imports of a python file or module, with site packages & builtin modules excluded.

Project description

PHY-imports-resolver

PyPI Python Versions License

Resolve imports of a python file or module recursively, exclude site packages & builtin modules.

This project is part of phy.

Install

If you intend to use this package as a library within your Python project, install it as follows:

pip install phy-imports-resolver

If you plan to use its command-line interface (CLI) to generate graphic diagram, install the cli optional dependencies:

pip install phy-imports-resolver[cli]

How to use

Suppose the layout of your python project is:

src/
├──my_project/
│  ├──file1.py
│  ├──file2.py
│  ├──pkg1.py
│    ├── file3.py
│    └── __init__.py
│  └──__init__.py
└──script1.py

To resolve the imports tree:

  • Firstly you MUST specify a root directory named project_dir to search within; in this case, it is src. If project_dir is not explicitly provided, current directory is used.

  • An entry file path is also required as the start point for the resolver to search from. If you want to resolve from a package instead of a file, use the __init__.py file of the package as the entry file.

In this case, if script1.py is the entry file to resolve, call the resolve(entry_file) method:

import phy_imports_resolver
from pathlib import Path

project_dir = Path('./src')
entry_file = project_dir / 'script1.py'

mod_imports_node = phy_imports_resolver.resolve(entry_file, project_dir)

The result mod_imports_node is a ModuleImportsNode object, which represents a file module or sub package in a hierarchical tree structure of importing relationship. See the definition of ModuleImportsNode:

class ModuleImportsNode:
    def __init__(self, mod, project_dir, imports: List['ModuleImportsNode'], **kwargs):
      ...

where attribute mod stands for the file or package itself, and list attribute imports holds other modules imported to itself.

Recursively iterate the imports attributes of the entry ModuleImportsNode object will given the entire importing relationship tree.

The complete API docs can be found here.

use the CLI

Usage: phy-resolve-imports [OPTIONS] FILE

  Resolve the imports of a python file or module, recursively.

  FILE: path to the entry code file; to resolve package, use path 
        of the `__init__.py` file of the package.

Options:
  -f, --format [xml|png|svg]  Specify the output format  [default: xml]
  -o, --output PATH           Optional output file path.
  --help                      Show this message and exit.

For the CLI, current work directory will be used as the root directory to search within.

API docs

These markdown docs are generated by pydoc-markdown:

pydoc-markdown -I src -m phy_imports_resolver --render-toc > docs/module.md

pydoc-markdown -I src -m phy_imports_resolver.resolver --render-toc > docs/resolver.md

pydoc-markdown -I src -m phy_imports_resolver.types --render-toc > docs/types.md

Reminder

This package DOES NOT support importlib to dynamically import modules, for the module imported by importlib can be variable and thus can only be determined at runtime; otherwise, if the the module imported by importlib is constant string, the developer can absolutely use import statement (non-top-placed) instead.

Develop

Build the package with uv:

uv build

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phy_imports_resolver-0.1.5.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phy_imports_resolver-0.1.5-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file phy_imports_resolver-0.1.5.tar.gz.

File metadata

  • Download URL: phy_imports_resolver-0.1.5.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for phy_imports_resolver-0.1.5.tar.gz
Algorithm Hash digest
SHA256 596bf86f18b3bd4aafcaaeb2e5f024c9fbd457d5e6c31c1afb936752aba987de
MD5 9c3e16e0cb3d30a64968b8c17cabfd6d
BLAKE2b-256 e4941a27e584dd7375ee5537f0a001bfed8c06f72f10c66340be7238d608e471

See more details on using hashes here.

Provenance

The following attestation bundles were made for phy_imports_resolver-0.1.5.tar.gz:

Publisher: python-publish.yml on phy-precompiler/imports-resolver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phy_imports_resolver-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for phy_imports_resolver-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a00625db055a242ce81f5e5268841032eb54f0e311e89ea39f8feb7252770ffe
MD5 487f4bfb15b4e7cf109823d83ad3344c
BLAKE2b-256 9a71dca960f385d611cbea0e6449d644bbf74643fd2dd026386ac00d886f468d

See more details on using hashes here.

Provenance

The following attestation bundles were made for phy_imports_resolver-0.1.5-py3-none-any.whl:

Publisher: python-publish.yml on phy-precompiler/imports-resolver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page