From 9d1ecb2882cfaa7465346f3eca7be482a0f31e5b Mon Sep 17 00:00:00 2001 From: sebthom Date: Fri, 12 Jan 2024 11:05:54 +0100 Subject: [PATCH] improve dynamic version handling --- .gitignore | 3 ++- kleinanzeigen_bot/__init__.py | 3 ++- pdm.lock | 2 +- pyinstaller.spec | 7 +++++-- pyproject.toml | 2 ++ 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 0a4da01..9f31235 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ _LOCAL/ /config.yaml /data /*.log -kleinanzeigen_bot/version.py +kleinanzeigen_bot/_version.py downloaded-ads # python @@ -19,6 +19,7 @@ __pycache__ /.eggs /*.egg-info /.mypy_cache +/.pdm-build/ /.pdm-python # Eclipse diff --git a/kleinanzeigen_bot/__init__.py b/kleinanzeigen_bot/__init__.py index 0971ab0..41c5cd4 100644 --- a/kleinanzeigen_bot/__init__.py +++ b/kleinanzeigen_bot/__init__.py @@ -21,6 +21,7 @@ from wcmatch import glob from . import utils, resources, extract # pylint: disable=W0406 from .utils import abspath, apply_defaults, ensure, is_frozen, pause, pluralize, safe_get, parse_datetime from .selenium_mixin import SeleniumMixin +from ._version import __version__ # W0406: possibly a bug, see https://github.com/PyCQA/pylint/issues/3933 @@ -65,7 +66,7 @@ class KleinanzeigenBot(SeleniumMixin): self.webdriver = None def get_version(self) -> str: - return importlib.metadata.version(__package__).removesuffix(".editable") + return __version__ def run(self, args:list[str]) -> None: self.parse_args(args) diff --git a/pdm.lock b/pdm.lock index aca45d0..4631397 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev"] strategy = ["cross_platform"] lock_version = "4.4" -content_hash = "sha256:930f2d57b643fd0760e15f2d6122924b5b852854847f60930b3c560245ec9565" +content_hash = "sha256:31e08632466483bf5426a94adae78e76efb6f9a2473c3a3952b74ca41ee3602d" [[package]] name = "altgraph" diff --git a/pyinstaller.spec b/pyinstaller.spec index 37558a3..bd8786a 100644 --- a/pyinstaller.spec +++ b/pyinstaller.spec @@ -6,12 +6,15 @@ SPDX-ArtifactOfProjectHomePage: https://github.com/Second-Hand-Friends/kleinanze PyInstaller config file, see https://pyinstaller.readthedocs.io/en/stable/spec-files.html """ -from PyInstaller.utils.hooks import copy_metadata, collect_data_files +from PyInstaller.utils.hooks import collect_data_files datas = [ - * copy_metadata('kleinanzeigen_bot'), # required to get version info * collect_data_files("kleinanzeigen_bot"), # embeds *.yaml files * collect_data_files("selenium_stealth"), # embeds *.js files + + # required to get version info via 'importlib.metadata.version(__package__)' + # but we use https://backend.pdm-project.org/metadata/#writing-dynamic-version-to-file + # * copy_metadata('kleinanzeigen_bot'), ] excluded_modules = [ diff --git a/pyproject.toml b/pyproject.toml index fe088c2..7121f34 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,6 +56,8 @@ Issues = "https://github.com/Second-Hand-Friends/kleinanzeigen-bot/issues" [tool.pdm.version] # https://backend.pdm-project.org/metadata/#dynamic-project-version source = "call" getter = "version:get_version" +write_to = "kleinanzeigen_bot/_version.py" +write_template = "__version__ = '{}'\n" [tool.pdm.dev-dependencies] dev = [