Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support PEP 345 Project-URL metadata #1210

Merged
merged 4 commits into from Jan 5, 2018

Conversation

Projects
None yet
3 participants
@fungi
Copy link
Contributor

commented Nov 22, 2017

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 and setup.py 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

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 and setup.py 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
@fungi

This comment has been minimized.

Copy link
Contributor Author

commented Nov 22, 2017

An example built with this can be seen in the "Project Links" box in the top-right area of https://testpypi.python.org/pypi/mudpy/0.0.1.dev232 where the custom Project-URL entries for Bug Tracker, Documentation and Source Code are displayed.

@@ -57,6 +57,8 @@ def write_pkg_file(self, file):
file.write('License: %s\n' % self.get_license())
if self.download_url:
file.write('Download-URL: %s\n' % self.download_url)
for project_url in self.project_urls.items():

This comment has been minimized.

Copy link
@fungi

fungi Nov 23, 2017

Author Contributor

Should this be changed to operate on a sorted list of keys instead so that output order remains consistent between Python versions?

This comment has been minimized.

Copy link
@cryvate

cryvate Nov 23, 2017

Contributor

Presumably the order here is going to be the same as it is displayed in on PyPi?

The user will probably want to present a certain order that is not alphabetical. If the config is in code (i.e. setup.py) the user will have to make sure this preserves ordering (i.e. use a collections.OrderedDict, or dict on Python3.6+).

However, in the setup.cfg the dict creation is done by setuptools, and it isn't ordered. As python2.6 is not supported anymore, we can replace the dictionary creation with a collections.OrderedDict to preserve the order.

This comment has been minimized.

Copy link
@jaraco

jaraco Nov 25, 2017

Member

In light of #458, I suspect it's going to be a hard requirement that any package metadata be captured or stored in a deterministic order. Even in Python 3.6, the ordering "should not be relied upon." Therefore, I advise that the user be required to provide an ordering or that the metadata always sort the keys before storing the values.

This comment has been minimized.

Copy link
@fungi

fungi Dec 4, 2017

Author Contributor

Okay, so dict type structures from setup.cfg will need switching to collections.ordereddict under the covers anyway, and I shouldn't need to make any corresponding adjustments to this PR to accomodate?

