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