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.

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.4.tar.gz (10.5 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.4-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: phy_imports_resolver-0.1.4.tar.gz
  • Upload date:
  • Size: 10.5 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.4.tar.gz
Algorithm Hash digest
SHA256 9692109b2eb2edb133e8df05409ef7018236c787756080b60828ab3c6405a127
MD5 51327cc627fd3f6463ca10904de5b1ad
BLAKE2b-256 01eba4b807ddc4a5c2925d2262f7ff5c9fb2b9313f0c661e044860487cbebfcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for phy_imports_resolver-0.1.4.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.4-py3-none-any.whl.

File metadata

File hashes

Hashes for phy_imports_resolver-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a6fd7a5c6816eaefaf71d6358e6babda5ca5517d25ab8d211895136a0c595a83
MD5 fb16db445ec7da3519a50904db89ea64
BLAKE2b-256 fe791e92079bdcf00480cbac14185080adb412a888589a048bccd95aa2cf17cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for phy_imports_resolver-0.1.4-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