python-vendorize allows pure-Python dependencies to be vendorized:
that is, the Python source of the dependency is copied into your own package.
Best used for small, pure-Python dependencies to avoid version conflicts
when other packages require a different version of the same dependency.
Dependencies you want vendorizing should be specified in vendorize.toml.
target should be a string containing the path where vendorized dependencies should be placed,
relative to the directory that vendorize.toml is in.
packages should be a list of strings containing the dependencies.
Each of these strings can be anything that pip would understand,
such as a package name, a package name with version constraints or an URL.
Dependencies can then be vendorized using python-vendorize.
For instance, suppose I want to vendorize six so it can be used from the package hello.
The directory structure would be something like:
- hello - __init__.py - setup.py - vendorize.toml
vendorize.toml might look something like:
target = "hello/_vendor"
packages = [
"six",
]
I can then run python-vendorize in the same directory as vendorize.toml.
The directory structure would then be something like:
- hello
- _vendor
- six.dist-info
- ...
- __init__.py
- six.py
- __init__.py
- setup.py
- vendorize.toml
In hello/__init__.py, six can be imported from _vendor:
from ._vendor import sixThe configuration can also be stored in pyproject.toml instead of vendorize.toml.
When using pyproject.toml, the configuration should be stored in [tool.vendorize].
For instance:
[tool.vendorize]
target = "hello/_vendor"
packages = [
"six",
]
pip install vendorize