From 8da3049f573ff025aaeb78f6326b57904f8c430c Mon Sep 17 00:00:00 2001 From: Nabil Freij Date: Tue, 21 Mar 2023 09:24:24 -0700 Subject: [PATCH] Update version handling to remove use of pkg_resources (#211) --- .gitignore | 1 + setup.cfg | 3 +-- setup.py | 3 ++- src/ablog/version.py | 21 ++++++++++++++++----- tox.ini | 4 ++++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index fc6469d8..5b6c905b 100644 --- a/.gitignore +++ b/.gitignore @@ -226,3 +226,4 @@ test/ .history/ pydata-sphinx-theme/ _build +_version.py diff --git a/setup.cfg b/setup.cfg index 2b45672e..e9e42006 100644 --- a/setup.cfg +++ b/setup.cfg @@ -22,6 +22,7 @@ install_requires = docutils>=0.18 feedgen>=0.9.0 invoke>=1.6.0 + packaging>=19.0 python-dateutil>=2.8.2 sphinx>=5.0.0 watchdog>=2.1.0 @@ -57,8 +58,6 @@ filterwarnings = always::pytest.PytestConfigWarning # Sphinx and other packages raise these ignore:'imghdr' is deprecated and slated for removal in Python 3.13:DeprecationWarning - ignore:.*pkg_resources.declare_namespace.* - ignore:The alias.* [pycodestyle] max_line_length = 120 diff --git a/setup.py b/setup.py index 7c5d69c2..24662f37 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,6 @@ #!/usr/bin/env python from setuptools import setup # isort:skip +import os from itertools import chain try: @@ -25,5 +26,5 @@ setup( extras_require=extras, - use_scm_version=True, + use_scm_version={"write_to": os.path.join("src", "ablog", "_version.py")}, ) diff --git a/src/ablog/version.py b/src/ablog/version.py index 9e3decdc..e86557ff 100644 --- a/src/ablog/version.py +++ b/src/ablog/version.py @@ -1,6 +1,17 @@ -from pkg_resources import DistributionNotFound, get_distribution - try: - version = get_distribution("ablog").version -except DistributionNotFound: - version = "unknown.dev" + from ._version import version +except Exception: + import warnings + + warnings.warn(f'could not determine {__name__.split(".")[0]} package version; this indicates a broken installation') + del warnings + + version = "0.0.0" + +from packaging.version import parse as _parse + +_version = _parse(version) +major, minor, bugfix = [*_version.release, 0][:3] +release = not _version.is_devrelease + +__all__ = ["version", "major", "minor", "bugfix", "release"] diff --git a/tox.ini b/tox.ini index b099baac..144f5aa9 100644 --- a/tox.ini +++ b/tox.ini @@ -63,9 +63,13 @@ conda_deps = make myst-parser nbsphinx + packaging pandoc + pip pytest python-dateutil + setuptools + setuptools-scm sphinx sphinx-automodapi watchdog