From e05c3d56bcba0e031d0479ad136637642f4ccfa4 Mon Sep 17 00:00:00 2001 From: Sebastian Wehling-Benatelli Date: Thu, 9 Jan 2014 10:43:40 +0100 Subject: [PATCH] initialized software versioning similar to obspy --- pylot/QtPyLoT.py | 53 +++++++++++++++++ pylot/RELEASE_VERSION | 1 + pylot/core/util/__init__.py | 1 + pylot/core/util/version.py | 111 ++++++++++++++++++++++++++++++++++++ 4 files changed, 166 insertions(+) mode change 100644 => 100755 pylot/QtPyLoT.py create mode 100644 pylot/RELEASE_VERSION create mode 100644 pylot/core/util/__init__.py create mode 100644 pylot/core/util/version.py diff --git a/pylot/QtPyLoT.py b/pylot/QtPyLoT.py old mode 100644 new mode 100755 index e69de29b..9b8414bd --- a/pylot/QtPyLoT.py +++ b/pylot/QtPyLoT.py @@ -0,0 +1,53 @@ +# Main program: QtPyLoT.py +# +# +# +# +# +# +# +# +# +# +# +# + +import os +import platform +import sys +from PyQt4.QtCore import * +from PyQt4.QtGui import * +import helpform +from pylot.core.util import _getVersionString + +# Version information +__version__ = _getVersionString() + +# Creating a Qt application +pylot_app = QApplication(sys.argv) + +pylot_main = QWidget() +pylot_main.setWindowTitle('TestWindow') + +ok_btn = QPushButton('OK', pylot_main) + +@pyqtSlot() +def on_click(): + print('clicked') + +@pyqtSlot() +def on_press(): + print('pressed') + +@pyqtSlot() +def on_release(): + print('released') + +# Connect signals to slots +ok_btn.clicked.connect(on_click) +ok_btn.pressed.connect(on_press) +ok_btn.pressed.connect(on_release) + +# Show window and run the app +pylot_main.show() +pylot_app.exec_() diff --git a/pylot/RELEASE_VERSION b/pylot/RELEASE_VERSION new file mode 100644 index 00000000..58aa1fbf --- /dev/null +++ b/pylot/RELEASE_VERSION @@ -0,0 +1 @@ +0.1a1 diff --git a/pylot/core/util/__init__.py b/pylot/core/util/__init__.py new file mode 100644 index 00000000..2d4a37e4 --- /dev/null +++ b/pylot/core/util/__init__.py @@ -0,0 +1 @@ +from pylot.core.util.version import get_git_version as _getVersionString diff --git a/pylot/core/util/version.py b/pylot/core/util/version.py new file mode 100644 index 00000000..5c87cccf --- /dev/null +++ b/pylot/core/util/version.py @@ -0,0 +1,111 @@ +# -*- coding: utf-8 -*- +# Author: Douglas Creager +# This file is placed into the public domain. + +# Calculates the current version number. If possible, this is the +# output of “git describe”, modified to conform to the versioning +# scheme that setuptools uses. If “git describe” returns an error +# (most likely because we're in an unpacked copy of a release tarball, +# rather than in a git working copy), then we fall back on reading the +# contents of the RELEASE-VERSION file. +# +# To use this script, simply import it your setup.py file, and use the +# results of get_git_version() as your package version: +# +# from version import * +# +# setup( +# version=get_git_version(), +# . +# . +# . +# ) +# +# This will automatically update the RELEASE-VERSION file, if +# necessary. Note that the RELEASE-VERSION file should *not* be +# checked into git; please add it to your top-level .gitignore file. +# +# You'll probably want to distribute the RELEASE-VERSION file in your +# sdist tarballs; to do this, just create a MANIFEST.in file that +# contains the following line: +# +# include RELEASE-VERSION + +__all__ = ("get_git_version") + +# NO IMPORTS FROM PYLOT IN THIS FILE! (file gets used at installation time) +import os +import inspect +from subprocess import Popen, PIPE +# NO IMPORTS FROM PYLOT IN THIS FILE! (file gets used at installation time) + +script_dir = os.path.abspath(os.path.dirname(inspect.getfile( + inspect.currentframe()))) +PYLOT_ROOT = os.path.abspath(os.path.join(script_dir, os.pardir, + os.pardir, os.pardir)) +VERSION_FILE = os.path.join(PYLOT_ROOT, "pylot", "RELEASE-VERSION") + + +def call_git_describe(abbrev=4): + try: + p = Popen(['git', 'rev-parse', '--show-toplevel'], + cwd=PYLOT_ROOT, stdout=PIPE, stderr=PIPE) + p.stderr.close() + path = p.stdout.readlines()[0].strip() + except: + return None + if os.path.normpath(path) != PYLOT_ROOT: + return None + try: + p = Popen(['git', 'describe', '--dirty', '--abbrev=%d' % abbrev, + '--always'], + cwd=PYLOT_ROOT, stdout=PIPE, stderr=PIPE) + p.stderr.close() + line = p.stdout.readlines()[0] + # (this line prevents official releases) + if "-" not in line and "." not in line: + line = "0.0.0-g%s" % line + return line.strip() + except: + return None + + +def read_release_version(): + try: + version = open(VERSION_FILE, "r").readlines()[0] + return version.strip() + except: + return None + + +def write_release_version(version): + open(VERSION_FILE, "w").write("%s\n" % version) + + +def get_git_version(abbrev=4): + # Read in the version that's currently in RELEASE-VERSION. + release_version = read_release_version() + + # First try to get the current version using “git describe”. + version = call_git_describe(abbrev) + + # If that doesn't work, fall back on the value that's in + # RELEASE-VERSION. + if version is None: + version = release_version + + # If we still don't have anything, that's an error. + if version is None: + return '0.0.0-tar/zipball' + + # If the current version is different from what's in the + # RELEASE-VERSION file, update the file to be current. + if version != release_version: + write_release_version(version) + + # Finally, return the current version. + return version + + +if __name__ == "__main__": + print get_git_version() \ No newline at end of file