diff --git a/doc/source/conf.py b/doc/source/conf.py index 5475fc60..bf35651d 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -50,9 +50,9 @@ copyright = '2011, Luke Campagnola' # built documents. # # The short X.Y version. -version = '' +version = '0.9.8' # The full version, including alpha/beta/rc tags. -release = '' +release = '0.9.8' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/pyqtgraph/__init__.py b/pyqtgraph/__init__.py index 11e281a4..f46184b4 100644 --- a/pyqtgraph/__init__.py +++ b/pyqtgraph/__init__.py @@ -4,7 +4,7 @@ PyQtGraph - Scientific Graphics and GUI Library for Python www.pyqtgraph.org """ -__version__ = None +__version__ = '0.9.8' ### import all the goodies and add some helper functions for easy CLI use diff --git a/setup.py b/setup.py index 055b74e8..8bda9eeb 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ from distutils.core import setup import distutils.dir_util -import os +import os, re +from subprocess import check_output ## generate list of all sub-packages path = os.path.abspath(os.path.dirname(__file__)) @@ -14,8 +15,52 @@ buildPath = os.path.join(path, 'build') if os.path.isdir(buildPath): distutils.dir_util.remove_tree(buildPath) + +## Determine current version string +init = open(os.path.join(path, 'pyqtgraph/__init__.py')).read() +m = re.search(r'__version__ = (\S+)\n', init) +if m is None: + raise Exception("Cannot determine version number!") +version = m.group(1).strip('\'\"') + +# If this is a git checkout, append the current commit +if os.path.isdir(os.path.join(path, '.git')): + def gitCommit(name): + commit = check_output(['git', 'show', name], universal_newlines=True).split('\n')[0] + assert commit[:7] == 'commit ' + return commit[7:] + + # Find last tag matching "pyqtgraph-.*" + tagNames = check_output(['git', 'tag'], universal_newlines=True).strip().split('\n') + while True: + if len(tagNames) == 0: + raise Exception("Could not determine last tagged version.") + lastTagName = tagNames.pop() + if re.match(r'pyqtgraph-.*', lastTagName): + break + + # is this commit an unchanged checkout of the last tagged version? + lastTag = gitCommit(lastTagName) + head = gitCommit('HEAD') + if head != lastTag: + branch = re.search(r'\* (.*)', check_output(['git', 'branch'])).group(1) + version = version + "-%s-%s" % (branch, head[:10]) + + # any uncommitted modifications? + modified = False + status = check_output(['git', 'status', '-s'], universal_newlines=True).strip().split('\n') + for line in status: + if line[:2] != '??': + modified = True + break + + if modified: + version = version + '+' + +print("PyQtGraph version: " + version) + setup(name='pyqtgraph', - version='', + version=version, description='Scientific Graphics and GUI Library for Python', long_description="""\ PyQtGraph is a pure-python graphics and GUI library built on PyQt4/PySide and diff --git a/tools/setVersion.py b/tools/setVersion.py new file mode 100644 index 00000000..b62aca01 --- /dev/null +++ b/tools/setVersion.py @@ -0,0 +1,26 @@ +import re, os, sys + +version = sys.argv[1] + +replace = [ + ("pyqtgraph/__init__.py", r"__version__ = .*", "__version__ = '%s'" % version), + #("setup.py", r" version=.*,", " version='%s'," % version), # setup.py automatically detects version + ("doc/source/conf.py", r"version = .*", "version = '%s'" % version), + ("doc/source/conf.py", r"release = .*", "release = '%s'" % version), + #("tools/debian/control", r"^Version: .*", "Version: %s" % version) + ] + +path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..') + +for filename, search, sub in replace: + filename = os.path.join(path, filename) + data = open(filename, 'r').read() + if re.search(search, data) is None: + print('Error: Search expression "%s" not found in file %s.' % (search, filename)) + os._exit(1) + open(filename, 'w').write(re.sub(search, sub, data)) + +print("Updated version strings to %s" % version) + + +