From 71368651170491261249e7065deb465f49a7957f Mon Sep 17 00:00:00 2001 From: Florian Haas Date: Thu, 28 Feb 2019 12:38:04 +0100 Subject: [PATCH] Implement package versions based on Git tags * Use setuptools-scm so that setup.py can discern version numbers from Git tags, as recommended by option #7 in: https://packaging.python.org/guides/single-sourcing-package-version/ * Define a __version__ property as recommended by (deferred) PEP 396: https://www.python.org/dev/peps/pep-0396/ * Add a -V/--version option to the CLI --- olxutils/__init__.py | 8 ++++++++ olxutils/cli.py | 6 ++++++ requirements/setup.txt | 2 ++ setup.py | 3 ++- tox.ini | 1 + 5 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 requirements/setup.txt diff --git a/olxutils/__init__.py b/olxutils/__init__.py index e69de29..740edc2 100644 --- a/olxutils/__init__.py +++ b/olxutils/__init__.py @@ -0,0 +1,8 @@ +import pkg_resources +# __version__ attribute as suggested by (deferred) PEP 396: +# https://www.python.org/dev/peps/pep-0396/ +# +# Single-source package definition as suggested (among several +# options) by: +# https://packaging.python.org/guides/single-sourcing-package-version/ +__version__ = pkg_resources.get_distribution('olx-utils').version diff --git a/olxutils/cli.py b/olxutils/cli.py index 76bf21f..143d31e 100755 --- a/olxutils/cli.py +++ b/olxutils/cli.py @@ -16,6 +16,7 @@ from datetime import datetime from subprocess import check_call +from olxutils import __version__ from olxutils.templates import OLXTemplates, OLXTemplateException from olxutils.git import GitHelper, GitHelperException @@ -41,6 +42,11 @@ def valid_date(s): parser = ArgumentParser(prog=CANONICAL_COMMAND_NAME, description="Open Learning XML (OLX) utility") + parser.add_argument('-V', '--version', + action='version', + help="show version", + version='%(prog)s ' + __version__) + subparsers = parser.add_subparsers(dest='subcommand') new_run_help = 'Prepare a local source tree for a new course run' new_run_parser = subparsers.add_parser('new-run', diff --git a/requirements/setup.txt b/requirements/setup.txt new file mode 100644 index 0000000..e8a655c --- /dev/null +++ b/requirements/setup.txt @@ -0,0 +1,2 @@ +-r base.txt +setuptools-scm diff --git a/setup.py b/setup.py index 8c3f467..1325d48 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ def package_data(pkg, root_list): setup( name='olx-utils', - version='0.1.1', + use_scm_version=True, description='Utilities for edX OLX courses', long_description=open('README.rst').read(), url='https://github.com/hastexo/olx-utils', @@ -50,4 +50,5 @@ def package_data(pkg, root_list): ], }, package_data=package_data("olxutils", ["templates"]), + setup_requires=['setuptools-scm'], ) diff --git a/tox.ini b/tox.ini index ac0cf20..1b4c4c7 100644 --- a/tox.ini +++ b/tox.ini @@ -18,6 +18,7 @@ include = commands = coverage run -m unittest discover tests {posargs} deps = + -rrequirements/setup.txt -rrequirements/test.txt [testenv:flake8]