- openstack/debtcollector
- openstack/dib-utils
- openstack/diskimage-builder
- - openstack/django_openstack_auth
- openstack/futurist
- openstack/glance
- openstack/glance_store
templates:
- lib-forward-testing
- lib-forward-testing-python3
- - openstack-cover-jobs
- - openstack-python-jobs
- - openstack-python3-ussuri-jobs
- periodic-stable-jobs
- publish-openstack-docs-pti
check:
jobs:
+ - openstack-tox-pep8
+ - openstack-tox-cover
+ - openstack-tox-py36
+ - openstack-tox-py37
+ - openstack-tox-py38
+ - openstack-tox-py39
- pbr-installation-openstack
- pbr-installation-openstack-pip-dev
- tempest-full:
override-checkout: stable/train
gate:
jobs:
+ - openstack-tox-pep8
+ - openstack-tox-cover
+ - openstack-tox-py36
+ - openstack-tox-py37
+ - openstack-tox-py38
+ - openstack-tox-py39
- pbr-installation-openstack
- pbr-installation-openstack-pip-dev
- tempest-full:
dineshbhor <dinesh.bhor@nttdata.com>
jiansong <jian.song@easystack.cn>
lifeless <robertc@robertcollins.net>
+manchandavishal <manchandavishal143@gmail.com>
melanie witt <melwitt@yahoo-inc.com>
melissaml <ma.lei@99cloud.net>
nizam <abdul.nizamuddin@nectechnologies.in>
CHANGES
=======
+5.7.0
+-----
+
+* Add a PEP517 interface
+* PBR package testing improvements
+* Run python3.9 test jobs
+* Retire django-openstack-auth
+* Correct comment for 'D1\_D2\_SETUP\_ARGS'
+
5.6.0
-----
Metadata-Version: 2.1
Name: pbr
-Version: 5.6.0
+Version: 5.7.0
Summary: Python Build Reasonableness
Home-page: https://docs.openstack.org/pbr/latest/
Author: OpenStack
While one can pass any arguments supported by setuptools to ``setup()``,
any conflicting arguments supplied in ``setup.cfg`` will take precedence.
+``pyproject.toml``
+------------------
+
+As an alternative to writing a ``setup.py`` you can instead setup PBR
+through the PEP 517 build-system configuration in ``pyproject.toml``.
+Your build-system block in ``pyproject.toml`` will need to look something
+like this::
+
+ [build-system]
+ requires = ["pbr>=5.7.0", "setuptools>=36.6.0", "wheel"]
+ build-backend = "pbr.build"
+
.. _setup_cfg:
``setup.cfg``
Metadata-Version: 2.1
Name: pbr
-Version: 5.6.0
+Version: 5.7.0
Summary: Python Build Reasonableness
Home-page: https://docs.openstack.org/pbr/latest/
Author: OpenStack
ChangeLog
LICENSE
README.rst
+pyproject.toml.future
setup.cfg
setup.py
test-requirements.txt
doc/source/user/semver.rst
doc/source/user/using.rst
pbr/__init__.py
+pbr/build.py
pbr/builddoc.py
pbr/core.py
pbr/extra_files.py
releasenotes/notes/fix-mapping-value-explode-with-equal-sign-41bf822fa4dd0e68.yaml
releasenotes/notes/ignore-find-links-07cf54f465aa33a6.yaml
releasenotes/notes/long-descr-content-type-f9a1003acbb8740f.yaml
+releasenotes/notes/pep517-support-89189ce0bab15845.yaml
releasenotes/notes/remove-command-hooks-907d9c2325f306ca.yaml
releasenotes/notes/support-vcs-uris-with-subdirectories-20ad68b6138f72ca.yaml
releasenotes/notes/use_2to3-removal-ac48bf9fbfa049b1.yaml
--- /dev/null
+# Copyright 2021 Monty Taylor
+#
+# 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.
+
+"""pep-517 support
+
+Add::
+
+ [build-system]
+ requires = ["pbr>=5.7.0", "setuptools>=36.6.0", "wheel"]
+ build-backend = "pbr.build"
+
+to pyproject.toml to use this
+"""
+
+from setuptools import build_meta
+
+__all__ = [
+ 'get_requires_for_build_sdist',
+ 'get_requires_for_build_wheel',
+ 'prepare_metadata_for_build_wheel',
+ 'build_wheel',
+ 'build_sdist',
+]
+
+
+def get_requires_for_build_wheel(config_settings=None):
+ return build_meta.get_requires_for_build_wheel(config_settings)
+
+
+def get_requires_for_build_sdist(config_settings=None):
+ return build_meta.get_requires_for_build_sdist(config_settings)
+
+
+def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
+ return build_meta.prepare_metadata_for_build_wheel(
+ metadata_directory, config_settings)
+
+
+def build_wheel(
+ wheel_directory,
+ config_settings=None,
+ metadata_directory=None,
+):
+ return build_meta.build_wheel(
+ wheel_directory, config_settings, metadata_directory,
+ )
+
+
+def build_sdist(sdist_directory, config_settings=None):
+ return build_meta.build_sdist(sdist_directory, config_settings)
"""
self._reason = reason
if modules == ():
- pbr = 'file://%s#egg=pbr' % PBR_ROOT
- modules = ['pip', 'wheel', pbr]
+ modules = ['pip', 'wheel', 'build', PBR_ROOT]
self.modules = modules
if pip_cmd is None:
- self.pip_cmd = ['-m', 'pip', 'install']
+ self.pip_cmd = ['-m', 'pip', '-v', 'install']
else:
self.pip_cmd = pip_cmd
self.packages = packages
def _writeFile(self, directory, file_name, contents):
+ if not contents:
+ # We want to be able to override not having files
+ return
path = os.path.abspath(os.path.join(directory, file_name))
path_dir = os.path.dirname(path)
if not os.path.exists(path_dir):
self.assertEqual(exp_parsed, gen_parsed)
+class TestPEP517Support(base.BaseTestCase):
+ def test_pep_517_support(self):
+ pkgs = {
+ 'test_pep517':
+ {
+ 'requirements.txt': textwrap.dedent("""\
+ sphinx
+ iso8601
+ """),
+ # Override no setup.py.
+ 'setup.py': '',
+ 'setup.cfg': textwrap.dedent("""\
+ [metadata]
+ name = test_pep517
+ summary = A tiny test project
+ author = PBR Team
+ author-email = foo@example.com
+ home-page = https://example.com/
+ classifier =
+ Intended Audience :: Information Technology
+ Intended Audience :: System Administrators
+ License :: OSI Approved :: Apache Software License
+ Operating System :: POSIX :: Linux
+ Programming Language :: Python
+ Programming Language :: Python :: 2
+ Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ """),
+ 'pyproject.toml': textwrap.dedent("""\
+ [build-system]
+ requires = ["pbr", "setuptools>=36.6.0", "wheel"]
+ build-backend = "pbr.build"
+ """)},
+ }
+ pkg_dirs = self.useFixture(CreatePackages(pkgs)).package_dirs
+ pkg_dir = pkg_dirs['test_pep517']
+ venv = self.useFixture(Venv('PEP517'))
+
+ # Test building sdists and wheels works. Note we do not use pip here
+ # because pip will forcefully install the latest version of PBR on
+ # pypi to satisfy the build-system requires. This means we can't self
+ # test changes using pip. Build with --no-isolation appears to avoid
+ # this problem.
+ self._run_cmd(venv.python, ('-m', 'build', '--no-isolation', '.'),
+ allow_fail=False, cwd=pkg_dir)
+
+
class TestRepositoryURLDependencies(base.BaseTestCase):
def setUp(self):
# predicates in ()
_VERSION_SPEC_RE = re.compile(r'\s*(.*?)\s*\((.*)\)\s*$')
-
-# Mappings from setup() keyword arguments to setup.cfg options;
-# The values are (section, option) tuples, or simply (section,) tuples if
-# the option has the same name as the setup() argument
+# Mappings from setup.cfg options, in (section, option) form, to setup()
+# keyword arguments
CFG_TO_PY_SETUP_ARGS = (
(('metadata', 'name'), 'name'),
(('metadata', 'version'), 'version'),
--- /dev/null
+# PBR doesn't use the pyproject.toml interface internally yet as
+# fixing issues in the system will be difficult if PBR itself
+# depends on it. We will put this file into place at pyproject.toml
+# once we are more confident it works generally.
+
+[build-system]
+requires = ["setuptools>=36.6.0", "wheel"]
+build-backend = "pbr.build"
+backend-path = ["."]
--- /dev/null
+---
+features:
+ - |
+ PBR now includes a PEP 517 build-backend and can be used in
+ pyproject.toml build-system configuration. Setuptools continues
+ to be the underlying mechanism with PBR acting as a driver via
+ PEP 517 entrypoints.