Since PBR now declares its own explicit dependency on setuptools, there's
no need to specify it separate from PBR in build backend settings. It
should "just work" everywhere.
Change-Id: I015b271335b9419ac5a73f7f19320087dd5eb1a2
This replaces the prior example (an outdated verbatim content of
PBR's setup.cfg file) with a clearer fictional one.
Change-Id: I6284e92b5214e7b816ae2a3a279f69160a029c0e
This updates the Usage document to include minimal setup.cfg and
setup.py files for projects looking to switch to keeping packaging
metadata in pyproject.toml files.
Change-Id: I6c3fa342414bc63b7174c1f5139124d83297a7af
Outside of testing the only real place six was used was to import
configparser in a backward and forward compatible manner. We can do
conditional imports ourselves and drop the user of six from pbr which
drops a runtime requirement.
In testing we used six for configparser and unicode strings. We fix
configparser as in pbr proper and simply use u'' strings where six.u()
was previously used.
Change-Id: I3b38c9a9c3c1a8baf38993b459ea72715b91776a
We are running CI jobs on Ubuntu Noble by default now which brings us a
newer version of python among other things. Update the CI jobs for PBR
to run on this newer platform.
Fixups in this change include:
* Update the version of hacking run by pre-commit to 7.0.0.
The prior verison (4.0.0) does not run under python3.12 which is what
we get in the pep8 jobs now.
* Ignore the new H216 rule in newer hacking. This rule wants us to use
unittest.mock but this was only available since python3.3 and we
still test against python2.7.
* Update six dependency to >=1.16.0 in both doc/requirements.txt and
test-requirements.txt. six.moves is not importable under python3.12
prior to this version.
* Add setuptools to doc/requirements.txt. PBR installs itself as part
of the documentation building process and python3.12 does not have
setuptools installed by default.
* Add setuptools to test-requirements.txt. PBR relies on setuptools
but python3.12 on Noble does not include it by default. The job
was previously passing because testtools expresses a dependency on
setuptools. Make the dependency from the PBR side explicit.
* Add setuptools to tools/integration.sh virtualenv creation. When this
runs on python3.12 we need to ensure setuptools is present as it
isn't installed by default.
* Add libpcre3-dev to tools/integration.sh. We try to build a wheel for
python-pcre and this fails without pcre.h being available.
* Drop cython3-dbg from the integration testing package install list.
Noble dropped this package entirely and it is no longer available.
* Add setuptools to virtualenvs created by test_integration.py. This is
the default elsewhere, but wasn't in integration tests. This is now
required because integration tests run on Noble with python3.12.
* Update the nopbr integration test to stop using setup.py test. This
setuptools command has been removed from setuptools and it simply
fails. Instead we install both packages, check if the dependency is
present and that pbr was pull in via running pbr freeze.
* Refactor LTS setuptools and pip version scenario setups. Python3.12
breaks compatibility with many older LTS versions. We set up the
scenario lists once for multiple tests and then run the job on Jammy
and Noble for coverage.
* Make the python3.12 job voting. It passes and we expect python3.12 to
be supported by PBR.
Co-Authored-By: Sven Kieske <kieske@osism.tech>
Co-Authored-By: Artem Goncharov <artem.goncharov@gmail.com>
Change-Id: I3bb6a2fe93672d085faa5ab63b478e530449d63f
As with PEP-517 support, this is simply a shim over the setuptools
implementation added in setuptools v64.0.0 [1].
[1] https://github.com/pypa/setuptools/pull/3488
Change-Id: I32f974db37e364cf634b050b40bf0820dce0a3a3
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Setuptools deprecated -'s at some point and they result in a bunch of
warnings in failed tests. This is distracting and eventually is likely
to create real errors. Go ahead and fix them now.
Change-Id: If3594269495ae1f3cefffd4c4f38d87af5c7fdfe
Setuptools and sphinx [0] have removed support for building docs through
setup.py. This has broken imports which break our own local doc builds.
Lets just remove it all (including the tests) so that we are compatible
with modern setuptools and sphinx.
An alternative approach would be to do conditional imports and continue
to support this for old setuptools and sphinx. But that feels like a
dead end that will be difficult to test. Probably better to rip this
bandaid off.
[0] https://www.sphinx-doc.org/en/master/changes.html#id7
Change-Id: I65038caceb192f495288414079ca0f07ce6318bb
Per https://github.com/pypa/setuptools/pull/3056 the addition of
wheel in build_system.requires is redundant since SetupTools already
drags it in anyway. Simplify our recommendations accordingly.
Change-Id: I0359ed11a6f0c54dc1af6a7f5f34e49476c58fb0
There was a misunderstanding that PBRs PEP517 build hooks meant we no
longer needed a setup.py. But it turns out the setuptools build_meta
hooks that we wrap call out to setup.py. This means PBR will continue to
need to be used in conjunction with a setup.py.
This is better for backward compatibiltiy anyway so not a huge loss.
Document this more properly and update the test to reflect it.
Change-Id: If4320da1e89a5c765e0bfe56b724364f9cba34f3
pep517 defines a new module method of specifying build backends.
To allow pbr to exist in this world, we should define the interface
that's needed. For this to be used, one will put:
[build-system]
requires = ["pbr>=5.7.0", "setuptools>=36.6.0", "wheel"]
build-backend = "pbr.build"
Into pyproject.toml - and the pep517 interface will be used.
This doesn't really change anything else - it just makes us support this.
So by itself this commit isn't SUPER helpful. But maybe let's take baby
steps with something this prone to strife, yeah?
After this we can start teasing some things apart and doing our
own things directly.
Co-Authored-By: Clark Boylan <clark.boylan@gmail.com>
Change-Id: I293f59b5074a38c78adffe580de2f1533bb01ce7
We facing errors related to the new pip resolver, this
topic was discussed on the ML and QA team proposed to
to test lower-constraints [1].
I propose to drop this test because the complexity and recurring pain needed
to maintain that now exceeds the benefits provided by this mechanismes.
Replace assertTrue by assertIn to fix with the latest flake8 version.
Add six in the documentation requirements to fix the build.
Fix the conflict status with hacking.
[1] http://lists.openstack.org/pipermail/openstack-discuss/2020-December/019390.html
Change-Id: I580da15fefd6ad352e69749b77cc4664aef84f9c
Introduced changes:
- pre-commit config and rules
- Add pre-commit to pep8 gate, Flake8 is covered in the pre-commit hooks.
- Applying fixes for pre-commit compliance in all code.
Also commit hash will be used instead of version tags in pre-commit to
prevend arbitrary code from running in developer's machines.
pre-commit will be used to:
- trailing whitespace;
- Replaces or checks mixed line ending (mixed-line-ending);
- Forbid files which have a UTF-8 byte-order marker (check-byte-order-marker);
- Checks that non-binary executables have a proper
shebang (check-executables-have-shebangs);
- Check for files that contain merge conflict strings (check-merge-conflict);
- Check for debugger imports and py37+ breakpoint()
calls in python source (debug-statements);
- Attempts to load all yaml files to verify syntax (check-yaml);
- Run flake8 checks (flake8) (local)
For further details about tests please refer to:
https://github.com/pre-commit/pre-commit-hooks
Change-Id: I730018e2bf788be5ac4e993af1746296206edfc1
Signed-off-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
We're building the sdist to be able to add PBR's changelog in its
docs, so may as well publish the Release Notes document it builds
too.
Change-Id: Icd1b4ae04de8034bc15db87be457751e70e26f6d
One of PBR's features is ChangeLog generation, so it only makes
sense that we would include PBR's ChangeLog in published
documentation too. (Also publishing a ChangeLog is helpful.)
Change-Id: Ie1561c0852dfc6731c29e9202f74f0e4c4b08786
The git web URL is now: https://opendev.org/openstack/pbr
Also stop linking README.rst to no more existing history/changelog
documentation page (removed by 96b84a90141).
Change-Id: I56b0e2b86a7fc66c5ae25e06175033a885f500f6
openstackdocstheme 2.2.0 introduces new variables, add them here so that
both older and newer openstackdocstheme versions are supported.
2.2.0 suport the old settings but in the future those might get removed,
so let's be future-proof.
Since this repo is still supporting py27, we need support for older
openstackdocstheme versions.
Change-Id: I6ee389843d1d959cffb126e0cd56ef6ef1e2f5e1
As described in the pypa pull request, special-case passing through
these fields into the metadata. setuptools will maintain them.
Change-Id: I89eb8c6d627790680a61a0a4b7490191b6e8e90c
Closes-Bug: #1762494
This is comparable to the existing skip_authors and skip_changelog
options.
Change-Id: Icfefb20fb3c9b2e983e56f6e5440119d4dce2d3f
Co-Authored-By: Stephen Finucane <stephenfin@redhat.com>
We now have a path away from this feature, so let's deprecate it while
we can.
Change-Id: Idfc34b9085c6da9b8cac24986be5f3bad142d927
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This duplicates what already exists in openstackdocstheme but provides a
migration path for users outside of the OpenStack ecosystem.
Change-Id: I73750b3fe984f9d2f339aac0f435a83ee68c89da
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
There are more that just autodoc options in here. Some formatting issues
are also corrected.
Change-Id: I075281d97c2fc7981a38ff1ddbb4ec76717ac726
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
We're going to be making some changes to this shortly.
Change-Id: I07e8421dd8b6598da75348e3d8d3baae3ae457ff
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
According to Openstack summit session [1], stestr is maintained project
to which all Openstack projects should migrate. Let's switch to stestr
as other projects have already moved to it.
While we're at it, we also fix the docs requirements and removed the
unused 'pypy' and 'cover' tox targets.
[1] https://etherpad.openstack.org/p/YVR-python-pti
Change-Id: I424068adc9092be2cf40d117c9dc4e92bb51e804
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Per the referenced bug, relying on the terminal encoding to read
setup.cfg is not safe. Unfortunately, Python 2 doesn't accept an
encoding when reading config files so we need a fallback path for
that version.
Change-Id: If49344db2f9139c0557f6acd17671163e02468a5
Closes-Bug: 1745396
It was pointed out that the packager docs don't make it super obvious
that the env var settings that packagers can set are env vars. Add
export statements to the docs to imply it a bit more that we are talking
about env vars here.
Change-Id: I9e9eefa661994237a63b59dcefab11961ef339e1
Fixes-bug: 1724425
Reorder some section to highlight those that are totally unique to pbr
rather than simply modified.
Change-Id: I8cea0ae7d85409573dc6cf1a5d2b7a8ebc5fe8b8
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Break this document into sections and expand upon some of these.
Change-Id: Ia6a3eed984ce4257cce9df0997e6be2d8d3bc683
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Allow protect tag (in gitlab, github) using "v*" regex.
Change-Id: I3e6eb1031ae92349c5a9531b143b6470482664e7
Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
As of setuptools 36.4.0, support for Description-Content-Type
metadata was added via the long_description_content_type variable.
Add a metadata.description-content-type option for setup.cfg so it
can be provided through PBR. This makes it possible to instruct PyPI
and potentially other frontends to know an explicit RFC 1341 content
type, along with character set and variant, for the accompanying
long description.
Change-Id: I852f603d9ca4e4cd469eab4cae9933ef2581e3af
By including one or more Project-URL entries in PKG-INFO metadata,
PyPI can display helpful hyperlinks in a generic manner. Add support
here to be able to pass it through setup.cfg with a project_urls
dict. See the corresponding section of the Core Metadata
Specifications from the Python Packaging User Guide for details:
https://packaging.python.org/specifications/core-metadata/#project-url-multiple-use
Setuptools implementation is underway here:
https://github.com/pypa/setuptools/pull/1210
Change-Id: I14e580c654b619cab7eb24e31f736056d6cf9bd4
We don't want to support older versions of Sphinx forever. While
OpenStack's global requirements have been bumped to Sphinx 1.6, there
are non-OpenStack users in the wild. Give them a chance to upgrade to
the newer version before we completely remove support.
This also gives us a chance to deprecate the '[sphinx_build] builders'
setuptools option, which is no longer necessary with Sphinx 1.6+. Do
this. The documentation is updated to reflect this (and some references
to a "custom" 'source_dir' option removed, as it's not at all specific
to pbr).
Change-Id: I18bbf693bca2f6e49d822ae2940d2170a2b90ce9
Related-Bug: #1702872