summaryrefslogtreecommitdiff
path: root/passlib
diff options
context:
space:
mode:
authorEli Collins <elic@assurancetechnologies.com>2011-08-17 11:51:08 -0400
committerEli Collins <elic@assurancetechnologies.com>2011-08-17 11:51:08 -0400
commitf3a121563512d51133cbacf50c96b1a3dccde31d (patch)
tree081e1a83805003ebfb8b433f1513c413040aa944 /passlib
parentd2ffaa3eecd9866918a20547d02c3a1b45dc8fdb (diff)
downloadpasslib-f3a121563512d51133cbacf50c96b1a3dccde31d.tar.gz
setup script enhancements
* added code to make builtin snapshots & releases with correct version # easier, no longer dependant on egg_info's tag_date (which didn't make PEP compatible version strings anyways). * moved passlib.setup to passlib._setup - not really publically useful anyways, and name was causing nose/unitest to get confused * added tests/*.cfg to setup & manifest
Diffstat (limited to 'passlib')
-rw-r--r--passlib/_setup/__init__.py5
-rw-r--r--passlib/_setup/cond2to3.py (renamed from passlib/setup/cond2to3.py)0
-rw-r--r--passlib/_setup/stamp.py57
-rw-r--r--passlib/setup/__init__.py1
4 files changed, 62 insertions, 1 deletions
diff --git a/passlib/_setup/__init__.py b/passlib/_setup/__init__.py
new file mode 100644
index 0000000..814c93a
--- /dev/null
+++ b/passlib/_setup/__init__.py
@@ -0,0 +1,5 @@
+"""passlib.setup - helpers used by passlib's setup.py script
+
+note that unlike the rest of passlib, the code in this package must
+work *unaltered* under both python 2 & 3
+"""
diff --git a/passlib/setup/cond2to3.py b/passlib/_setup/cond2to3.py
index 12cb0a8..12cb0a8 100644
--- a/passlib/setup/cond2to3.py
+++ b/passlib/_setup/cond2to3.py
diff --git a/passlib/_setup/stamp.py b/passlib/_setup/stamp.py
new file mode 100644
index 0000000..14abd59
--- /dev/null
+++ b/passlib/_setup/stamp.py
@@ -0,0 +1,57 @@
+"update version string during build"
+#=========================================================
+# imports
+#=========================================================
+from __future__ import with_statement
+#core
+import os
+import re
+import time
+from distutils.dist import Distribution
+#pkg
+#local
+__all__ = [
+ "stamp_source",
+ "stamp_distutils_output",
+]
+#=========================================================
+# helpers
+#=========================================================
+def get_command_class(opts, name):
+ return opts['cmdclass'].get(name) or Distribution().get_command_class(name)
+
+def stamp_source(base_dir, version, dry_run=False):
+ "update version string in passlib dist"
+ path = os.path.join(base_dir, "passlib", "__init__.py")
+ with open(path) as fh:
+ input = fh.read()
+ output = re.sub('(?m)^__version__\s*=.*$',
+ '__version__ = ' + repr(version),
+ input)
+ assert output != input, "failed to match"
+ if not dry_run:
+ os.unlink(path) # sdist likes to use hardlinks
+ with open(path, "w") as fh:
+ fh.write(output)
+
+def stamp_distutils_output(opts, version):
+
+ # subclass buildpy to update version string in source
+ _build_py = get_command_class(opts, "build_py")
+ class build_py(_build_py):
+ def build_packages(self):
+ _build_py.build_packages(self)
+ stamp_source(self.build_lib, version, self.dry_run)
+ opts['cmdclass']['build_py'] = build_py
+
+ # subclass sdist to do same thing
+ _sdist = get_command_class(opts, "sdist")
+ class sdist(_sdist):
+ def make_release_tree(self, base_dir, files):
+ _sdist.make_release_tree(self, base_dir, files)
+ stamp_source(base_dir, version, self.dry_run)
+ opts['cmdclass']['sdist'] = sdist
+
+#=========================================================
+# eof
+#=========================================================
diff --git a/passlib/setup/__init__.py b/passlib/setup/__init__.py
deleted file mode 100644
index 2966610..0000000
--- a/passlib/setup/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-"passlib.setup - package containing helpers used by passlib's setup.py script"