Small utility to define version string for Poetry-style Python project.
Project description
Utility to let you have a single source of version in your code base.
This utility targets modern Python projects which have layout generated by Poetry, with a pyproject.toml file in place of setup.py. With this layout, the project initially has two places to maintain version string: one in pyproject.toml file and one in some *.py file (normally __init__.py):
# pyproject.toml
[tool.poetry]
name = "your-package"
version = "0.1.0"
# your_package/__init__.py
__version__ = "0.1.0"
This duplicity often leads to inconsistency when you, the author, forget to update both.
single-version was born to solve that headache circumstance. By convention, it chooses the pyproject.toml file as original source of version string. Your project’s __version__ variable then is computed from it. When your package is already deployed and installed to some system, the version string will be retrieved from that Python environment (the pyproject.toml is not included in distribution file).
Years ago, to retrieve version for an installed package, people often used pkg_resources, which has well-known issue of causing slow import. Learning from that mistake, single-version use importlib.metadata, which becomes standard from Python 3.8, instead.
Usage
Add single_version as your project dependency:
poetry add single-version
Assume that your package source tree is like this:
. ├── awesome_name │ └── __init__.py ├── pyproject.toml ├── README.rst └── tests/
where the __version__ variable is defined in awesome_name/__init__.py file. The file content can be like this:
from pathlib import Path
from single_version import get_version
__version__ = get_version('awesome_name', Path(__file__).parent.parent)
API Reference
def get_version (package_name: str, looked_path: Path) -> str
package_name: Your package’s name (same as in pyproject.toml file).
looked_path (of pathlib.Path type): Folder where your project’s pyproject.toml resides.
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 single_version-1.6.0.tar.gz
.
File metadata
- Download URL: single_version-1.6.0.tar.gz
- Upload date:
- Size: 3.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.2 Linux/6.2.0-27-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b1fb6e9bd2c88268948d9191c78b63ddd3c07554c1f07cd8a85aedf2486e4fc |
|
MD5 | a35d20c4dd1c652c8bc70af8c58c8fdc |
|
BLAKE2b-256 | a659108dcfe49cde1f7f976445ae0e8c66dc2cdc6114dcfaf664afa8d5702f10 |
File details
Details for the file single_version-1.6.0-py3-none-any.whl
.
File metadata
- Download URL: single_version-1.6.0-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.2 Linux/6.2.0-27-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67a2734e728b9554750e867b33591f3ad9509ccb851bb3047ced7bfe68429ecd |
|
MD5 | ad9018dfeca57375c8c4ed89e8e0cd5a |
|
BLAKE2b-256 | 61b5ffbbc700075f6d07164dea524b81a495689d18a0f6dd44f07c8cdfeb9fb5 |