diff --git a/python/CHANGELOG b/python/CHANGELOG index e906e5e1d..0dfffc4e1 100644 --- a/python/CHANGELOG +++ b/python/CHANGELOG @@ -1,3 +1,10 @@ +0.600.1 +--------- + +- introduce automatic versioning via setuptools_scm, + based on py-X.Y.Z tags + + 0.600.0 --------- diff --git a/python/setup.py b/python/setup.py index bd1919ad2..b0e94339d 100644 --- a/python/setup.py +++ b/python/setup.py @@ -4,14 +4,19 @@ import re def main(): - long_description, version = read_meta() + with open("README.rst") as f: + long_description = f.read() setuptools.setup( name='deltachat', - version=version, + setup_requires=['setuptools_scm', 'cffi>=1.0.0'], + use_scm_version = { + "root": "..", + "relative_to": __file__, + 'tag_regex': r'^(?Ppy-)?(?P[^\+]+)(?P.*)?$', + }, description='Python bindings for the Delta Chat Core library using CFFI against the Rust-implemented libdeltachat', long_description=long_description, author='holger krekel, Floris Bruynooghe, Bjoern Petersen and contributors', - setup_requires=['cffi>=1.0.0'], install_requires=['cffi>=1.0.0', 'attrs', 'six'], packages=setuptools.find_packages('src'), package_dir={'': 'src'}, @@ -27,18 +32,5 @@ def main(): ) -def read_meta(): - with open(os.path.join("src", "deltachat", "__init__.py")) as f: - for line in f: - m = re.match('__version__ = "(\S*).*"', line) - if m: - version, = m.groups() - break - - with open("README.rst") as f: - long_desc = f.read() - return long_desc, version - - if __name__ == "__main__": main() diff --git a/python/src/deltachat/__init__.py b/python/src/deltachat/__init__.py index 8bb855ca5..a8d338aba 100644 --- a/python/src/deltachat/__init__.py +++ b/python/src/deltachat/__init__.py @@ -2,7 +2,12 @@ from deltachat import capi, const from deltachat.capi import ffi from deltachat.account import Account # noqa -__version__ = "0.600.0" +from pkg_resources import get_distribution, DistributionNotFound +try: + __version__ = get_distribution(__name__).version +except DistributionNotFound: + # package is not installed + __version__ = "0.0.0.dev0-unknown" _DC_CALLBACK_MAP = {} diff --git a/python/tests/package_wheels.py b/python/tests/package_wheels.py new file mode 100644 index 000000000..1b67fdcb3 --- /dev/null +++ b/python/tests/package_wheels.py @@ -0,0 +1,15 @@ + +import os +import sys +import subprocess + + +if __name__ == "__main__": + assert len(sys.argv) == 2 + wheelhousedir = sys.argv[1] + # pip wheel will build in an isolated tmp dir that does not have git + # history so setuptools_scm can not automatically determine a + # version there. So pass in the version through an env var. + version = subprocess.check_output(["python", "setup.py", "--version"]).strip().split(b"\n")[-1] + os.environ["SETUPTOOLS_SCM_PRETEND_VERSION"] = version.decode("ascii") + subprocess.check_call(("pip wheel . -w %s" % wheelhousedir).split()) diff --git a/python/tox.ini b/python/tox.ini index 68167887f..ccac3dee6 100644 --- a/python/tox.ini +++ b/python/tox.ini @@ -9,7 +9,7 @@ envlist = [testenv] commands = pytest -rsXx {posargs:tests} - pip wheel . -w {toxworkdir}/wheelhouse + python tests/package_wheels.py {toxworkdir}/wheelhouse passenv = TRAVIS DCC_RS_DEV