Manage optional requirements and their versions at runtime
Project description
optional_requirements
Manage optional requirements and their versions at runtime.
Examples
Managing requirements specified in a file
If you have a requirements
file in your package (it must be included when installing the package), you can it to
manage optional dependencies.
The find_requirements_file
function will start at the given path and search for a file matching the given name,
climbing up the directory tree until it finds a match or it goes out of a Python package (i.e., it no longer sees an
__init__.py
file.).
from pathlib import Path
from optional_requirements import (
Requirements,
parse_requirements_file,
find_requirements_file,
IncompatibleRequirementError,
MissingRequirementError
)
r = Requirements(requirements=parse_requirements_file(
find_requirements_file(
start=Path(__file__),
name="optional-requirements.txt",
)
))
try:
pd = r.try_import(name="pandas", reason="This is required to read a CSV file.")
except IncompatibleRequirementError as e:
# The wrong version is installed.
print(e.current_version)
print(e.required_version)
pass
except MissingRequirementError as e:
# The requirement is not installed.
print(e.required_version)
pass
else:
# Do something with the imported dependency.
df = pd.DataFrame()
pass
Managing requirements as a group in code
from optional_requirements import Requirements
from packaging.requirements import Requirement
r = Requirements(requirements=[Requirement("pandas==2.*"), Requirement("numpy<2")])
r.try_import(name="pandas", reason="This is required to read a CSV file.")
Managing requirements one by one in code
from optional_requirements import try_import_requirement
from packaging.requirements import Requirement
try_import_requirement(requirement=Requirement("numpy<2"), reason="Required for quick maths.")
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
Close
Hashes for optional_requirements-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e40d5d1ac1b94db73570993e796a98e62db4107671c2a01af5effa0adca61ac4 |
|
MD5 | 9bd0dad3171d2b5b52148c122fab8bde |
|
BLAKE2b-256 | 0bf7eb8d2496ba1b454e5957e3a5ab01cfae308bfa0a559493d7bb018da687d9 |
Close
Hashes for optional_requirements-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea216455e398314d233d880873cb0bfbd30b353061b56c08176f743af1ed3102 |
|
MD5 | ab2f1e26c7284c6d2304d091530b5552 |
|
BLAKE2b-256 | 2894b64f2deadf6ee24d1db2d47c93bad2e4bf96c917c876ced93faef8a46719 |