summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2012-07-14 08:06:53 -0700
committerMonty Taylor <mordred@inaugust.com>2012-07-15 09:02:12 -0700
commit91e19d68f5da564f1a38f0a25c831f24d5c867f2 (patch)
tree95ebd51fa231bbd8b47c68b96b199218f43d4135
parente55b3e1e151ac751e0a7ae89fa80cafca40c961c (diff)
downloadpbr-91e19d68f5da564f1a38f0a25c831f24d5c867f2.tar.gz
Move setuptools hooks into their own module.
Change-Id: I68f65ad7ddc85f92ed7e07e82924e0ef257d46ac
-rw-r--r--pbr/hooks.py79
-rw-r--r--pbr/requires.py18
-rw-r--r--pbr/version.py38
-rw-r--r--setup.py6
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.*'])
diff --git a/setup.py b/setup.py
index 2421a4d..c3a286a 100644
--- a/setup.py
+++ b/setup.py
@@ -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",
]
}
)