find python module imports
Project description
import_deps
Find python module's import dependencies.
import_deps
is based on ast module from standard library,
so the modules being analysed are not executed.
Install
pip install import_deps
Usage
import_deps
is designed to track only imports within a known set of package and modules.
Given a package with the modules:
foo/__init__.py
foo/foo_a.py
foo/foo_b.py
foo/foo_c.py
Where foo_a.py
has the following imports:
from . import foo_b
from .foo_c import obj_c
Usage (CLI)
> import_deps foo/foo_a.py
foo.foo_b
foo.foo_c
Usage (lib)
import pathlib
from import_deps import ModuleSet
# First initialise a ModuleSet instance with a list str of modules to track
pkg_paths = pathlib.Path('foo').glob('**/*.py')
module_set = ModuleSet([str(p) for p in pkg_paths])
# then you can get the set of imports
for imported in module_set.mod_imports('foo.foo_a'):
print(imported)
# foo.foo_c
# foo.foo_b
ModuleSet
You can get a list of all modules in a ModuleSet
by path or module's full qualified name.
by_path
Note that key for by_path
must be exactly the as provided on ModuleSet initialization.
for mod in sorted(module_set.by_path.keys()):
print(mod)
# results in:
# foo/__init__.py
# foo/foo_a.py
# foo/foo_b.py
# foo/foo_c.py
by_name
for mod in sorted(module_set.by_name.keys()):
print(mod)
# results in:
# foo.__init__
# foo.foo_a
# foo.foo_b
# foo.foo_c
ast_imports(file_path)
ast_imports
is a low level function that returns a list of entries for import statement in the module.
The parameter file_path
can be a string or pathlib.Path
instance.
The return value is a list of 4-tuple items with values:
- module name (of the "from" statement,
None
if a plainimport
) - object name
- as name
- level of relative import (number of parent,
None
if plainimport
)
from import_deps import ast_imports
ast_imports('foo.py')
# import datetime
(None, 'datetime', None, None)
# from datetime import time
('datetime', 'time', None, 0)
# from datetime import datetime as dt
('datetime', 'datetime', 'dt', 0)
# from .. import bar
(None, 'bar', None, 2)
# from .acme import baz
('acme', 'baz', None, 1)
# note that a single statement will contain one entry per imported "name"
# from datetime import time, timedelta
('datetime', 'time', None, 0)
('datetime', 'timedelta', None, 0)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file import_deps-0.3.0.tar.gz
.
File metadata
- Download URL: import_deps-0.3.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 542544c69a435517dc8e556d0030044f49f2e61fff11ab8c2c612ac56ff62705 |
|
MD5 | 88014ad8fd04f08305797d70322ce7ae |
|
BLAKE2b-256 | 210c487690243f9d792c7d1cfdcbc971e21b901140c367729ae83e17d08242ae |
File details
Details for the file import_deps-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: import_deps-0.3.0-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4619659d57b8d5426177de7b98748a04446dc756c18544d8d75afda33bb0b008 |
|
MD5 | 9215c4c67cf58a79afad1ff72596db35 |
|
BLAKE2b-256 | 02ea8461a8fc157df724d56c7f0cce8d86af130bcb5e99622af2d3e6ceeca74f |