123 Commits

Author SHA1 Message Date
Jeremy Stanley
5d4a1815af docs: Drop SetupTools from pyproject.toml example
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
2025-01-28 17:36:46 +00:00
Jeremy Stanley
6adf2f9313 Update setup.cfg example in Usage document
This replaces the prior example (an outdated verbatim content of
PBR's setup.cfg file) with a clearer fictional one.

Change-Id: I6284e92b5214e7b816ae2a3a279f69160a029c0e
2025-01-28 12:32:53 +00:00
Jeremy Stanley
917a0196c4 Clarify PEP 517 implementation for users
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
2025-01-07 16:55:38 +00:00
Clark Boylan
50fceaca0d Remove the use of six from PBR
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
2025-01-03 09:56:19 -08:00
Clark Boylan
f797fc1c58 Update PBR testing for Noble
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
2024-12-19 09:38:03 -08:00
Stephen Finucane
457a89ffda Add support for PEP-660
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>
2023-11-01 12:53:18 -07:00
Clark Boylan
ee04b62de2 Use _ instead of - in setup.cfg directives
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
2023-05-31 13:25:23 -07:00
Clark Boylan
47c5afe79a Remove sphinx doc building integration
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
2023-05-31 13:25:13 -07:00
Jeremy Stanley
571e259969 Drop wheel from pyproject.toml examples
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
2022-02-28 14:35:37 +00:00
Clark Boylan
d21c2caf1d Clarify the need for setup.py with PEP517
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
2021-11-08 08:56:18 -08:00
Monty Taylor
09ee153410 Add a PEP517 interface
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
2021-11-03 10:05:32 -07:00
Hervé Beraud
8e47cad901 Dropping lower constraints testing
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
2021-03-09 12:25:45 +01:00
Hervé Beraud
f5e4c6577a Adding pre-commit
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>
2020-10-21 16:48:08 +00:00
Zuul
bf28efb263 Merge "Add Release Notes to documentation" 2020-08-27 16:56:57 +00:00
Jeremy Stanley
175fad9af9 Add Release Notes to documentation
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
2020-08-11 21:20:17 +00:00
Zuul
c9f0f38f03 Merge "Re-add ChangeLog" 2020-08-06 22:15:07 +00:00
Zuul
c829e50826 Merge "Update some url to use opendev.org" 2020-08-06 16:23:53 +00:00
Jeremy Stanley
5fdbae5952 Re-add ChangeLog
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
2020-08-06 13:10:36 +00:00
Antoine Musso
07b6ac85e6 Update some url to use opendev.org
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
2020-08-06 15:09:50 +02:00
Andreas Jaeger
2242cb652e Support newer openstackdocstheme
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
2020-08-06 08:33:50 +00:00
Ben Nemec
96b84a9014 Stop using pbr sphinx integration
Switch to sphinx-build directly and add sphinxcontrib-apidoc for
generated api docs.

Change-Id: I089a7695986892dcb47c5b5e79a6a227891a2347
2019-06-07 18:37:58 +01:00
Hervé Beraud
30926f6dbe Update Sphinx requirement
Sphinx 2.0 no longer works on python 2.7, so we need to start capping it
there.

Change-Id: Ia13b8a75f11ee997e00e817464829ce8b86d2e16
2019-05-16 15:33:37 +02:00
Ben Nemec
fba29ab4f1 Typo fix: s/extract_mesages/extract_messages/
Change-Id: If4141dd8e8876fc3d9d3e7579177a44f7c7da563
2019-03-25 16:39:59 +00:00
melissaml
f3811cb72b Change openstack-dev to openstack-discuss
Mailinglists have been updated. Openstack-discuss replaces openstack-dev.

Change-Id: Ifc72c767e76283df4608da8d7097ef86c367a5cf
2019-02-15 16:05:59 +00:00
Zuul
bd300d07ee Merge "Add an option to skip generating RELEASENOTES.rst" 2018-10-16 16:08:13 +00:00
Zuul
32bfe7808f Merge "packaging: Remove support for pyN requirement files" 2018-10-06 21:14:59 +00:00
Zuul
36da1a13c0 Merge "docs: Add docs for reno integration" 2018-10-06 18:34:58 +00:00
Ian Wienand
77e75e25e3 Special case long_description_content_type
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
2018-10-05 13:24:49 +00:00
Tim Burke
a34629a956 Add an option to skip generating RELEASENOTES.rst
This is comparable to the existing skip_authors and skip_changelog
options.

Change-Id: Icfefb20fb3c9b2e983e56f6e5440119d4dce2d3f
Co-Authored-By: Stephen Finucane <stephenfin@redhat.com>
2018-09-24 13:05:35 +01:00
Stephen Finucane
dac6f829af docs: Add docs for reno integration
Change-Id: I9a77a4f6397464c33181d8b4bd2a9ae79c058b47
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
2018-09-24 11:59:02 +01:00
Moises Guimaraes de Medeiros
7b3e47736b Fix typo in contribution instructions.
Change-Id: Ia514b4baf3f5079547d7c198eac60cab96ba3a0e
Signed-off-by: Moises Guimaraes de Medeiros <moguimar@redhat.com>
2018-09-10 16:32:52 +02:00
Stephen Finucane
8ea9d9262d packaging: Remove support for pyN requirement files
Change-Id: I7f915ecdc819bc4d3c6811949f12bdadb108a1ab
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
2018-07-23 11:04:39 +01:00
Stephen Finucane
ecbda3076e Deprecate 'build_sphinx' integration
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>
2018-07-18 15:23:44 +01:00
Stephen Finucane
75bac5d50b Add Sphinx extension
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>
2018-07-18 15:22:16 +01:00
Stephen Finucane
553b73a7a7 doc: Add documentation for missing '[pbr]' options
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>
2018-07-18 15:13:41 +01:00
Stephen Finucane
9605bf7a74 doc: Fix formatting of packagers guide
We're going to be making some changes to this shortly.

Change-Id: I07e8421dd8b6598da75348e3d8d3baae3ae457ff
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
2018-07-18 15:13:41 +01:00
Stephen Finucane
2222dbb47e Switch to stestr
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>
2018-07-18 10:12:17 +01:00
Gaetan Semet
46c56c972b Add leading 0 on alpha release in semver doc
Change-Id: I3c13be99237ff8840f36e21cae684d346defc03d
Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
2018-05-24 14:42:36 +00:00
Ben Nemec
10fce39a7b Explicitly read setup.cfg as utf-8 on Python 3
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
2018-03-27 10:54:57 +00:00
Clark Boylan
7e2d1666f2 Make docs on env vars a little clearer
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
2018-03-20 14:44:07 -07:00
Zuul
f4a1a7dec0 Merge "doc: Minor rework of usage doc" 2018-01-09 00:33:03 +00:00
Zuul
0fdb49eab7 Merge "doc: Rework features doc" 2018-01-09 00:25:01 +00:00
Zuul
8a9a6d80bf Merge "Support PEP 345 Project-URL metadata" 2018-01-08 13:54:33 +00:00
Stephen Finucane
faba96da13 doc: Minor rework of usage doc
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>
2018-01-08 11:39:12 +00:00
Stephen Finucane
2493b3ad70 doc: Rework features doc
Break this document into sections and expand upon some of these.

Change-Id: Ia6a3eed984ce4257cce9df0997e6be2d8d3bc683
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
2018-01-08 11:39:11 +00:00
Gaetan Semet
4c775e7890 Support v<semver> version
Allow protect tag (in gitlab, github) using "v*" regex.

Change-Id: I3e6eb1031ae92349c5a9531b143b6470482664e7
Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
2018-01-05 14:19:47 +00:00
Jeremy Stanley
538d2c21a1 Support Description-Content-Type metadata
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
2017-12-04 19:46:41 +00:00
Jeremy Stanley
839ef3428d Support PEP 345 Project-URL metadata
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
2017-11-22 23:55:17 +00:00
Stephen Finucane
cc703f4926 Deprecate support for Sphinx < 1.6
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
2017-09-25 16:22:48 +01:00
Doug Hellmann
bdc26f1303 switch from oslosphinx to openstackdocstheme
Depends-On: Ifc5512c0e2373cf3387e0e0498268eab092e52bb
Change-Id: I58acb2cc35d33af586201a4667d82388a51987d5
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2017-06-26 16:51:31 -04:00