From 426d8c4b254f1411f86110b65e03591f16801be1 Mon Sep 17 00:00:00 2001 From: Ryan Fobel <ryan@fobel.net> Date: Tue, 10 Nov 2015 12:19:17 -0500 Subject: [PATCH] Reorganize package for uploading to PyPi --- .gitignore | 7 +- MANIFEST.in | 7 + dstat-interface/dstat-interface.bat | 1 - .../__init__.py | 0 .../main.py => dstat_interface/__main__.py | 0 .../build_windows.py | 0 .../drivers/VirtualSerial.inf | 0 dstat_interface/dstat-interface.bat | 1 + .../dstat.spec | 0 .../dstatInterface.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/dstatInterface.xccheckout | 0 .../xcschemes/dstatInterface.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../dstat_comm.py | 0 .../errors.py | 0 .../interface/__init__.py | 0 .../interface/acv.glade | 0 .../interface/adc_pot.glade | 0 .../interface/adc_pot.py | 0 .../interface/chronoamp.glade | 0 .../interface/cv.glade | 0 .../interface/dpv.glade | 0 .../interface/dstatinterface.glade | 0 .../interface/exp_int.py | 0 .../interface/exp_window.py | 0 .../interface/lsv.glade | 0 .../interface/pd.glade | 0 .../interface/potexp.glade | 0 .../interface/save.py | 0 .../interface/swv.glade | 0 .../interface_test.spec.bak | 0 .../microdrop.py | 0 {dstat-interface => dstat_interface}/plot.py | 0 {dstat-interface => dstat_interface}/setup.py | 0 pavement.py | 30 ++++ version.py | 135 ++++++++++++++++++ 37 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 MANIFEST.in delete mode 100644 dstat-interface/dstat-interface.bat rename {dstat-interface => dstat_interface}/__init__.py (100%) rename dstat-interface/main.py => dstat_interface/__main__.py (100%) rename {dstat-interface => dstat_interface}/build_windows.py (100%) rename {dstat-interface => dstat_interface}/drivers/VirtualSerial.inf (100%) create mode 100644 dstat_interface/dstat-interface.bat rename {dstat-interface => dstat_interface}/dstat.spec (100%) rename {dstat-interface => dstat_interface}/dstatInterface.xcodeproj/project.pbxproj (100%) rename {dstat-interface => dstat_interface}/dstatInterface.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {dstat-interface => dstat_interface}/dstatInterface.xcodeproj/project.xcworkspace/xcshareddata/dstatInterface.xccheckout (100%) rename {dstat-interface => dstat_interface}/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/dstatInterface.xcscheme (100%) rename {dstat-interface => dstat_interface}/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/xcschememanagement.plist (100%) rename {dstat-interface => dstat_interface}/dstat_comm.py (100%) rename {dstat-interface => dstat_interface}/errors.py (100%) rename {dstat-interface => dstat_interface}/interface/__init__.py (100%) rename {dstat-interface => dstat_interface}/interface/acv.glade (100%) rename {dstat-interface => dstat_interface}/interface/adc_pot.glade (100%) rename {dstat-interface => dstat_interface}/interface/adc_pot.py (100%) rename {dstat-interface => dstat_interface}/interface/chronoamp.glade (100%) rename {dstat-interface => dstat_interface}/interface/cv.glade (100%) rename {dstat-interface => dstat_interface}/interface/dpv.glade (100%) rename {dstat-interface => dstat_interface}/interface/dstatinterface.glade (100%) rename {dstat-interface => dstat_interface}/interface/exp_int.py (100%) rename {dstat-interface => dstat_interface}/interface/exp_window.py (100%) rename {dstat-interface => dstat_interface}/interface/lsv.glade (100%) rename {dstat-interface => dstat_interface}/interface/pd.glade (100%) rename {dstat-interface => dstat_interface}/interface/potexp.glade (100%) rename {dstat-interface => dstat_interface}/interface/save.py (100%) rename {dstat-interface => dstat_interface}/interface/swv.glade (100%) rename {dstat-interface => dstat_interface}/interface_test.spec.bak (100%) rename {dstat-interface => dstat_interface}/microdrop.py (100%) rename {dstat-interface => dstat_interface}/plot.py (100%) rename {dstat-interface => dstat_interface}/setup.py (100%) create mode 100644 pavement.py create mode 100644 version.py diff --git a/.gitignore b/.gitignore index e6d04b4..90d4eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,9 @@ Breakpoints_v2.xcbkptlist *.pyo *~ /dstat-interface/dist/ -/dstat-interface/build/ \ No newline at end of file +/dstat-interface/build/ +RELEASE-VERSION +paver-minilib.zip +dist +setup.py +*.egg-info diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..fefb590 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ +include RELEASE-VERSION +include version.py +include setup.py +include paver-minilib.zip +recursive-include dstat_interface * +recursive-exclude dstat_interface *.pyc +recursive-exclude dstat_interface *~ diff --git a/dstat-interface/dstat-interface.bat b/dstat-interface/dstat-interface.bat deleted file mode 100644 index da83e27..0000000 --- a/dstat-interface/dstat-interface.bat +++ /dev/null @@ -1 +0,0 @@ -python .\main.py diff --git a/dstat-interface/__init__.py b/dstat_interface/__init__.py similarity index 100% rename from dstat-interface/__init__.py rename to dstat_interface/__init__.py diff --git a/dstat-interface/main.py b/dstat_interface/__main__.py similarity index 100% rename from dstat-interface/main.py rename to dstat_interface/__main__.py diff --git a/dstat-interface/build_windows.py b/dstat_interface/build_windows.py similarity index 100% rename from dstat-interface/build_windows.py rename to dstat_interface/build_windows.py diff --git a/dstat-interface/drivers/VirtualSerial.inf b/dstat_interface/drivers/VirtualSerial.inf similarity index 100% rename from dstat-interface/drivers/VirtualSerial.inf rename to dstat_interface/drivers/VirtualSerial.inf diff --git a/dstat_interface/dstat-interface.bat b/dstat_interface/dstat-interface.bat new file mode 100644 index 0000000..031c214 --- /dev/null +++ b/dstat_interface/dstat-interface.bat @@ -0,0 +1 @@ +python .\__main__.py diff --git a/dstat-interface/dstat.spec b/dstat_interface/dstat.spec similarity index 100% rename from dstat-interface/dstat.spec rename to dstat_interface/dstat.spec diff --git a/dstat-interface/dstatInterface.xcodeproj/project.pbxproj b/dstat_interface/dstatInterface.xcodeproj/project.pbxproj similarity index 100% rename from dstat-interface/dstatInterface.xcodeproj/project.pbxproj rename to dstat_interface/dstatInterface.xcodeproj/project.pbxproj diff --git a/dstat-interface/dstatInterface.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dstat_interface/dstatInterface.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from dstat-interface/dstatInterface.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to dstat_interface/dstatInterface.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/dstat-interface/dstatInterface.xcodeproj/project.xcworkspace/xcshareddata/dstatInterface.xccheckout b/dstat_interface/dstatInterface.xcodeproj/project.xcworkspace/xcshareddata/dstatInterface.xccheckout similarity index 100% rename from dstat-interface/dstatInterface.xcodeproj/project.xcworkspace/xcshareddata/dstatInterface.xccheckout rename to dstat_interface/dstatInterface.xcodeproj/project.xcworkspace/xcshareddata/dstatInterface.xccheckout diff --git a/dstat-interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/dstatInterface.xcscheme b/dstat_interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/dstatInterface.xcscheme similarity index 100% rename from dstat-interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/dstatInterface.xcscheme rename to dstat_interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/dstatInterface.xcscheme diff --git a/dstat-interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/xcschememanagement.plist b/dstat_interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 100% rename from dstat-interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/xcschememanagement.plist rename to dstat_interface/dstatInterface.xcodeproj/xcuserdata/mdryden.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/dstat-interface/dstat_comm.py b/dstat_interface/dstat_comm.py similarity index 100% rename from dstat-interface/dstat_comm.py rename to dstat_interface/dstat_comm.py diff --git a/dstat-interface/errors.py b/dstat_interface/errors.py similarity index 100% rename from dstat-interface/errors.py rename to dstat_interface/errors.py diff --git a/dstat-interface/interface/__init__.py b/dstat_interface/interface/__init__.py similarity index 100% rename from dstat-interface/interface/__init__.py rename to dstat_interface/interface/__init__.py diff --git a/dstat-interface/interface/acv.glade b/dstat_interface/interface/acv.glade similarity index 100% rename from dstat-interface/interface/acv.glade rename to dstat_interface/interface/acv.glade diff --git a/dstat-interface/interface/adc_pot.glade b/dstat_interface/interface/adc_pot.glade similarity index 100% rename from dstat-interface/interface/adc_pot.glade rename to dstat_interface/interface/adc_pot.glade diff --git a/dstat-interface/interface/adc_pot.py b/dstat_interface/interface/adc_pot.py similarity index 100% rename from dstat-interface/interface/adc_pot.py rename to dstat_interface/interface/adc_pot.py diff --git a/dstat-interface/interface/chronoamp.glade b/dstat_interface/interface/chronoamp.glade similarity index 100% rename from dstat-interface/interface/chronoamp.glade rename to dstat_interface/interface/chronoamp.glade diff --git a/dstat-interface/interface/cv.glade b/dstat_interface/interface/cv.glade similarity index 100% rename from dstat-interface/interface/cv.glade rename to dstat_interface/interface/cv.glade diff --git a/dstat-interface/interface/dpv.glade b/dstat_interface/interface/dpv.glade similarity index 100% rename from dstat-interface/interface/dpv.glade rename to dstat_interface/interface/dpv.glade diff --git a/dstat-interface/interface/dstatinterface.glade b/dstat_interface/interface/dstatinterface.glade similarity index 100% rename from dstat-interface/interface/dstatinterface.glade rename to dstat_interface/interface/dstatinterface.glade diff --git a/dstat-interface/interface/exp_int.py b/dstat_interface/interface/exp_int.py similarity index 100% rename from dstat-interface/interface/exp_int.py rename to dstat_interface/interface/exp_int.py diff --git a/dstat-interface/interface/exp_window.py b/dstat_interface/interface/exp_window.py similarity index 100% rename from dstat-interface/interface/exp_window.py rename to dstat_interface/interface/exp_window.py diff --git a/dstat-interface/interface/lsv.glade b/dstat_interface/interface/lsv.glade similarity index 100% rename from dstat-interface/interface/lsv.glade rename to dstat_interface/interface/lsv.glade diff --git a/dstat-interface/interface/pd.glade b/dstat_interface/interface/pd.glade similarity index 100% rename from dstat-interface/interface/pd.glade rename to dstat_interface/interface/pd.glade diff --git a/dstat-interface/interface/potexp.glade b/dstat_interface/interface/potexp.glade similarity index 100% rename from dstat-interface/interface/potexp.glade rename to dstat_interface/interface/potexp.glade diff --git a/dstat-interface/interface/save.py b/dstat_interface/interface/save.py similarity index 100% rename from dstat-interface/interface/save.py rename to dstat_interface/interface/save.py diff --git a/dstat-interface/interface/swv.glade b/dstat_interface/interface/swv.glade similarity index 100% rename from dstat-interface/interface/swv.glade rename to dstat_interface/interface/swv.glade diff --git a/dstat-interface/interface_test.spec.bak b/dstat_interface/interface_test.spec.bak similarity index 100% rename from dstat-interface/interface_test.spec.bak rename to dstat_interface/interface_test.spec.bak diff --git a/dstat-interface/microdrop.py b/dstat_interface/microdrop.py similarity index 100% rename from dstat-interface/microdrop.py rename to dstat_interface/microdrop.py diff --git a/dstat-interface/plot.py b/dstat_interface/plot.py similarity index 100% rename from dstat-interface/plot.py rename to dstat_interface/plot.py diff --git a/dstat-interface/setup.py b/dstat_interface/setup.py similarity index 100% rename from dstat-interface/setup.py rename to dstat_interface/setup.py diff --git a/pavement.py b/pavement.py new file mode 100644 index 0000000..4402f75 --- /dev/null +++ b/pavement.py @@ -0,0 +1,30 @@ +import sys + +from paver.easy import task, needs, path, sh, cmdopts, options +from paver.setuputils import setup, install_distutils_tasks +from distutils.extension import Extension +from distutils.dep_util import newer + +sys.path.insert(0, path('.').abspath()) +import version + +setup(name='dstat-interface', + version=version.getVersion(), + description='Add description here.', + keywords='', + author='Anonymous', + author_email='you@mail.com', + url='https://github.com/wheeler-microfluidics/dstat-interface', + license='GPL', + packages=['dstat_interface', ], + install_requires=['matplotlib', 'numpy', 'pycairo', 'pyserial', 'pygtk', + 'pygobject', 'pyzmq'], + # Install data listed in `MANIFEST.in` + include_package_data=True) + + +@task +@needs('generate_setup', 'minilib', 'setuptools.command.sdist') +def sdist(): + """Overrides sdist to make sure that our setup.py is generated.""" + pass diff --git a/version.py b/version.py new file mode 100644 index 0000000..343f158 --- /dev/null +++ b/version.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- + +"""Calculates the current version number. + +If possible, uses output of “git describe†modified to conform to the +visioning scheme that setuptools uses (see PEP 386). Releases must be +labelled with annotated tags (signed tags are annotated) of the following +format: + + v<num>(.<num>)+ [ {a|b|c|rc} <num> (.<num>)* ] + +If “git describe†returns an error (likely because we're in an unpacked copy +of a release tarball, rather than a git working copy), or returns a tag that +does not match the above format, version is read from RELEASE-VERSION file. + +To use this script, simply import it your setup.py file, and use the results +of getVersion() as your package version: + + import version + setup( + version=version.getVersion(), + . + . + . + ) + +This will automatically update the RELEASE-VERSION file. The RELEASE-VERSION +file should *not* be checked into git but it *should* be included in sdist +tarballs (as should version.py file). To do this, run: + + echo include RELEASE-VERSION version.py >>MANIFEST.in + echo RELEASE-VERSION >>.gitignore + +With that setup, a new release can be labelled by simply invoking: + + git tag -s v1.0 +""" + +__author__ = ('Douglas Creager <dcreager@dcreager.net>', + 'Michal Nazarewicz <mina86@mina86.com>') +__license__ = 'This file is placed into the public domain.' +__maintainer__ = 'Michal Nazarewicz' +__email__ = 'mina86@mina86.com' + +__all__ = ('getVersion') + + +import re +import subprocess +import sys + + +RELEASE_VERSION_FILE = 'RELEASE-VERSION' + +# http://www.python.org/dev/peps/pep-0386/ +_PEP386_SHORT_VERSION_RE = r'\d+(?:\.\d+)+(?:(?:[abc]|rc)\d+(?:\.\d+)*)?' +_PEP386_VERSION_RE = r'^%s(?:\.post\d+)?(?:\.dev\d+)?$' % ( + _PEP386_SHORT_VERSION_RE) +_GIT_DESCRIPTION_RE = r'^v(?P<ver>%s)-(?P<commits>\d+)-g(?P<sha>[\da-f]+)$' % ( + _PEP386_SHORT_VERSION_RE) + + +def readGitVersion(): + try: + proc = subprocess.Popen(('git', 'describe', '--long', + '--match', 'v[0-9]*.*'), + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + data, _ = proc.communicate() + if proc.returncode: + return None + ver = data.splitlines()[0].strip() + proc = subprocess.Popen(('git', 'rev-parse', '--abbrev-ref', 'HEAD'), + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + branch, _ = proc.communicate() + if proc.returncode: + return None + except: + return None + + if not ver: + return None + m = re.search(_GIT_DESCRIPTION_RE, ver) + if not m: + sys.stderr.write('version: git description (%s) is invalid, ' + 'ignoring\n' % ver) + return None + + commits = int(m.group('commits')) + + if not commits: + version = m.group('ver') + else: + version = '%s.post%d' % ( + m.group('ver'), commits) + + if branch.strip() != 'master': + version += '.dev%d' % int(m.group('sha'), 16) + + return version + + +def readReleaseVersion(): + try: + fd = open(RELEASE_VERSION_FILE) + try: + ver = fd.readline().strip() + finally: + fd.close() + if not re.search(_PEP386_VERSION_RE, ver): + sys.stderr.write('version: release version (%s) is invalid, ' + 'will use it anyway\n' % ver) + return ver + except: + return None + + +def writeReleaseVersion(version): + fd = open(RELEASE_VERSION_FILE, 'w') + fd.write('%s\n' % version) + fd.close() + + +def getVersion(): + release_version = readReleaseVersion() + version = readGitVersion() or release_version + if not version: + raise ValueError('Cannot find the version number') + if version != release_version: + writeReleaseVersion(version) + return version + + +if __name__ == '__main__': + print getVersion() + -- GitLab