diff options
author | Monty Taylor <mordred@inaugust.com> | 2012-07-14 08:06:53 -0700 |
---|---|---|
committer | Monty Taylor <mordred@inaugust.com> | 2012-07-15 09:02:12 -0700 |
commit | 91e19d68f5da564f1a38f0a25c831f24d5c867f2 (patch) | |
tree | 95ebd51fa231bbd8b47c68b96b199218f43d4135 | |
parent | e55b3e1e151ac751e0a7ae89fa80cafca40c961c (diff) | |
download | pbr-91e19d68f5da564f1a38f0a25c831f24d5c867f2.tar.gz |
Move setuptools hooks into their own module.
Change-Id: I68f65ad7ddc85f92ed7e07e82924e0ef257d46ac
-rw-r--r-- | pbr/hooks.py | 79 | ||||
-rw-r--r-- | pbr/requires.py | 18 | ||||
-rw-r--r-- | pbr/version.py | 38 | ||||
-rw-r--r-- | setup.py | 6 |
4 files changed, 82 insertions, 59 deletions
diff --git a/pbr/hooks.py b/pbr/hooks.py new file mode 100644 index 0000000..6987536 --- /dev/null +++ b/pbr/hooks.py @@ -0,0 +1,79 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2012 OpenStack LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +""" +Location of the setuptools hooks for manipulating setup.py metadata. +""" + +import os + +from pbr import requires + + +def __inject_parsed_file(value, func): + TOKEN = '#:' + new_reqs = [] + for req in value: + if req.startswith(TOKEN): + req_file = req[len(TOKEN):] + new_reqs.extend(func(req_file)) + return new_reqs + + +def inject_requires(dist, attr, value): + value.extend(__inject_parsed_file(value, requires.parse_requirements)) + + +def inject_dependency_links(dist, attr, value): + value.extend(__inject_parsed_file(value, requires.parse_dependency_links)) + + +def inject_version(dist, attr, value): + """Manipulate the version provided to setuptools to be one calculated + from git. + If the setuptools version starts with the token #:, we'll take over + and replace it with something more friendly.""" + import setuptools + + version = dist.metadata.version + if version and version.startswith("#:"): + + # Modify version number + if len(version[2:]) > 0: + (version_module, version_object) = version[2:].split(":") + else: + version_module = "%s" % dist.metadata.name + version_object = "version_info" + vinfo = __import__(version_module).__dict__[version_object] + versioninfo_path = os.path.join(vinfo.package, 'versioninfo') + dist.metadata.version = vinfo.canonical_version_string(always=True) + + # Inject cmdclass values here + import cmdclass + dist.cmdclass.update(cmdclass.get_cmdclass(versioninfo_path)) + + # Inject long_description + for readme in ("README.rst", "README.txt", "README"): + if dist.long_description is None and os.path.exists(readme): + dist.long_description = open(readme).read() + dist.include_package_data = True + + # Set sensible default for test_suite + if dist.test_suite is None: + dist.test_suite = 'nose.collector' + if dist.packages is None: + dist.packages = setuptools.find_packages(exclude=['tests', + 'tests.*']) diff --git a/pbr/requires.py b/pbr/requires.py index 1b243c2..56e2b1f 100644 --- a/pbr/requires.py +++ b/pbr/requires.py @@ -75,21 +75,3 @@ def parse_dependency_links(*links): elif re.match(r'\s*https?:', line): dependency_links.append(line) return dependency_links - - -def __inject_parsed_file(value, func): - TOKEN = '#:' - new_reqs = [] - for req in value: - if req.startswith(TOKEN): - req_file = req[len(TOKEN):] - new_reqs.extend(func(req_file)) - return new_reqs - - -def inject_requires(dist, attr, value): - value.extend(__inject_parsed_file(value, parse_requirements)) - - -def inject_dependency_links(dist, attr, value): - value.extend(__inject_parsed_file(value, parse_dependency_links)) diff --git a/pbr/version.py b/pbr/version.py index 099037b..9a676c1 100644 --- a/pbr/version.py +++ b/pbr/version.py @@ -258,41 +258,3 @@ class VersionInfo(object): rather only do the calculation when and if a version is requested """ return _deferred_version_string(self, prefix) - - -def inject_version(dist, attr, value): - """Manipulate the version provided to setuptools to be one calculated - from git. - If the setuptools version starts with the token #:, we'll take over - and replace it with something more friendly.""" - import setuptools - - version = dist.metadata.version - if version and version.startswith("#:"): - - # Modify version number - if len(version[2:]) > 0: - (version_module, version_object) = version[2:].split(":") - else: - version_module = "%s" % dist.metadata.name - version_object = "version_info" - vinfo = __import__(version_module).__dict__[version_object] - versioninfo_path = os.path.join(vinfo.package, 'versioninfo') - dist.metadata.version = vinfo.canonical_version_string(always=True) - - # Inject cmdclass values here - import cmdclass - dist.cmdclass.update(cmdclass.get_cmdclass(versioninfo_path)) - - # Inject long_description - for readme in ("README.rst", "README.txt", "README"): - if dist.long_description is None and os.path.exists(readme): - dist.long_description = open(readme).read() - dist.include_package_data = True - - # Set sensible default for test_suite - if dist.test_suite is None: - dist.test_suite = 'nose.collector' - if dist.packages is None: - dist.packages = setuptools.find_packages(exclude=['tests', - 'tests.*']) @@ -37,9 +37,9 @@ setuptools.setup( ], entry_points={ "distutils.setup_keywords": [ - "version = pbr.version:inject_version", - "install_requires = pbr.requires:inject_requires", - "dependency_links = pbr.requires:inject_dependency_links", + "version = pbr.hooks:inject_version", + "install_requires = pbr.hooks:inject_requires", + "dependency_links = pbr.hooks:inject_dependency_links", ] } ) |