From 2f2b6a04b0a144f92a667b488564b91911298e8f Mon Sep 17 00:00:00 2001 From: Min RK Date: Mon, 14 Dec 2015 11:47:50 +0100 Subject: [PATCH] normalize version in setup.py avoids mismatch between wheel/sdist upload on PyPI due to setuptools normalization of prerelease tags. --- setup.py | 4 ++-- setupbase.py | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index cf3178637..b659ffb3f 100755 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ from distutils.core import setup # Our own imports from setupbase import ( - version, + pkg_version, find_packages, find_package_data, check_package_data_first, @@ -75,7 +75,7 @@ languages, sharing, and interactive widgets. Read `the documentation `_ for more information. """, - version = version, + version = pkg_version, scripts = glob(pjoin('scripts', '*')), packages = find_packages(), package_data = find_package_data(), diff --git a/setupbase.py b/setupbase.py index 5c95ce32d..c238c153f 100644 --- a/setupbase.py +++ b/setupbase.py @@ -65,8 +65,27 @@ name = 'notebook' version_ns = {} execfile(pjoin(repo_root, name, '_version.py'), version_ns) -version = version_ns['__version__'] +def normalized_version(version_info): + """Normalize version string + + Avoids prerelease uploads getting different versions from sdist and bdist, + due to setuptools normalization. + """ + v = '.'.join(map(str, version_info[:3])) + if len(version_info) == 3: + return v + extra = version_info[3] + if extra.startswith(('a', 'b', 'rc')): + sep = '' + else: + sep = '.' + # pip ensures there's number on the end + if not extra[-1].isdigit(): + extra += '0' + return v + sep + extra +version = version_ns['__version__'] +pkg_version = normalized_version(version_ns['version_info']) #--------------------------------------------------------------------------- # Find packages