As for "same as it is displayed in on PyPI" that's a bit uncertain at the moment. I agree that PyPI should make some attempt to preserve ordering of this, but my test upload is showing the reverse order from what's in the sdist PKG-INFO and wheel METADATA files on the cheeseshop (I haven't been able to sufficiently untangle the source there but I have a feeling order is being determined by DB query results). By contrast, the implementation in warehouse exhibits the same sort of list-of-tupes-fed-into-unordered-dict design as here (and is also not working at the moment, per discussion in pypa/warehouse#1419 ).

@jaraco
Copy link
Member

left a comment

Overall, this looks good. I do feel like it's the sort of change that demands more documentation than a mention in the declarative configuration.

@@ -98,6 +98,11 @@ def pypi_link(pkg_filename):
long_description_content_type='text/x-rst; charset=UTF-8',
keywords="CPAN PyPI distutils eggs package management",
url="https://github.com/pypa/setuptools",
project_urls={

This comment has been minimized.

Copy link
@jaraco

jaraco Nov 25, 2017

Member

I can't help but feel like this setting is adding a lot of repetition. Now https://github.com/pypa/setuptools appears three times in the metadata. Perhaps if this only included the Documentation link, I'd feel better than a usage that demands so much repetition. I don't feel strongly about it, though.

This comment has been minimized.

Copy link
@fungi

fungi Dec 4, 2017

Author Contributor

Happy to adjust this to whatever you like honestly. This was mostly just a placeholder while seeking feedback from the setuptools maintainers as to what they'd want to see added for this set (if anything). I'll scale this back to just the Documentation link here so it's still dogfooded, and then you can add/update any URLs you like in the future obviously.

setup.py Outdated
@@ -98,6 +98,11 @@ def pypi_link(pkg_filename):
long_description_content_type='text/x-rst; charset=UTF-8',
keywords="CPAN PyPI distutils eggs package management",
url="https://github.com/pypa/setuptools",
project_urls={
"Bug Tracker": "https://github.com/pypa/setuptools/issues",
"Documentation": "http://setuptools.readthedocs.io/",

This comment has been minimized.

Copy link
@jaraco

jaraco Nov 25, 2017

Member

Should be https.

This comment has been minimized.

Copy link
@fungi

fungi Dec 4, 2017

Author Contributor

Will fix, thanks!

@fungi

This comment has been minimized.

Copy link
Contributor Author

commented Dec 4, 2017

jaraco: Where you say "more documentation" where did you have in mind? It's already documented in the Core Metadata Specifications from the Python Packaging User Guide. Should I add a "Project URLs" subsection in docs/formats.txt under "Standard Metadata" summarizing the feature?

@@ -597,6 +597,7 @@ def write_pkg_info(cmd, basename, filename):
metadata = cmd.distribution.metadata
metadata.version, oldver = cmd.egg_version, metadata.version
metadata.name, oldname = cmd.egg_name, metadata.name
metadata.project_urls = cmd.distribution.metadata.project_urls

This comment has been minimized.

Copy link
@fungi

fungi Dec 4, 2017

Author Contributor

Realizing this line is likely unnecessary.

@fungi

This comment has been minimized.

Copy link
Contributor Author

commented Dec 4, 2017

On closer inspection I'm seeing that the metadata sections in formats.txt are about various sorts of metadata files rather than specific entries. Maybe just update examples in the "Basic Usage" section of docs/setuptools.txt instead?

Document project_urls setup parameter
Add an entry to the Setuptools usage documentation for the
project_urls dict, and include it in the "advanced" project example.

While at it, adjust the dogfooding use in Setuptools' own setup.py
to use HTTPS for the Documentation URL and drop redundant entries
for Bug Tracker and Source Code.

Also remove a no-op attribute reassignment from egg_info.py.
@fungi

This comment has been minimized.

Copy link
Contributor Author

commented Dec 18, 2017

Are there any other adjustments you'd want to see made to this?

@jaraco

jaraco approved these changes Jan 5, 2018

@jaraco jaraco merged commit d10a1bb into pypa:master Jan 5, 2018

0 of 2 checks passed

continuous-integration/appveyor/pr Waiting for AppVeyor build to complete
Details
continuous-integration/travis-ci/pr The Travis CI build is in progress
Details

jaraco added a commit that referenced this pull request Jan 5, 2018

openstack-gerrit pushed a commit to openstack/pbr that referenced this pull request Jan 8, 2018

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:

    pypa/setuptools#1210

Change-Id: I14e580c654b619cab7eb24e31f736056d6cf9bd4

openstack-gerrit added a commit to openstack/openstack that referenced this pull request Jan 22, 2019

Update git submodules
* Update pbr from branch 'master'
  - Do not globally replace path prefix
    
    If a subdirectory contained the source prefix in it's name, this was
    replaced globally e.g using share/ansible = ansible/*, with the following
    directory structure:
    
      ansible/roles/kolla-ansible/test
    
    would result in the files being installed as follows:
    
      share/ansible/roles/kolla-share/test
    
    whereas we expected:
    
      share/ansible/roles/kolla-ansible/test
    
    This patch changes the behavior so that only the first occurance is
    replaced.
    
    Change-Id: I0aab845315dab0aaccd5f67725d2ebcf0fd08aef
    Fixes-Bug: 1810804
    
  - Change openstack-dev to openstack-discuss
    
    Mailinglists have been updated. Openstack-discuss replaces openstack-dev.
    
    Change-Id: I18a5f9696659bce3c03018b636968d5c3c96dc73
    
  - Merge "Correct documentation hyperlink for environment-markers"
  - Fix incorrect use of flake8:noqa
    
    Adding the comment flake8:noqa in a file will skip linting the entire
    file. Most of the time, the intent was just to skip individual lines to
    handle exception cases.
    
    This gets rid of the "flake8:" prefix where it was used incorrectly and
    fixes a few legitimate errors that were being hidden by the entire file
    being skipped.
    
    The behavior is change in flake8 to handle this better, which will
    result in pep8 job failures if these are not fixes first. See more
    information in the 3.6.0 release notes:
    
    http://flake8.pycqa.org/en/latest/release-notes/3.6.0.html#features
    
    Change-Id: I1af4eb8bef9d0d0e3aa3bbbfd66a2fcb8ab336cb
    Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
    
  - Correct documentation hyperlink for environment-markers
    
    Previous hyperlink was redirected to root of the new documentation
    location which did not contain the right information.
    
    New link points directly to the right location.
    
    Change-Id: I3c83553a50036eadec74e7a00f3b312a7e5afa11
    
  - Merge "Add an option to skip generating RELEASENOTES.rst"
  - Merge "Skip test for testr hook being installed when testr is not available"
  - Merge "tox: Suppress output"
  - Merge "packaging: Remove support for pyN requirement files"
  - Merge "docs: Add docs for reno integration"
  - Merge "Use templates for cover and lower-constraints"
  - Use templates for cover and lower-constraints
    
    Use openstack-tox-cover template, this runs the cover job
    in the check queue only.
    
    Use openstack-lower-constraints-jobs template.
    
    Remove jobs that are part of the templates.
    
    Sort list of templates.
    
    Add coverage to test-requirements, otherwise tox -e cover will fail.
    
    Change-Id: I0eff88e5736243291d4777f642bc48c32deafa39
    
  - 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
    
  - tox: Suppress output
    
    Since the switch to stestr in commit 2222dbb47, the tests have taken to
    spewing a load of noise. This seems to be because we dropped the
    configuration for OS_STDOUT_CAPTURE and OS_STDERR_CAPTURE, which was
    previously configured in '.testr.conf'. This is fixed. However, it seems
    it's also necessary to explicitly pass the '--suppress-attachments'
    option to 'stestr' to properly silence things. This seems to be
    necessary because many pbr commands output to stdout by default, while
    other projects (nova, etc.) use 'logging'. Use of this option requires
    stestr 2.1.0 [1] so we bump the lower-constraint.
    
    As an aside, finding out what caused this output was easier said than
    done. I tried stestr, testr and fixtures, before finally finding it in
    subunit.
    
    [1] mtreinish/stestr@1316ebd
    
    Change-Id: I1678bcd26b41fdf09f98c36fc095d6d4c1826deb
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Support wheel 0.32.0+
    
    Wheel 0.32.0 removed the 'wheel install' command [1] and, subsequently,
    the 'wheel.install' module [2]. It also made 'WheelFile' a subclass of
    'zipfile.ZipFile' rather than a wrapper [2] and deprecated the '[wheel]'
    section of 'setup.cfg' in favour of '[bdist_wheel]'. Handle these
    changes.
    
    [1] pypa/wheel@353217f
    [2] pypa/wheel@8949250
    
    Change-Id: I2903089a07bdd2dc96437b9f65f2d2bba2741707
    
  - Merge "Remove my_ip from generated wsgi script"
  - Merge "remove pypy jobs"
  - Remove my_ip from generated wsgi script
    
    The variable is not used by the generated script and the
    socket calls will block in some contexts.
    
    Change-Id: Id5f9c14e2bdda434883c24bb05359c0c36a1b569
    
  - 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>
    
  - docs: Add docs for reno integration
    
    Change-Id: I9a77a4f6397464c33181d8b4bd2a9ae79c058b47
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Skip test for testr hook being installed when testr is not available
    
    pbr only depends on testrepository in the test requirements, so
    packaging efforts can decide to skip the dependency if they want to.
    As stestr is going to replace testrepository going forward, it makes
    sense to make dependencies to testrepository optional.
    
    Skip the test that requires testrepository in that scenario.
    
    Change-Id: I28c30411a5a6fdb071ebcc35e65ce1f4f1242498
    
  - Fix typo in contribution instructions.
    
    Change-Id: Ia514b4baf3f5079547d7c198eac60cab96ba3a0e
    Signed-off-by: Moises Guimaraes de Medeiros <moguimar@redhat.com>
    
  - Add release note for fix to bug 1786306
    
    This should make the feature more prominent.
    
    Change-Id: I49fa0c076837dc142a3374263925116776bb7ca2
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Merge "Move pbr-installation jobs in-tree"
  - Merge "add lib-forward-testing-python3 test job"
  - Move pbr-installation jobs in-tree
    
    These jobs are currently broken and to fix them we may need to make
    changes to the job definitions.  Since they're pbr-specific we might
    as well move them in-tree so we can iterate on them without going
    through the global repo.
    
    
    Needed-By: https://review.openstack.org/596535
    Change-Id: I10313a8a534a64113fa03d7ee3b0ed28e49fbf8e
    
  - Merge "Support subdirectory in the url"
  - Support subdirectory in the url
    
    Pip supports git+https://foo.com/zipball#egg=bar&subdirectory=baz
    when setup.py is not at the root directory of the project [1]. This
    commit keeps pbr function in this case.
    
    [1] https://pip.pypa.io/en/latest/reference/pip_install/#vcs-support
    
    Change-Id: I70dac755caacc89859a8646c090b69800401bbc0
    Closes-Bug: 1786306
    Signed-off-by: Wei Tie <nuaafe@gmail.com>
    
  - remove pypy jobs
    
    The pypy jobs are non-voting, do not work, and we don't really support
    the tool in other libraries. Let's drop the jobs.
    
    Change-Id: I5e75e4efffe927ccd394dc6bb4c0247777d7886b
    Signed-off-by: Doug Hellmann <doug@doughellmann.com>
    
  - add lib-forward-testing-python3 test job
    
    This is a mechanically generated patch to add a functional test job
    running under Python 3 as part of the python3-first goal.
    
    See the python3-first goal document for details:
    https://governance.openstack.org/tc/goals/stein/python3-first.html
    
    Change-Id: I67c07c2689c3e836a8b0ba3b2daa466af3e71b13
    Story: #2002586
    Task: #24322
    
  - add python 3.6 unit test job
    
    This is a mechanically generated patch to add a unit test job running
    under Python 3.6 as part of the python3-first goal.
    
    See the python3-first goal document for details:
    https://governance.openstack.org/tc/goals/stein/python3-first.html
    
    Change-Id: Ib7bd8ec9615b25f000b5473c8a80e2ddf602ec62
    Story: #2002586
    Task: #24322
    
  - switch documentation job to new PTI
    
    This is a mechanically generated patch to switch the documentation
    jobs to use the new PTI versions of the jobs as part of the
    python3-first goal.
    
    See the python3-first goal document for details:
    https://governance.openstack.org/tc/goals/stein/python3-first.html
    
    Change-Id: I8721027b63bc835185251b08c17b0e6ae3911cd8
    Story: #2003250
    
  - import zuul job settings from project-config
    
    This is a mechanically generated patch to complete step 1 of moving
    the zuul job settings out of project-config and into each project
    repository.
    
    Because there will be a separate patch on each branch, the branch
    specifiers for branch-specific jobs have been removed.
    
    See the python3-first goal document for details:
    https://governance.openstack.org/tc/goals/stein/python3-first.html
    
    Change-Id: I3320148c3757fd711b98024d795bd792c46df310
    Story: #2003250
    
  - Merge "tox: Re-add cover target"
  - Ignore Zuul when generating AUTHORS
    
    Change-Id: Id1626580dc76e2b2105b549873e88225186cb4fd
    
  - packaging: Remove support for pyN requirement files
    
    Change-Id: I7f915ecdc819bc4d3c6811949f12bdadb108a1ab
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - tox: Re-add cover target
    
    This was removed in an earlier patch but should not have been. Re-add it
    now.
    
    Change-Id: I68b785498a1a00f2301f610bbb8cb2e024416515
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Deprecate 'test' integration
    
    No one in OpenStack should be using this command any more and it's
    unlikely that anyone outside it is even using these. We don't want to
    have to continue supporting this going forward so let's start the
    deprecation process.
    
    Change-Id: I51e8ebb0268ff7ec1e71d66ff59422fcc7377c4c
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - 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>
    
  - 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>
    
  - 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>
    
  - 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>
    
  - 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>
    
  - trivial: Fix file permissions
    
    No reason for these to be executable.
    
    Change-Id: I9b22f4b9e679a5f618bb3f2a007327bdb0c80305
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - trivial: Remove 'tools/releasenotes_tox.sh'
    
    This is not needed since reno 2.1.0 (commit f8fc8f97) [1].
    
    [1] openstack/reno@f8fc8f9
    
    Change-Id: I335bba8c8bf4f2d73aba32ae762607e67ee3814c
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Add docstring from LocalManifestMaker.add_defaults
    
    A not-so-recent change to setuptools [1] has resulted in the inclusion
    of a docstring from distutils that uses broken rST.
    
      docstring of pbr.packaging.LocalManifestMaker.add_defaults:11:Definition
      list ends without a blank line; unexpected unindent.
    
    Resolve the issue by simply redefining the docstring.
    
    [1] pypa/setuptools@252ee6f...f1cf491
    [2] https://github.com/python/cpython/blob/3.4/Lib/distutils/command/sdist.py#L217-L229
    
    Change-Id: I84b5097bc31af601061a77dfea9d6a6f38b018cc
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Merge "Support python-requires metadata"
  - Update python3 versions in tox.ini envlist
    
    This updates the envlist to include modern versions of python. It
    doesn't really mean anything except for you run tox without specifying
    an environment it will now run py35 and py36 instead of py34 (which
    isn't used anywhere anymore)
    
    Change-Id: I935cf6d104fa5b516332cbb587d327dc587d0c32
    
  - fix tox python3 overrides
    
    We want to default to running all tox environments under python 3, so
    set the basepython value in each environment.
    
    We do not want to specify a minor version number, because we do not
    want to have to update the file every time we upgrade python.
    
    We do not want to set the override once in testenv, because that
    breaks the more specific versions used in default environments like
    py35 and py36.
    
    Change-Id: I70b4fb58c7800158907d80f83018e39d1b785668
    
  - Merge "Add leading 0 on alpha release in semver doc"
  - Support python-requires metadata
    
    Expose the python_require setuptools option via the python-requires
    metadata item in setup.cfg.
    
    Closes-Bug: 1735668
    
    Change-Id: Idf2bb90882121e118f5b7531e027d350c0e4a441
    Co-authored-by: Dennis Verspuij <dennisverspuij@users.noreply.github.com>
    
  - Revert "Remove win32/nt checks for wrapper script gen"
    
    This reverts commit 07de844615eaec520d817558462cda5f91f9b7b8.
    The output console_scripts generated after this commit landed are no
    longer directly callable from windows machines. Prior to the this
    reverts we wrapped console_script entrypoints in a .exe on windows so
    you could directly execute them, just like on *nix systems. However,
    after the commit we are no longer generating callables on windows.
    Instead PBR generates a txt file, without a suffix, that is not a valid
    executable on windows. It is exactly the same output as on a *nix
    system, but this neglects that scripts with shebangs don't work on
    windows. (For example generated output on windows see [1]) The exe files
    were needed so that we could directly execute the console scripts on
    windows. This commit restores this functionality so that PBR will
    properly generate executable console_scripts on windows machines again.
    
    Closes-Bug: #1761134
    [1] http://paste.openstack.org/show/722389/
    
    Change-Id: Ifc13879b7f64650d444e3a14df1a53b2172828e4
    
  - Add leading 0 on alpha release in semver doc
    
    Change-Id: I3c13be99237ff8840f36e21cae684d346defc03d
    Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
    
  - Merge "Fix builddoc with sphinx <= 1.6"
  - Don't poke in pip for requests
    
    Pip10 has removed the ability to poke inside it for things like
    requests.  Explicitly add it to the venv.
    
    Change-Id: Ie12168091dc4c737f3913720c1743bea666b5d9c
    
  - Fix builddoc with sphinx <= 1.6
    
    I went to build infra-specs which specifies sphinx==1.5.6 and hit
    
     Traceback (most recent call last):
       File "setup.py", line 29, in <module>
         pbr=True)
       ...
      File ".../pbr/builddoc.py", line 235, in run
        self._sphinx_run()
      File ".../pbr/builddoc.py", line 162, in _sphinx_run
        freshenv=self.fresh_env, warningiserror=self.warning_is_error)
      File ".../sphinx/application.py", line 244, in __init__
        self._init_builder(self.buildername)
      File "...//sphinx/application.py", line 311, in _init_builder
        raise SphinxError('Builder name %s not registered' % buildername)
     sphinx.errors.SphinxError: Builder name h not registered
    
    It appears to be a typo introduced with
    I18bbf693bca2f6e49d822ae2940d2170a2b90ce9; make sure we're walking the
    self.builders list; not the string self.builder.
    
    Change-Id: Ic038029c361b3ede48f2b495c74430d3ad1eab82
    
  - Merge "Better Sem-Ver header handling"
  - add lower-constraints job
    
    Create a tox environment for running the unit tests against the lower
    bounds of the dependencies.
    
    Create a lower-constraints.txt to be used to enforce the lower bounds
    in those tests.
    
    Add openstack-tox-lower-constraints job to the zuul configuration.
    
    See http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html
    for more details.
    
    Change-Id: Ic5a53fede983d15b8873708f213a87ce0f182277
    Depends-On: https://review.openstack.org/555034
    Signed-off-by: Doug Hellmann <doug@doughellmann.com>
    
  - 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
    
  - Merge "builddoc: Treat '[pbr] autodoc_tree_excludes' as a multi-line opt"
  - Merge "update parse test to use reliable comparison"
  - builddoc: Treat '[pbr] autodoc_tree_excludes' as a multi-line opt
    
    We were treating this a single line, comma- or space-delimited option.
    This was incorrect and was causing issues for projects like neutron-lib
    when Sphinx 1.7, which switches from optparse to the stricter argparse
    was used. In addition, this project was including comments in the
    multi-line opt. These were being passed through but Sphinx < 1.7 was
    simply ignoring them. These are now filtered out.
    
    Change-Id: I177edf0f44714175da220cf3a960b8f23aa4ab09
    Closes-Bug: #1753082
    
  - update parse test to use reliable comparison
    
    Different versions of setuptools seem to produce
    different representations of the version specifiers,
    so use pkg_resources to parse the values again
    and then compare the resulting objects so we
    aren't tripped up by rendering differences.
    
    Change-Id: Ic67cc936208dbd96b6d811c6aa284fd87df5b118
    Signed-off-by: Doug Hellmann <doug@doughellmann.com>
    Closes-Bug: #1758877
    
  - Better Sem-Ver header handling
    
    This makes Sem-Ver header handling more reliable by ignoring any
    potential user configured git log output format. Instead PBR supplies
    its own format string that will output the commit message bodies in
    their entirety without wrapping and other whitespace formatting done for
    humans.
    
    Change-Id: I957a8c182585119534b4e02c34e7140a3e07d1d6
    Related-Bug: 1738685
    Fixes-Bug: 1704625
    
  - 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
    
  - Updated from global requirements
    
    Change-Id: I7d0c896273f4de46e7d9dd494902adf5c1e19b30
    
  - Merge "future-proof invocation of apidoc"
  - Updated from global requirements
    
    Change-Id: I0f72806130503a47a3caf737e2cea082d42fed55
    
  - Merge "Updated from global requirements"
  - future-proof invocation of apidoc
    
    Newer versions of Sphinx have moved the apidoc module into sphinx.ext
    and the API is slightly different (the function expects sys.argv[1:]
    instead of sys.argv[:]. So, figure out where we can import it from and
    set a flag so we can invoke it properly. See this change in sphinx for
    details:
    sphinx-doc/sphinx@87630c8
    
    Change-Id: I8235968f8a474c9e6088d935d0868570b2917c07
    Signed-off-by: Doug Hellmann <doug@doughellmann.com>
    
  - emit warning correctly
    
    distutils.log has a warn() function but not a warning() function.
    
    Change-Id: Iebfdb9e4d062d188ef9c73b66007a70f9c289ed2
    Signed-off-by: Doug Hellmann <doug@doughellmann.com>
    
  - Updated from global requirements
    
    Change-Id: I7eb765dc83e6983b5b52e518db5039a71efb036c
    
  - deprecations: Deprecate support for '-py{N}' requirements
    
    This has been marked as deprecated for a long time in the docs but
    we've done nothing to indicate this from a code perspective. Fix this.
    
    Change-Id: I916bf16773a2a2cffa3c352d5dba52e3fbc298c2
    Fixes-Bug: #431529
    
  - Merge "doc: Minor rework of usage doc"
  - Merge "doc: Rework features doc"
  - Merge "Support PEP 345 Project-URL metadata"
  - 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>
    
  - 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>
    
  - Support v<semver> version
    
    Allow protect tag (in gitlab, github) using "v*" regex.
    
    Change-Id: I3e6eb1031ae92349c5a9531b143b6470482664e7
    Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
    
  - Merge "Deprecate testr and nose integration"
  - Deprecate testr and nose integration
    
    These are not recommended for use in OpenStack anymore and both nose and
    testr offer native setuptools commands that can be manually aliased to
    'test' on a per-project basis if necessary. Deprecate with an eye to
    removal in the future.
    
    Change-Id: I753f2ffe8b223b180b8ed813d879b3a28b47a1ab
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Merge "tests: Increase coverage of requirements parsing"
  - Merge "trivial: Move packaging tests to test_packaging"
  - tests: Increase coverage of requirements parsing
    
    This is mostly an exercise in refactoring, moving tests into a single
    test case. An additional test is added, however, verifying that default
    requirement files are indeed used if nothing else is provided.
    
    Change-Id: I8dc6cc8c50f1280f24731480501fab61fc401809
    
  - trivial: Move packaging tests to test_packaging
    
    There's a little bit of duplication going on here. Resolve this by
    moving tests that predominantly focus on FILE to tests/test_FILE.
    
    Change-Id: I29355155853e543d017db00c936bcdc88c1c97ad
    
  - Put test-requirements into an extra named 'test'
    
    In bindep files we use a 'test' environment to indicate dependencies
    that are needed for testing. Make the same thing available for our
    python dependencies, allowing things like "pip install .[test]" or "pip
    install shade[test]" to work.
    
    Change-Id: If3ad8b6a79a8cab2f7434b73207f35384e8516ba
    
  - Merge "Support Description-Content-Type metadata"
  - 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
    
  - Avoid tox_install.sh for constraints support
    
    We do not need tox_install.sh, pip can handle constraints itself
    and install the project correctly. Thus update tox.ini and remove
    the now obsolete tools/tox_install.sh file.
    
    This follows https://review.openstack.org/#/c/508061 to remove
    tools/tox_install.sh.
    
    Change-Id: I0a80865a8a18c49b4d883850488cc0c73fe1bfcd
    
  - Test on Python 3.6
    
    Change-Id: Ifbea05bd0c3ee014d97fb1633cabed348f9ce9ec
    Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
    
  - 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:
    
        pypa/setuptools#1210
    
    Change-Id: I14e580c654b619cab7eb24e31f736056d6cf9bd4
    
  - Merge "Updated from global requirements"
  - Remove setting of version/release from releasenotes
    
    Release notes are version independent, so remove version/release
    values. We've found that projects now require the service package
    to be installed in order to build release notes, and this is entirely
    due to the current convention of pulling in the version information.
    
    Release notes should not need installation in order to build, so this
    unnecessary version setting needs to be removed.
    
    This is needed for new release notes publishing, see
    I56909152975f731a9d2c21b2825b972195e48ee8 and the discussion starting
    at
    http://lists.openstack.org/pipermail/openstack-dev/2017-November/124480.html
    .
    
    Change-Id: I10847bca5bb081466807355c88a105f4e4c6564e
    
  - Updated from global requirements
    
    Change-Id: I4ac147dac42058983ab10387c3b3338500a7334c
    
  - Merge "Remove unnecessary 'if True'"
  - Merge "Discover Distribution through the class hierarchy"
  - Merge "Use 'build_reno' setuptools extension if available"
  - Use 'build_reno' setuptools extension if available
    
    reno recently gained a 'build_reno' command that could be used to build
    a reno cache file via setuptools. Integrate this and start including
    that file as part of the final distribution.
    
    Change-Id: I54cb7a894770040165cc918469cb0ed486518789
    
  - Remove unnecessary 'if True'
    
    This was done in change I7418cc3ab36823d029a93f86df9c8b25aa7b0c5f to
    keep the diff clean [1]. If can be removed now.
    
    [1] https://bugs.launchpad.net/pbr/+bug/1620153/comments/1
    
    Change-Id: Id66ca0522cc4c5601714e1e9ba9379492edc5905
    
  - Discover Distribution through the class hierarchy
    
    Discovering the underlying Distribution class through the class
    hierarchy saves unpatching and repatching.
    
    Based on commits ed579a5dbb2a1843874969a58bb2b6f1eca2e50d and
    10b87cc1eb92f50906ff645d0221c74f03de94b9 from [1].
    
    [1] https://github.com/jaraco/pbr/commits/issue-1620153-signoff
    
    Closes-Bug: #1620153.
    Change-Id: I7418cc3ab36823d029a93f86df9c8b25aa7b0c5f
    Signed-off-by: Jason R. Coombs <jaraco@jaraco.com>
    Signed-off-by: Monty Taylor <mordred@inaugust.com>
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - Add reno for release notes management
    
    Change-Id: I36b8193b22123a409b729c7b9f4309507379f1ad
    
  - Merge "Deprecate support for Sphinx < 1.6"
  - Merge "Remove support for command hooks"
  - Merge "builddoc: Use '[sphinx_build] builders' with Sphinx < 1.6"
  - Remove support for command hooks
    
    distutils2 is long dead and many of its best ideas have been
    incorporated into setuptools. One of the ideas that *has not* been
    incorporated is the idea of command hooks, of either the pre or post
    kind. pbr is still carrying the code for this, and there are several
    issues with this:
    
    - No one is using this functionality in OpenStack and, given the
      complete lack of documentation on the matter, it's very doubtful that
      it's being used anywhere else [1]
    - It's causing issues for projects attempting to hook into the
      'distutils.commands' entry point on Python 2.7, which it seems no else
      must have attempted yet [2].
    - distutils2 is dead and advanced features like this that we don't
      explicitly need should not be retained
    
    We could attempt to fix this but why bother? Good riddance, I say.
    
    [1] http://codesearch.openstack.org/?q=pre_hook%5C.&i=nope&files=&repos=
    [2] http://codesearch.openstack.org/?q=distutils.commands&i=nope&files=&repos=
    
    Change-Id: I01f657034cffbf55ce830b7e8dbb6b3d94c1fd18
    
  - Remove dead code
    
    The 'monkeypatch_method' function no longer has any callers and can be
    removed.
    
    Change-Id: I402eb482d2c1db7331bd872c5169db8e59c9a34f
    Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
    
  - 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
    
  - builddoc: Use '[sphinx_build] builders' with Sphinx < 1.6
    
    In 'c024066', we resolved an issue with pbr and Sphinx 1.6+ and
    implicitly started using Sphinx 1.6's support for declaring multiple
    builders as part of the setuptools plugin. However, in doing so, we
    neglected to provide a migration path for folks who were using the older
    option. This meant folks using the '[sphinx_build] builders' option
    would see a breaking change in behavior when upgrading to a pbr release
    including the above change. Resolve this issue now.
    
    Note that we want to deprecate support for this option in the future,
    but doing so is not a backportable change and will be done separately.
    
    Change-Id: Ic2fe67f932ba26b665110ae66431a5359fc50016
    Closes-Bug: #1702872
    Related-Bug: #1691129
    
  - Remove win32/nt checks for wrapper script gen
    
    It now appears safe to remove the Windows conditions that skip
    executing override_get_script_args() and install_wrapper_scripts().
    Having demonstrated that bdist_wheel works, it should now work for
    sdist too, and experiments do indeed appear to bear that out.
    
    Change-Id: Ic243a3ccd3aee0dcb17d6419bc44271f5ebe5551
    Closes-Bug: 1521407
    
  - Merge "Updated from global requirements"
  - Updated from global requirements
    
    Change-Id: Icc5bbd374739afcca65d13b2600d8d70b6db291a
    
  - Remove py26 support
    
    as of mitaka, the infra team won't have the resources available to
    reasonably test py26, also the oslo team is dropping py26 support
    from their libraries. sine we rely on oslo for a lot of our work,
    and depend on infra for our CI, we should drop py26 support too.
    
    Change-Id: I628f5a1463a893bfc16f795ef7144cd2376130de
    Closes-Bug: #1519510
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.