1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
import atexit
import functools
from poetry_dynamic_versioning import (
_revert_version,
_get_and_apply_version,
_get_config_from_path,
_get_pyproject_path_from_poetry,
_state,
)
def _patch_poetry_create(factory_mod) -> None:
try:
from poetry.core.constraints.version import Version as PoetryVersion
except ImportError:
from poetry.core.semver.version import Version as PoetryVersion
original_poetry_create = getattr(factory_mod, "Factory").create_poetry
@functools.wraps(original_poetry_create)
def alt_poetry_create(cls, *args, **kwargs):
instance = original_poetry_create(cls, *args, **kwargs)
if not _state.cli_mode:
name = _get_and_apply_version(
pyproject_path=_get_pyproject_path_from_poetry(instance.pyproject),
)
if name:
version = _state.projects[name].version
instance._package._version = PoetryVersion.parse(version)
instance._package._pretty_version = version
return instance
getattr(factory_mod, "Factory").create_poetry = alt_poetry_create
def _apply_patches() -> None:
if not _state.patched_core_poetry_create:
from poetry.core import factory as factory_mod
_patch_poetry_create(factory_mod)
_state.patched_core_poetry_create = True
def activate() -> None:
config = _get_config_from_path()
if not config["enable"]:
return
_apply_patches()
atexit.register(deactivate)
def deactivate() -> None:
if not _state.cli_mode:
_revert_version()
|