diff options
| author | Eli Collins <elic@assurancetechnologies.com> | 2011-08-17 11:51:08 -0400 |
|---|---|---|
| committer | Eli Collins <elic@assurancetechnologies.com> | 2011-08-17 11:51:08 -0400 |
| commit | f3a121563512d51133cbacf50c96b1a3dccde31d (patch) | |
| tree | 081e1a83805003ebfb8b433f1513c413040aa944 /passlib | |
| parent | d2ffaa3eecd9866918a20547d02c3a1b45dc8fdb (diff) | |
| download | passlib-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__.py | 5 | ||||
| -rw-r--r-- | passlib/_setup/cond2to3.py (renamed from passlib/setup/cond2to3.py) | 0 | ||||
| -rw-r--r-- | passlib/_setup/stamp.py | 57 | ||||
| -rw-r--r-- | passlib/setup/__init__.py | 1 |
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" |
