Hello community,
here is the log from the commit of package python-pbr for openSUSE:Factory checked in at 2017-07-04 11:56:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pbr (Old)
and /work/SRC/openSUSE:Factory/.python-pbr.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pbr"
Tue Jul 4 11:56:33 2017 rev:29 rq:507246 version:3.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pbr/python-pbr-doc.changes 2017-04-19 18:06:49.571787337 +0200
+++ /work/SRC/openSUSE:Factory/.python-pbr.new/python-pbr-doc.changes 2017-07-04 11:56:35.464595048 +0200
@@ -1,0 +2,16 @@
+Thu Jun 29 16:16:36 UTC 2017 - tbechtold@suse.com
+
+- update to 3.1.1:
+ * Restore previous IP binding
+ * allow user to override the output location of api docs
+ * fix tests based on API change in Sphinx
+ * Updated from global requirements
+ * Add binding option for WSGI server
+ * Ignore index URL lines in requirements.txt files
+
+-------------------------------------------------------------------
+Fri Jun 23 15:21:37 UTC 2017 - jmatejek@suse.com
+
+- drop upstreamed make_oslosphinx_optional.patch
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/python-pbr/python-pbr.changes 2017-04-19 18:06:49.699769234 +0200
+++ /work/SRC/openSUSE:Factory/.python-pbr.new/python-pbr.changes 2017-07-04 11:56:35.752554524 +0200
@@ -1,0 +2,35 @@
+Thu Jun 29 16:16:36 UTC 2017 - tbechtold@suse.com
+
+- update to 3.1.1:
+ * Restore previous IP binding
+ * allow user to override the output location of api docs
+ * fix tests based on API change in Sphinx
+ * Updated from global requirements
+ * Add binding option for WSGI server
+ * Ignore index URL lines in requirements.txt files
+
+-------------------------------------------------------------------
+Thu May 18 11:36:19 UTC 2017 - dmueller@suse.com
+
+- Update to pbr-3.0.1:
+ * builddoc: uses the new Sphinx 1.6 code for multiple builder
+ * Updated from global requirements
+ * Fix missing comment from previous change
+ * trivial: Add note about multiple builders support
+ * Remove 'build\_sphinx\_latex'
+ * Stop building man pages by default
+ * docs: Use definition lists
+ * add image.nonlocal\_uri to the list of warnings ignored
+ * doc: Document Sphinx integration
+ * add changelog to published documentation
+ * Lazy import pkg\_resources
+ * Add Changelog build handling for invalid chars
+ * Initialize sphinx config using application instead of config
+ * Make oslosphinx optional
+ * Updated from global requirements
+ * Also generate XML coverage report
+ * Update to a newer hacking library
+- drop 0001-Initialize-sphinx-config-using-application-instead-o.patch
+ Upstream
+
+-------------------------------------------------------------------
Old:
----
0001-Initialize-sphinx-config-using-application-instead-o.patch
make_oslosphinx_optional.patch
pbr-2.0.0.tar.gz
New:
----
pbr-3.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pbr-doc.spec ++++++
--- /var/tmp/diff_new_pack.rwR1az/_old 2017-07-04 11:56:36.652427887 +0200
+++ /var/tmp/diff_new_pack.rwR1az/_new 2017-07-04 11:56:36.656427325 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pbr-doc
-Version: 2.0.0
+Version: 3.1.1
Release: 0
Summary: Documentation for python-pbr
License: Apache-2.0
@@ -26,8 +26,6 @@
Url: http://pypi.python.org/pypi/pbr
Source: https://files.pythonhosted.org/packages/source/p/pbr/pbr-%{version}.tar.gz
Source1: python-pbr-rpmlintrc
-# make_oslosphinx_optional.patch - https://review.openstack.org/#/c/443555/
-Patch1: make_oslosphinx_optional.patch
BuildRequires: fdupes
# Documentation requirements:
BuildRequires: python3-Sphinx >= 1.1.2
@@ -41,7 +39,6 @@
%prep
%setup -q -n pbr-%{version}
-%patch1 -p1
# Get rid of ugly build-time deps that require network:
sed -i "s/, 'sphinx\.ext\.intersphinx'//" doc/source/conf.py
++++++ python-pbr.spec ++++++
--- /var/tmp/diff_new_pack.rwR1az/_old 2017-07-04 11:56:36.692422259 +0200
+++ /var/tmp/diff_new_pack.rwR1az/_new 2017-07-04 11:56:36.700421134 +0200
@@ -22,7 +22,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pbr
-Version: 2.0.0
+Version: 3.1.1
Release: 0
Summary: Python Build Reasonableness
License: Apache-2.0
@@ -30,8 +30,6 @@
Url: http://pypi.python.org/pypi/pbr
Source: https://files.pythonhosted.org/packages/source/p/pbr/pbr-%{version}.tar.gz
Source1: python-pbr-rpmlintrc
-# PATCH-FIX-UPSTREAM 0001-Initialize-sphinx-config-using-application-instead-o.patch~- https://review.openstack.org/#/c/448455/
-Patch1: 0001-Initialize-sphinx-config-using-application-instead-o.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pip >= 1.4}
BuildRequires: fdupes
@@ -40,7 +38,6 @@
%if %{with test}
#BuildRequires: python-coverage >= 3.6
BuildRequires: %{python_module fixtures >= 1.3.1}
-BuildRequires: %{python_module hacking >= 0.9.2}
BuildRequires: %{python_module mock >= 1.2}
BuildRequires: %{python_module python-subunit >= 0.0.18}
BuildRequires: %{python_module six >= 1.9.0}
@@ -67,7 +64,6 @@
%prep
%setup -q -n pbr-%{version}
-%patch1 -p1
# Get rid of ugly build-time deps that require network:
sed -i "s/, 'sphinx\.ext\.intersphinx'//" doc/source/conf.py
++++++ pbr-2.0.0.tar.gz -> pbr-3.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/AUTHORS new/pbr-3.1.1/AUTHORS
--- old/pbr-2.0.0/AUTHORS 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/AUTHORS 2017-06-21 11:44:14.000000000 +0200
@@ -1,6 +1,8 @@
+A40351
Akihiro Motoki
Alex Gaynor
Alexander Makarov
+Alfredo Moralejo
Andreas Jaeger
Andrew Bogott
Angus Salkeld
@@ -35,6 +37,7 @@
Erik M. Bray
Eugene Kirpichov
Florian Wilhelm
+Gage Hugo
Gary Kotton
Giampaolo Lauria
Ian Cordasco
@@ -65,7 +68,9 @@
Maru Newby
Masaki Matsushita
Matt Riedemann
+Matthew Montgomery
Matthew Treinish
+Mehdi Abaakouk
Michael Basnight
Michael Still
Mike Heald
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/ChangeLog new/pbr-3.1.1/ChangeLog
--- old/pbr-2.0.0/ChangeLog 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/ChangeLog 2017-06-21 11:44:14.000000000 +0200
@@ -1,12 +1,56 @@
CHANGES
=======
+3.1.1
+-----
+
+* Restore previous IP binding
+
+3.1.0
+-----
+
+* allow user to override the output location of api docs
+* fix tests based on API change in Sphinx
+* Updated from global requirements
+* Add binding option for WSGI server
+* Ignore index URL lines in requirements.txt files
+
+3.0.1
+-----
+
+* builddoc: uses the new Sphinx 1.6 code for multiple builder
+* Updated from global requirements
+* Fix missing comment from previous change
+* trivial: Add note about multiple builders support
+
+3.0.0
+-----
+
+* Remove 'build\_sphinx\_latex'
+* Stop building man pages by default
+* docs: Use definition lists
+* add image.nonlocal\_uri to the list of warnings ignored
+* doc: Document Sphinx integration
+* add changelog to published documentation
+
+2.1.0
+-----
+
+* Lazy import pkg\_resources
+* Add Changelog build handling for invalid chars
+* Initialize sphinx config using application instead of config
+* Make oslosphinx optional
+* Updated from global requirements
+* Also generate XML coverage report
+* Update to a newer hacking library
+
2.0.0
-----
* tox: Don't set skipsdist=True
* Stop using 'warnerrors'
* doc: Clarify sections in 'setup.cfg'
+* Remove testr entry point
* Updated from global requirements
* Remove discover from test-requirements
* Add Constraints support
@@ -61,7 +105,7 @@
* package: fix wrong catch in email parsing
* Sort 'pbr freeze' output
* Do not convert git tags when searching history
-* Include wsgi_scripts in generated wheels
+* Include wsgi\_scripts in generated wheels
* Correct the indentation in the classifiers example
* Do not silently drop markers that fail to evaluate
* Clarifications around tags and version numbers
@@ -95,7 +139,7 @@
-----
* Handle the case where cmd.distribution has no pbr attribute
-* test_integration cleanups
+* test\_integration cleanups
* Remove redundant testscenarios glue
* Add standard code coverage configuration file
* Add shields.io version/downloads links/badges into README.rst
@@ -109,7 +153,7 @@
1.7.0
-----
-* Have pbr egg_info.writer check PBR is enabled
+* Have pbr egg\_info.writer check PBR is enabled
1.6.0
-----
@@ -132,7 +176,7 @@
* Updated from global requirements
* Updated from global requirements
* Show how long the git querying takes
-* Add wsgi_scripts support to PBR
+* Add wsgi\_scripts support to PBR
* Updated from global requirements
1.3.0
@@ -141,9 +185,9 @@
* Wrap env markers in parens
* Updated from global requirements
* Add more documentation around building docs
-* Expose a 'rpm_version' extra command
+* Expose a 'rpm\_version' extra command
* Updated from global requirements
-* Use string for 'OS_TEST_TIMEOUT' default
+* Use string for 'OS\_TEST\_TIMEOUT' default
* Updated from global requirements
* This documents the use of comments that work between 2.6, 2.7 and 3.4
@@ -151,20 +195,20 @@
-----
* Strip markers from test requirements
-* Add build_sphinx test coverage
+* Add build\_sphinx test coverage
1.1.1
-----
-* Revert "Remove sphinx_config.init_values() manual call"
+* Revert "Remove sphinx\_config.init\_values() manual call"
1.1.0
-----
* Fix test case to be runnable with gnupg 2.1
-* More explicit data_files install location docs
+* More explicit data\_files install location docs
* Move CapturedSubprocess fixture to base
-* Remove sphinx_config.init_values() manual call
+* Remove sphinx\_config.init\_values() manual call
* Updated from global requirements
* builddoc: allow to use fnmatch-style exclusion for autodoc
* doc: add some basic doc about pbr doc options
@@ -174,7 +218,7 @@
1.0.1
-----
-* Remove self.pre_run calls in packaging.py
+* Remove self.pre\_run calls in packaging.py
* Add kerberos deps to build the kerberos wheel
* Update hacking to 0.10.x series
@@ -192,7 +236,7 @@
------
* Issue #1450210: Preversioning rc tag handling
-* Stop testing setup.py easy_install behaviour
+* Stop testing setup.py easy\_install behaviour
* Test pip install -e of projects
* Build all the wheels in one pass rather than many
* Improve integration.sh
@@ -220,8 +264,8 @@
0.10.7
------
-* _get_revno only returns a commit count
-* Move write_pbr_json to avoid issues with nose
+* \_get\_revno only returns a commit count
+* Move write\_pbr\_json to avoid issues with nose
* Properly check for git before getting git dir
* Port in git sha changes from 0.10 line
@@ -233,7 +277,7 @@
0.10.5
------
-* Move write_pbr_json to avoid issues with nose
+* Move write\_pbr\_json to avoid issues with nose
0.10.4
------
@@ -260,7 +304,7 @@
* Add user.name to git config in tests
* Honour validly tagged versions
* autodoc: allow to exclude modules from auto-generation
-* tests: factorize has_opt handling
+* tests: factorize has\_opt handling
* Support reading versions from wheels
* Only consider tags that look like versions
* Refactor oneline changelog walking
@@ -271,7 +315,7 @@
* Allow for inclusion of authors and changelog when building docs
* Work toward Python 3.4 support and testing
* Accept capitalized Sem-Ver headers
-* use get_boolean_option for warnerrors
+* use get\_boolean\_option for warnerrors
* Handle more legacy version numbers
* Look for and process sem-ver pseudo headers in git
* Raise an error if preversion versions are too low
@@ -297,7 +341,7 @@
* Restore Monkeypatched Distribution Instance
* Register testr as a distutil entry point
* Check for git before querying it for a version
-* Allow _run_cmd to run commands in any directory
+* Allow \_run\_cmd to run commands in any directory
* Make setUp fail if sdist fails
* Permit pre-release versions with git metadata
* Un-nest some sections of code
@@ -311,7 +355,7 @@
0.8.1
-----
-* pbr/testr_command.py: Add logging
+* pbr/testr\_command.py: Add logging
* Documentation updates
* Fixed a typo in the documentation
* Make source configurable when using --coverage
@@ -322,7 +366,7 @@
0.8.0
-----
-* Use unicode_literals import instead of u'unicode' notation
+* Use unicode\_literals import instead of u'unicode' notation
* Add support for nested requirements files
* Remove pip version specifier
* Make tools/integration.sh take a branch
@@ -332,14 +376,14 @@
0.7.0
-----
-* Factor run_cmd out of the base class
-* Return the real class in VersionInfo __repr__
+* Factor run\_cmd out of the base class
+* Return the real class in VersionInfo \_\_repr\_\_
* Fix up some docstrings
* Init sphinx config values before accessing them
* Remove copyright from empty files
* Declare support for Python versions in setup.cfg
* Updated from global requirements
-* Remove unused _parse_mailmap()
+* Remove unused \_parse\_mailmap()
* Add support for python 3-<3.3
* Remove tox locale overrides
* Do not force log verbosity level to info
@@ -378,7 +422,7 @@
0.5.22
------
-* Move base test case logic out of __init__.py
+* Move base test case logic out of \_\_init\_\_.py
* Comply with pep440
* Prevent ordereddict installation on 2.7
* Do not pass unicode where byte strings are wanted
@@ -386,8 +430,8 @@
* Get rid of PyPI URL override in integration test
* Add a test for command registration
* Switch away from tearDown for BaseTests
-* Fix test_changelog when git isn't globally setup
-* Rework run_shell_command
+* Fix test\_changelog when git isn't globally setup
+* Rework run\_shell\_command
* Update tox config to use latest upgrades
* Add a hint for users who don't have git installed
* Add pypy to tox.ini
@@ -403,16 +447,16 @@
0.5.21
------
-* Replace setuptools_git with a smarter approach
+* Replace setuptools\_git with a smarter approach
* Clean up some style warnings
* Consume the OpenStack mirror by default
* Correct typo
* Improve AUTHORS file generation
-* Ensure _run_shell_command always returns same type
+* Ensure \_run\_shell\_command always returns same type
* Hierarchical sphinx API documentation generation
* Add support for classmethod console scripts
-* Add skip_pip_install to setup.cfg
-* Remove missing_reuqires optimization
+* Add skip\_pip\_install to setup.cfg
+* Remove missing\_reuqires optimization
* Use the same logic everywhere for requirements files
0.5.20
@@ -423,14 +467,14 @@
* Install jeepyb and requirements from REPODIR
* Stop trying to install old pip and setuptools
* Add support for globbing in data files
-* Revert include_package_data change
-* Also patch easy_install script creation
+* Revert include\_package\_data change
+* Also patch easy\_install script creation
* Loop over test output for better readability
* Add more documentation
* We force installs via pip, we should declare it
* Fix python 3.3 tests
-* Replace entry_points console_scripts
-* Fix integer_types type under python 3
+* Replace entry\_points console\_scripts
+* Fix integer\_types type under python 3
* Remove the need to specify the pbr hook
* Move d2to1 more into the source tree
* Set defaults directly in option processing
@@ -477,7 +521,7 @@
0.5.15
------
-* Use pip instead of easy_install for installation
+* Use pip instead of easy\_install for installation
* Skip git-checkout related tests when .git is missing
* Refactor hooks file
@@ -489,7 +533,7 @@
0.5.12
------
-* Explicitly install install_requires
+* Explicitly install install\_requires
* More python3 compatibility
* python3: Use six everywhere
* Add vim and emacs files to .gitignore
@@ -502,7 +546,7 @@
* Fix author and changelog skipping
* Fix doc autoindexing
-* Changed _get_git_directory() to use git itself
+* Changed \_get\_git\_directory() to use git itself
* python3: Python3.x compatibility
* Cosmetic doc fixes
* Make parse errors meaningful
@@ -529,7 +573,7 @@
0.5.6
-----
-* Using __file__ was getting the wrong location
+* Using \_\_file\_\_ was getting the wrong location
* Add support for configuring pbr sphinx options
* Add support for warnings=errors
* Fix authors generation from co-authored-by
@@ -554,7 +598,7 @@
* Put stdout capture in the base test class
* Amended README testing instructions
* Update README with test running instructions
-* Move setup_requires to setup_requires_dist
+* Move setup\_requires to setup\_requires\_dist
* Move sphinx to test-reuqirements
* Deal with Sphinx import ordering
* Add a better todo comment
@@ -569,7 +613,7 @@
* Fix things up to work with nova
* Split out oslo.packaging
* Fix two minor style things
-* Fixes #20. Make sure the manifest_maker monkeypatch only occurs once and that it gets all its required locals encapsulated. This is why I hate any sort of monkey-patching, but it appears to be the only way to get this feature working
+* Fixes #20. Make sure the manifest\_maker monkeypatch only occurs once and that it gets all its required locals encapsulated. This is why I hate any sort of monkey-patching, but it appears to be the only way to get this feature working
* Fix 'except as' statements that were breaking things in Python 2.5
* Somehow neglected to include extra-file.txt used in the test for #15. Also moved the info log message that was causing othere tests to fail to only appear when commands are run that actually affect the manifest generation
* Yet another Python 2.5 fix; I really ought to just set up my own 2.5 installation
@@ -577,9 +621,9 @@
* Adds six.py and makes the necessary tweaks to improve support for using d2to1 natively across Python versions
* Fix 'except as' statements that were breaking things in Python 2.5
* Somehow neglected to include extra-file.txt used in the test for #15. Also moved the info log message that was causing othere tests to fail to only appear when commands are run that actually affect the manifest generation
-* Adds support for the tests_require keyword from setuptools. Tested by eating our own dogfood -- ./setup.py test now works for d2to1's own setup
+* Adds support for the tests\_require keyword from setuptools. Tested by eating our own dogfood -- ./setup.py test now works for d2to1's own setup
* support test suite and test tests-require
-* Patch manifest_maker to support extra_files--this is really the only way I can see to do this at all sensibly
+* Patch manifest\_maker to support extra\_files--this is really the only way I can see to do this at all sensibly
* This is a test that should really work to test this feature
* openstack.common.setup: fails to get version from git
* Use oslo-config-2013.1b3
@@ -590,7 +634,7 @@
* Remove openstack.common.db.common
* Add missing DBDuplicateEntry
* Import sqlalchemy session/models/utils
-* Implements import_group
+* Implements import\_group
* Fix Pep8 Warning
* Fixes "is not", "not in" syntax usage
* setup: count revs for revno if there are no tags
@@ -599,8 +643,8 @@
* Use revno and git sha for pre-release versioning
* Add env var version override for packagers
* trivial pep whitespace fix
-* Remove write_requirements
-* Rolling back to previous version of resolve_name; it's possible this can fail in the presence of a broken namespace package, but I want to make sure that's the case before trying to fix it
+* Remove write\_requirements
+* Rolling back to previous version of resolve\_name; it's possible this can fail in the presence of a broken namespace package, but I want to make sure that's the case before trying to fix it
* Stop using no longer valid -E option for pip
* oops - now compatible with python 3
* use regexp to parse the mailmap
@@ -621,7 +665,7 @@
* Add deprecated --logfile common opt
* Allow nova and others to override some logging defaults
* Fixing the trim for ListOp when reading from config file
-* Fix set_default() with boolean CLI options
+* Fix set\_default() with boolean CLI options
* Rename utils.py to strutils.py
* Improve cfg's argparse sub-parsers support
* Make project pyflakes clean
@@ -630,15 +674,15 @@
* Hide the GroupAttr conf and group attributes
* Fix broken --help with CommonConfigOpts
* updating sphinx documentation
-* Don't reference argparse._StoreAction
+* Don't reference argparse.\_StoreAction
* Fix minor coding style issue
* Remove ConfigCliParser class
* Add support for positional arguments
* Use stock argparse behaviour for optional args
* Use stock argparse --usage behaviour
* Use stock argparse --version behaviour
-* Remove add_option() method
-* Completely remove cfg's disable_interspersed_args()
+* Remove add\_option() method
+* Completely remove cfg's disable\_interspersed\_args()
* argparse support for cfg
* Remove openstack.common.config and extensions
* Fixes setup compatibility issue on Windows
@@ -649,41 +693,41 @@
* cfg: fix required if option has a dash
* Fix a couple of file handle leaks, using with statements
* Ignore the stackforge jenkins email address
-* Extracted parse_host_port into network_utils
+* Extracted parse\_host\_port into network\_utils
* Add the rpc service and delete manager
* Some changes I made weeks ago but forgot to commit
* Added a method for parsing host:port pairs
* Add basic periodic task infrastructure
* Move manager.py and service.py into common
* cfg: clean up None value handling
-* Allow set_default and set_override to use None
+* Allow set\_default and set\_override to use None
* Tilde expansion for --config-file and --config-dir
* Add multiple-driver support to the notifier api
* Fix errors reported by pyflakes
-* Add import_opt() method to ConfigOpts
+* Add import\_opt() method to ConfigOpts
* Remove unused imports
-* Modifies _is_opt_registered fcn to check for duplicate opts
+* Modifies \_is\_opt\_registered fcn to check for duplicate opts
* fix bug lp:1019348,update openstack-common to support pep8 1.3
* cfg: allow empty config values
-* Add SKIP_GENERATE_AUTHORS option to setup.py
-* Add SKIP_WRITE_GIT_CHANGELOG option to setup.py
+* Add SKIP\_GENERATE\_AUTHORS option to setup.py
+* Add SKIP\_WRITE\_GIT\_CHANGELOG option to setup.py
* Fix missing gettextutils in several modules
* Fix up pre-versioning based on testing in glance
* cfg: Fix typo in documentation
* Fix mailmap
-* Split read_versioninfo into a method
+* Split read\_versioninfo into a method
* Add common logging and notification
* Add support for tag based versioning
* Skip argparse when injecting requirements
* Update common code to support pep 1.3. bug 1014216
-* Add autodoc generation to the build_sphinx command
+* Add autodoc generation to the build\_sphinx command
* Use 'is not None' instead of '!= None'
* Adds support for bol and eol spaces to ini files
* Add support to include config aliases
* Create testutils with skip decorators
* cfg: add a global CONF object
* cfg: add generators for iterating over all options
-* cfg: move constructor args to __call__() args
+* cfg: move constructor args to \_\_call\_\_() args
* Added support for proper bare URLs
* Backslash continuation removal (common folsom-1)
* Alphabetize imports in openstack/common/cfg.py
@@ -693,26 +737,26 @@
* cfg: use a list comprehension instead of map()
* Encapsulate common sdist actions into a cmdclass
* Truly handle mailmap entries for all combinations
-* New ConfigOpts.find_file() for locating conf files
+* New ConfigOpts.find\_file() for locating conf files
* Handle authors existed before VCS was around
* Support for directory source of config files
* Provide file extension when when looking for files
* Some refactoring of the cfg cache
* Add caching to openstack.common.cfg
* Add AUTHORS generation function
-* Change behavior in utils.import_object()
-* Move auth_str_equal() to a new authutils module
+* Change behavior in utils.import\_object()
+* Move auth\_str\_equal() to a new authutils module
* Create openstack.common.timeutils
* Typofix, OptionGroup should be OptGroup
* Use absolute import for iniparser
* Make 'yes' also a true boolean
* Finish implementing MultiStrOpt
* Avoid leaking secrets into config logging
-* Add auth_str_equal() to common utils
+* Add auth\_str\_equal() to common utils
* Fix bug 954488
* fix restructuredtext formatting in docstrings
-* Add ConfigOpts.print_help()
-* Fixes a bug where entry_points in a setup.py are blanked out if there are no entry points defined in setup.cfg
+* Add ConfigOpts.print\_help()
+* Fixes a bug where entry\_points in a setup.py are blanked out if there are no entry points defined in setup.cfg
* Promote more complete support for ISO 8601 time
* cfg: fix a small comment typo
* Several changes that I accidentally committed to d2to1's old repository. See the changes to the changelog for more details
@@ -731,18 +775,18 @@
* Add support to cfg for disabling interspersed args
* Add new cfg module
* import should not return an instance of the class
-* use isinstance and types.*
-* make fix_path a real function so it can be mock'd
+* use isinstance and types.\*
+* make fix\_path a real function so it can be mock'd
* remove unused imports
* merge in upstream
* port execute and utcnow functions from nova
-* pull parse_mailmap str_dict_replace from nova
+* pull parse\_mailmap str\_dict\_replace from nova
* reog from import merge
* Rajaram/Vinkesh|Default xmlns for extension serialization can be overriden, added default factory for extension middleware
* Rajaram/Vinkesh | Copied tests for wsgi from nova. Added default content/accept types in Request which can be overridden by projects. Copied tests for XML serialization of Extension Controller's action from nova
* Rajaram/Vinkesh | Fixed the extension bug where custom collection actions' routes in resource extension were not getting registered
* Vinkesh/Rajaram|Added nova's extension framework into common and tests for it
-* Rajaram|renamed AppBaseException to OpenstackException and app_config_dir_name to config_dir as per jaypipes' feedback
+* Rajaram|renamed AppBaseException to OpenstackException and app\_config\_dir\_name to config\_dir as per jaypipes' feedback
* Rajaram/Vinkesh | Removed references to Glance in code
* Adding syslog support
* Add some more generic middleware, request context, utils, and versioning. Add basic template for server binary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/PKG-INFO new/pbr-3.1.1/PKG-INFO
--- old/pbr-2.0.0/PKG-INFO 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/PKG-INFO 2017-06-21 11:44:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pbr
-Version: 2.0.0
+Version: 3.1.1
Summary: Python Build Reasonableness
Home-page: http://docs.openstack.org/developer/pbr/
Author: OpenStack
@@ -42,6 +42,7 @@
* Documentation: http://docs.openstack.org/developer/pbr
* Source: http://git.openstack.org/cgit/openstack-dev/pbr
* Bugs: http://bugs.launchpad.net/pbr
+ * Change Log: https://docs.openstack.org/developer/pbr/history.html
.. _d2to1: https://pypi.python.org/pypi/d2to1
.. _distutils2: https://pypi.python.org/pypi/Distutils2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/README.rst new/pbr-3.1.1/README.rst
--- old/pbr-2.0.0/README.rst 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/README.rst 2017-06-21 11:41:48.000000000 +0200
@@ -34,6 +34,7 @@
* Documentation: http://docs.openstack.org/developer/pbr
* Source: http://git.openstack.org/cgit/openstack-dev/pbr
* Bugs: http://bugs.launchpad.net/pbr
+* Change Log: https://docs.openstack.org/developer/pbr/history.html
.. _d2to1: https://pypi.python.org/pypi/d2to1
.. _distutils2: https://pypi.python.org/pypi/Distutils2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/doc/source/conf.py new/pbr-3.1.1/doc/source/conf.py
--- old/pbr-2.0.0/doc/source/conf.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/doc/source/conf.py 2017-06-21 11:41:48.000000000 +0200
@@ -8,8 +8,14 @@
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc',
- 'oslosphinx']
+extensions = ['sphinx.ext.autodoc']
+# make oslosphinx optional to not increase the needed dependencies
+try:
+ import oslosphinx
+except ImportError:
+ pass
+else:
+ extensions.append('oslosphinx')
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/doc/source/history.rst new/pbr-3.1.1/doc/source/history.rst
--- old/pbr-2.0.0/doc/source/history.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/pbr-3.1.1/doc/source/history.rst 2017-06-21 11:41:48.000000000 +0200
@@ -0,0 +1,5 @@
+=================
+ Release History
+=================
+
+.. include:: ../../ChangeLog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/doc/source/index.rst new/pbr-3.1.1/doc/source/index.rst
--- old/pbr-2.0.0/doc/source/index.rst 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/doc/source/index.rst 2017-06-21 11:41:48.000000000 +0200
@@ -201,6 +201,7 @@
keywords =
setup
distutils
+
[files]
packages =
pbr
@@ -209,18 +210,19 @@
etc/init =
pbr.packaging.conf
pbr.version.conf
+
[entry_points]
console_scripts =
pbr = pbr.cmd:main
pbr.config.drivers =
plain = pbr.cfg.driver:Plain
-pbr provides its own section in these documents, ostensibly called `pbr`. Most
-other sections are provided by setuptools and may influence either the build
-itself or the output of various `setuptools commands`__. The remaining sections
-are provided by libraries that provide setuptools extensions, such as
-`extract_mesages` (provided by `Babel`__) or `sphinx_build` (provided by
-`Sphinx`__). Some of these are described below.
+`pbr` provides its own section in these documents, ostensibly called ``pbr``,
+and provides a custom version of Sphinx's ``build_sphinx`` section. Most other
+sections are provided by setuptools and may influence either the build itself
+or the output of various `setuptools commands`__. The remaining sections are
+provided by libraries that provide setuptools extensions, such as
+``extract_mesages`` (provided by `Babel`__). Some of these are described below.
__ https://setuptools.readthedocs.io/en/latest/setuptools.html#command-referenc...
__ http://babel.pocoo.org/en/latest/setup.html
@@ -248,57 +250,82 @@
using three fundamental keys: ``packages``, ``namespace_packages``, and
``data_files``.
-``packages`` is a list of top-level packages that should be installed. The
-behavior of packages is similar to ``setuptools.find_packages`` in that it
-recurses the python package hierarchy below the given top level and installs
-all of it. If ``packages`` is not specified, it defaults to the value of the
-``name`` field given in the ``[metadata]`` section.
-
-``namespace_packages`` is the same, but is a list of packages that provide
-namespace packages.
-
-``data_files`` lists files to be installed. The format is an indented block
-that contains key value pairs which specify target directory and source file
-to install there. More than one source file for a directory may be indicated
-with a further indented list. Source files are stripped of leading directories.
-Additionally, `pbr` supports a simple file globbing syntax for installing
-entire directory structures, thus::
-
- [files]
- data_files =
- etc/pbr = etc/pbr/*
- etc/neutron =
- etc/api-paste.ini
- etc/dhcp-agent.ini
- etc/init.d = neutron.init
-
-will result in `/etc/neutron` containing `api-paste.ini` and `dhcp-agent.ini`,
-both of which pbr will expect to find in the `etc` directory in the root of
-the source tree. Additionally, `neutron.init` from that dir will be installed
-in `/etc/init.d`. All of the files and directories located under `etc/pbr` in
-the source tree will be installed into `/etc/pbr`.
-
-Note that this behavior is relative to the effective root of the environment
-into which the packages are installed, so depending on available permissions
-this could be the actual system-wide `/etc` directory or just a top-level `etc`
-subdirectory of a virtualenv.
+``packages``
+
+ A list of top-level packages that should be installed. The behavior of
+ packages is similar to ``setuptools.find_packages`` in that it recurses the
+ python package hierarchy below the given top level and installs all of it. If
+ ``packages`` is not specified, it defaults to the value of the ``name`` field
+ given in the ``[metadata]`` section.
+
+``namespace_packages``
+
+ Similar to ``packages``, but is a list of packages that provide namespace
+ packages.
+
+``data_files``
+
+ A list of files to be installed. The format is an indented block that
+ contains key value pairs which specify target directory and source file to
+ install there. More than one source file for a directory may be indicated
+ with a further indented list. Source files are stripped of leading
+ directories. Additionally, `pbr` supports a simple file globbing syntax for
+ installing entire directory structures, thus::
+
+ [files]
+ data_files =
+ etc/pbr = etc/pbr/*
+ etc/neutron =
+ etc/api-paste.ini
+ etc/dhcp-agent.ini
+ etc/init.d = neutron.init
+
+ will result in `/etc/neutron` containing `api-paste.ini` and `dhcp-agent.ini`,
+ both of which pbr will expect to find in the `etc` directory in the root of
+ the source tree. Additionally, `neutron.init` from that dir will be installed
+ in `/etc/init.d`. All of the files and directories located under `etc/pbr` in
+ the source tree will be installed into `/etc/pbr`.
+
+ Note that this behavior is relative to the effective root of the environment
+ into which the packages are installed, so depending on available permissions
+ this could be the actual system-wide `/etc` directory or just a top-level
+ `etc` subdirectory of a virtualenv.
pbr
~~~
-The ``pbr`` section controls pbr specific options and behaviours.
+The ``pbr`` section controls `pbr` specific options and behaviours.
+
+``autodoc_tree_index_modules``
+
+ A boolean option controlling whether `pbr` should generate an index of
+ modules using `sphinx-apidoc`. By default, all files except `setup.py` are
+ included, but this can be overridden using the ``autodoc_tree_excludes``
+ option.
+
+``autodoc_tree_excludes``
+
+ A list of modules to exclude when building documentation using
+ `sphinx-apidoc`. Defaults to ``[setup.py]``. Refer to the `sphinx-apidoc man
+ page`_ for more information.
+
+``autodoc_index_modules``
+
+ A boolean option controlling whether `pbr` should itself generates
+ documentation for Python modules of the project. By default, all found Python
+ modules are included; some of them can be excluded by listing them in
+ ``autodoc_exclude_modules``.
+
+``autodoc_exclude_modules``
-The ``autodoc_tree_index_modules`` is a boolean option controlling whether pbr
-should generate an index of modules using ``sphinx-apidoc``. By default,
-`setup.py` is excluded. The list of excluded modules can be specified with the
-``autodoc_tree_excludes`` option. See the `sphinx-apidoc man page`_ for more
-information.
-
-The ``autodoc_index_modules`` is a boolean option controlling whether `pbr`
-should itself generates documentation for Python modules of the project. By
-default, all found Python modules are included; some of them can be excluded
-by listing them in ``autodoc_exclude_modules``. This list of modules can
-contains `fnmatch` style pattern (e.g. `myapp.tests.*`) to exclude some modules.
+ A list of modules to exclude when building module documentation using `pbr`.
+ `fnmatch` style pattern (e.g. `myapp.tests.*`) can be used.
+
+``api_doc_dir``
+
+ A subdirectory inside the ``build_sphinx.source_dir`` where
+ auto-generated API documentation should be written, if
+ ``autodoc_index_modules`` is set to True. Defaults to ``"api"``.
.. note::
@@ -310,6 +337,69 @@
set. See the `Sphinx build configuration file`_ documentation for more
information on configuring Sphinx.
+.. versionchanged:: 2.0
+
+ The ``pbr`` section used to take a ``warnerrors`` option that would enable
+ the ``-W`` (Turn warnings into errors.) option when building Sphinx. This
+ feature was broken in 1.10 and was removed in pbr 2.0 in favour of the
+ ``[build_sphinx] warning-is-error`` provided in Sphinx 1.5+.
+
+build_sphinx
+~~~~~~~~~~~~
+
+The ``build_sphinx`` section is a version of the ``build_sphinx`` setuptools
+plugin provided with Sphinx. This plugin extends the original plugin to add the
+following:
+
+- Automatic generation of module documentation using the apidoc__ tool
+
+- Automatic configuration of the `project`, `version` and `release` settings
+ using information from `pbr` itself
+
+- Support for multiple builders using the ``builders`` configuration option
+
+ .. note::
+
+ Sphinx 1.6 adds support for multiple builders using the default `builder`
+ option. You should refer to this file for more information.
+
+The version of ``build_sphinx`` provided by `pbr` provides a single additional
+option.
+
+``builders``
+
+ A space or comma separated list of builders to run. For example, to build
+ both HTML and man page documentation, you would define the following in your
+ `setup.cfg`:
+
+ .. code-block:: ini
+
+ [build_sphinx]
+ builders = html,man
+ source-dir = doc/source
+ build-dir = doc/build
+ all-files = 1
+
+``source_dir``
+
+ The path to the source directory where the Sphinx documentation tree
+ is.
+
+For information on the remaining options, refer to the `Sphinx
+documentation`__. In addition, the ``autodoc_index_modules``,
+``autodoc_tree_index_modules``, ``autodoc_exclude_modules`` and
+``autodoc_tree_excludes`` options in the ``pbr`` section will affect the output
+of the automatic module documentation generation.
+
+.. versionchanged:: 3.0
+
+ The ``build_sphinx`` plugin used to default to building both HTML and man
+ page output. This is no longer the case, and you should explicitly set
+ ``builders`` to ``html man`` if you wish to retain this behavior.
+
+__ http://www.sphinx-doc.org/en/stable/man/sphinx-apidoc.html
+__ http://www.sphinx-doc.org/en/stable/setuptools.html
+
entry_points
~~~~~~~~~~~~
@@ -390,6 +480,53 @@
testing =
quux:python_version=='2.7'
+
+Testing
+-------
+
+`pbr` overrides the ``setuptools`` hook ``test`` (i.e. ``setup.py test``). The
+following sequence is followed:
+
+#. If a ``.testr.conf`` file exists and `testrepository
+ https://pypi.python.org/pypi/testrepository`__ is installed, `pbr`
+ will use it as the test runner. See the ``testr`` documentation
+ for more details.
+
+ .. note::
+
+ This is separate to ``setup.py testr`` (note the extra ``r``) which
+ is provided directly by the ``testrepository`` package. Be careful
+ as there is some overlap of command arguments.
+
+#. Although deprecated, if ``[nosetests]`` is defined in ``setup.cfg``
+ and `nose http://nose.readthedocs.io/en/latest/`__ is installed,
+ the ``nose`` runner will be used.
+
+#. In other cases no override will be installed and the ``test``
+ command will revert to `setuptools
+ http://setuptools.readthedocs.io/en/latest/setuptools.html#test-build-packag...`__.
+
+A typical usage would be in ``tox.ini`` such as::
+
+ [tox]
+ minversion = 2.0
+ skipsdist = True
+ envlist = py33,py34,py35,py26,py27,pypy,pep8,docs
+
+ [testenv]
+ usedevelop = True
+ setenv =
+ VIRTUAL_ENV={envdir}
+ CLIENT_NAME=pbr
+ deps = .
+ -r{toxinidir}/test-requirements.txt
+ commands =
+ python setup.py test --testr-args='{posargs}'
+
+The argument ``--coverage`` will set ``PYTHON`` to ``coverage run`` to
+produce a coverage report. ``--coverage-package-name`` can be used to
+modify or narrow the packages traced.
+
Additional Docs
===============
@@ -401,6 +538,7 @@
testing
compatibility
api/modules
+ history
Indices and tables
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/builddoc.py new/pbr-3.1.1/pbr/builddoc.py
--- old/pbr-2.0.0/pbr/builddoc.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/builddoc.py 2017-06-21 11:41:48.000000000 +0200
@@ -17,9 +17,7 @@
from distutils import log
import fnmatch
import os
-import pkg_resources
import sys
-import warnings
try:
import cStringIO
@@ -29,7 +27,6 @@
try:
from sphinx import apidoc
from sphinx import application
- from sphinx import config
from sphinx import setup_command
except Exception as e:
# NOTE(dhellmann): During the installation of docutils, setuptools
@@ -66,16 +63,19 @@
class LocalBuildDoc(setup_command.BuildDoc):
- builders = ['html', 'man']
+ builders = ['html']
command_name = 'build_sphinx'
sphinx_initialized = False
def _get_source_dir(self):
option_dict = self.distribution.get_option_dict('build_sphinx')
+ pbr_option_dict = self.distribution.get_option_dict('pbr')
+ _, api_doc_dir = pbr_option_dict.get('api_doc_dir', (None, 'api'))
if 'source_dir' in option_dict:
- source_dir = os.path.join(option_dict['source_dir'][1], 'api')
+ source_dir = os.path.join(option_dict['source_dir'][1],
+ api_doc_dir)
else:
- source_dir = 'doc/source/api'
+ source_dir = 'doc/source/' + api_doc_dir
if not os.path.exists(source_dir):
os.makedirs(source_dir)
return source_dir
@@ -134,20 +134,12 @@
confoverrides['release'] = self.release
if self.today:
confoverrides['today'] = self.today
- sphinx_config = config.Config(self.config_dir, 'conf.py', {}, [])
- sphinx_ver = pkg_resources.parse_version(
- pkg_resources.get_distribution("sphinx").version)
- if sphinx_ver > pkg_resources.parse_version('1.2.3'):
- sphinx_config.init_values(warnings.warn)
- else:
- sphinx_config.init_values()
- if self.builder == 'man' and len(
- getattr(sphinx_config, 'man_pages', '')) == 0:
- return
if self.sphinx_initialized:
confoverrides['suppress_warnings'] = [
'app.add_directive', 'app.add_role',
- 'app.add_generic_role', 'app.add_node']
+ 'app.add_generic_role', 'app.add_node',
+ 'image.nonlocal_uri',
+ ]
app = application.Sphinx(
self.source_dir, self.config_dir,
self.builder_target_dir, self.doctree_dir,
@@ -194,6 +186,14 @@
"autodoc_exclude_modules",
[None, ""])[1].split()))
+ # TODO(stephenfin): Deprecate this functionality once we depend on
+ # Sphinx 1.6, which includes a similar feature, in g-r
+ # https://github.com/sphinx-doc/sphinx/pull/3476
+ self.finalize_options()
+ if hasattr(self, "builder_target_dirs"):
+ # Sphinx >= 1.6.1
+ return setup_command.BuildDoc.run(self)
+ # Sphinx < 1.6
for builder in self.builders:
self.builder = builder
self.finalize_options()
@@ -234,8 +234,3 @@
# handle Sphinx < 1.5.0
if not hasattr(self, 'warning_is_error'):
self.warning_is_error = False
-
-
-class LocalBuildLatex(LocalBuildDoc):
- builders = ['latex']
- command_name = 'build_sphinx_latex'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/git.py new/pbr-3.1.1/pbr/git.py
--- old/pbr-2.0.0/pbr/git.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/git.py 2017-06-21 11:41:48.000000000 +0200
@@ -143,6 +143,26 @@
return None
+def _clean_changelog_message(msg):
+ """Cleans any instances of invalid sphinx wording.
+
+ This escapes/removes any instances of invalid characters
+ that can be interpreted by sphinx as a warning or error
+ when translating the Changelog into an HTML file for
+ documentation building within projects.
+
+ * Escapes '_' which is interpreted as a link
+ * Escapes '*' which is interpreted as a new line
+ * Escapes '`' which is interpreted as a literal
+ """
+
+ msg = msg.replace('*', '\*')
+ msg = msg.replace('_', '\_')
+ msg = msg.replace('`', '\`')
+
+ return msg
+
+
def _iter_changelog(changelog):
"""Convert a oneline log iterator to formatted strings.
@@ -166,6 +186,7 @@
if not msg.startswith("Merge "):
if msg.endswith("."):
msg = msg[:-1]
+ msg = _clean_changelog_message(msg)
yield current_release, "* %(msg)s\n" % dict(msg=msg)
first_line = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/hooks/commands.py new/pbr-3.1.1/pbr/hooks/commands.py
--- old/pbr-2.0.0/pbr/hooks/commands.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/hooks/commands.py 2017-06-21 11:41:48.000000000 +0200
@@ -49,7 +49,6 @@
if packaging.have_sphinx():
self.add_command('pbr.builddoc.LocalBuildDoc')
- self.add_command('pbr.builddoc.LocalBuildLatex')
if os.path.exists('.testr.conf') and packaging.have_testr():
# There is a .testr.conf file. We want to use it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/packaging.py new/pbr-3.1.1/pbr/packaging.py
--- old/pbr-2.0.0/pbr/packaging.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/packaging.py 2017-06-21 11:41:49.000000000 +0200
@@ -102,6 +102,10 @@
if (not line.strip()) or line.startswith('#'):
continue
+ # Ignore index URL lines
+ if re.match(r'^\s*(-i|--index-url|--extra-index-url).*', line):
+ continue
+
# Handle nested requirements files such as:
# -r other-requirements.txt
if line.startswith('-r'):
@@ -282,12 +286,15 @@
import wsgiref.simple_server as wss
my_ip = socket.gethostbyname(socket.gethostname())
+
parser = argparse.ArgumentParser(
description=%(import_target)s.__doc__,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- usage='%%(prog)s [-h] [--port PORT] -- [passed options]')
+ usage='%%(prog)s [-h] [--port PORT] [--host IP] -- [passed options]')
parser.add_argument('--port', '-p', type=int, default=8000,
help='TCP port to listen on')
+ parser.add_argument('--host', '-b', default='',
+ help='IP to bind the server to')
parser.add_argument('args',
nargs=argparse.REMAINDER,
metavar='-- [passed options]',
@@ -301,11 +308,11 @@
else:
parser.error("unrecognized arguments: %%s" %% ' '.join(args.args))
sys.argv[1:] = args.args
- server = wss.make_server('', args.port, %(invoke_target)s())
+ server = wss.make_server(args.host, args.port, %(invoke_target)s())
print("*" * 80)
print("STARTING test server %(module_name)s.%(invoke_target)s")
- url = "http://%%s:%%d/" %% (my_ip, server.server_port)
+ url = "http://%%s:%%d/" %% (server.server_name, server.server_port)
print("Available at %%s" %% url)
print("DANGER! For testing only, do not use in production")
print("*" * 80)
@@ -536,11 +543,9 @@
# Import the symbols from their new home so the package API stays
# compatible.
LocalBuildDoc = builddoc.LocalBuildDoc
- LocalBuildLatex = builddoc.LocalBuildLatex
except ImportError:
_have_sphinx = False
LocalBuildDoc = None
- LocalBuildLatex = None
def have_sphinx():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/testr_command.py new/pbr-3.1.1/pbr/testr_command.py
--- old/pbr-2.0.0/pbr/testr_command.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/testr_command.py 2017-06-21 11:41:48.000000000 +0200
@@ -26,16 +26,18 @@
# license you chose for the specific language governing permissions and
# limitations under that license.
-"""setuptools/distutils commands to run testr via setup.py
+"""setuptools/distutils command to run testr via setup.py
+
+PBR will hook in the Testr class to provide "setup.py test" when
+.testr.conf is present in the repository (see pbr/hooks/commands.py).
+
+If we are activated but testrepository is not installed, we provide a
+sensible error.
+
+You can pass --coverage which will also export PYTHON='coverage run
+--source <your package>' and automatically combine the coverage from
+each testr backend test runner after the run completes.
-Currently provides 'testr' which runs tests using testr. You can pass
---coverage which will also export PYTHON='coverage run --source <your package>'
-and automatically combine the coverage from each testr backend test runner
-after the run completes.
-
-To use, just use setuptools/distribute and depend on testr, and it should be
-picked up automatically (as the commands are exported in the testrepository
-package metadata.
"""
from distutils import cmd
@@ -133,6 +135,7 @@
logger.debug("_coverage_after called")
os.system("coverage combine")
os.system("coverage html -d ./cover %s" % self.omit)
+ os.system("coverage xml -o ./cover/coverage.xml %s" % self.omit)
class TestrFake(cmd.Command):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/tests/test_packaging.py new/pbr-3.1.1/pbr/tests/test_packaging.py
--- old/pbr-2.0.0/pbr/tests/test_packaging.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/tests/test_packaging.py 2017-06-21 11:41:48.000000000 +0200
@@ -270,8 +270,8 @@
def setUp(self):
super(TestPackagingInGitRepoWithCommit, self).setUp()
- repo = self.useFixture(TestRepo(self.package_dir))
- repo.commit()
+ self.repo = self.useFixture(TestRepo(self.package_dir))
+ self.repo.commit()
def test_authors(self):
self.run_setup('sdist', allow_fail=False)
@@ -287,6 +287,29 @@
# One commit, something should be in the ChangeLog list
self.assertNotEqual(body, '')
+ def test_changelog_handles_astrisk(self):
+ self.repo.commit(message_content="Allow *.openstack.org to work")
+ self.run_setup('sdist', allow_fail=False)
+ with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f:
+ body = f.read()
+ self.assertIn('\*', body)
+
+ def test_changelog_handles_dead_links_in_commit(self):
+ self.repo.commit(message_content="See os_ for to_do about qemu_.")
+ self.run_setup('sdist', allow_fail=False)
+ with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f:
+ body = f.read()
+ self.assertIn('os\_', body)
+ self.assertIn('to\_do', body)
+ self.assertIn('qemu\_', body)
+
+ def test_changelog_handles_backticks(self):
+ self.repo.commit(message_content="Allow `openstack.org` to `work")
+ self.run_setup('sdist', allow_fail=False)
+ with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f:
+ body = f.read()
+ self.assertIn('\`', body)
+
def test_manifest_exclude_honoured(self):
self.run_setup('sdist', allow_fail=False)
with open(os.path.join(
@@ -463,6 +486,19 @@
self.assertEqual(False, git._git_is_installed())
+class TestIndexInRequirements(base.BaseTestCase):
+
+ def test_index_in_requirement(self):
+ tempdir = tempfile.mkdtemp()
+ requirements = os.path.join(tempdir, 'requirements.txt')
+ with open(requirements, 'w') as f:
+ f.write('-i https://myindex.local')
+ f.write(' --index-url https://myindex.local')
+ f.write(' --extra-index-url https://myindex.local')
+ result = packaging.parse_requirements([requirements])
+ self.assertEqual([], result)
+
+
class TestNestedRequirements(base.BaseTestCase):
def test_nested_requirement(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/tests/test_setup.py new/pbr-3.1.1/pbr/tests/test_setup.py
--- old/pbr-2.0.0/pbr/tests/test_setup.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/tests/test_setup.py 2017-06-21 11:41:48.000000000 +0200
@@ -165,7 +165,7 @@
self.assertIn("------", changelog_contents)
self.assertIn("Refactor hooks file", changelog_contents)
self.assertIn(
- "Bug fix: create_stack() fails when waiting",
+ "Bug fix: create\_stack() fails when waiting",
changelog_contents)
self.assertNotIn("Refactor hooks file.", changelog_contents)
self.assertNotIn("182feb3", changelog_contents)
@@ -179,7 +179,7 @@
self.assertNotIn("ev)il", changelog_contents)
self.assertNotIn("e(vi)l", changelog_contents)
self.assertNotIn('Merge "', changelog_contents)
- self.assertNotIn('1_foo.1', changelog_contents)
+ self.assertNotIn('1\_foo.1', changelog_contents)
def test_generate_authors(self):
author_old = u"Foo Foo "
@@ -224,17 +224,29 @@
self.assertTrue(co_author in authors)
+class _SphinxConfig(object):
+ man_pages = ['foo']
+
+
class BaseSphinxTest(base.BaseTestCase):
def setUp(self):
super(BaseSphinxTest, self).setUp()
+ # setup_command requires the Sphinx instance to have some
+ # attributes that aren't set normally with the way we use the
+ # class (because we replace the constructor). Add default
+ # values directly to the class definition.
+ import sphinx.application
+ sphinx.application.Sphinx.messagelog = []
+ sphinx.application.Sphinx.statuscode = 0
+
self.useFixture(fixtures.MonkeyPatch(
"sphinx.application.Sphinx.__init__", lambda *a, **kw: None))
self.useFixture(fixtures.MonkeyPatch(
"sphinx.application.Sphinx.build", lambda *a, **kw: None))
self.useFixture(fixtures.MonkeyPatch(
- "sphinx.config.Config.man_pages", ['foo']))
+ "sphinx.application.Sphinx.config", _SphinxConfig))
self.useFixture(fixtures.MonkeyPatch(
"sphinx.config.Config.init_values", lambda *a: None))
self.useFixture(fixtures.MonkeyPatch(
@@ -304,9 +316,8 @@
build_doc = packaging.LocalBuildDoc(self.distr)
build_doc.finalize_options()
- self.assertEqual(2, len(build_doc.builders))
+ self.assertEqual(1, len(build_doc.builders))
self.assertIn('html', build_doc.builders)
- self.assertIn('man', build_doc.builders)
build_doc = packaging.LocalBuildDoc(self.distr)
build_doc.builders = ''
@@ -365,6 +376,78 @@
self.assertEqual(["builder1", "builder2"], build_doc.builders)
+class APIAutoDocTest(base.BaseTestCase):
+
+ def setUp(self):
+ super(APIAutoDocTest, self).setUp()
+
+ # setup_command requires the Sphinx instance to have some
+ # attributes that aren't set normally with the way we use the
+ # class (because we replace the constructor). Add default
+ # values directly to the class definition.
+ import sphinx.application
+ sphinx.application.Sphinx.messagelog = []
+ sphinx.application.Sphinx.statuscode = 0
+
+ self.useFixture(fixtures.MonkeyPatch(
+ "sphinx.application.Sphinx.__init__", lambda *a, **kw: None))
+ self.useFixture(fixtures.MonkeyPatch(
+ "sphinx.application.Sphinx.build", lambda *a, **kw: None))
+ self.useFixture(fixtures.MonkeyPatch(
+ "sphinx.application.Sphinx.config", _SphinxConfig))
+ self.useFixture(fixtures.MonkeyPatch(
+ "sphinx.config.Config.init_values", lambda *a: None))
+ self.useFixture(fixtures.MonkeyPatch(
+ "sphinx.config.Config.__init__", lambda *a: None))
+ from distutils import dist
+ self.distr = dist.Distribution()
+ self.distr.packages = ("fake_package",)
+ self.distr.command_options["build_sphinx"] = {
+ "source_dir": ["a", "."]}
+ self.sphinx_options = self.distr.command_options["build_sphinx"]
+ pkg_fixture = fixtures.PythonPackage(
+ "fake_package", [("fake_module.py", b""),
+ ("another_fake_module_for_testing.py", b""),
+ ("fake_private_module.py", b"")])
+ self.useFixture(pkg_fixture)
+ self.useFixture(base.DiveDir(pkg_fixture.base))
+ self.pbr_options = self.distr.command_options.setdefault('pbr', {})
+ self.pbr_options["autodoc_index_modules"] = ('setup.cfg', 'True')
+
+ def test_default_api_build_dir(self):
+ build_doc = packaging.LocalBuildDoc(self.distr)
+ build_doc.run()
+
+ print('PBR OPTIONS:', self.pbr_options)
+ print('DISTR OPTIONS:', self.distr.command_options)
+
+ self.assertTrue(os.path.exists("api/autoindex.rst"))
+ self.assertTrue(os.path.exists("api/fake_package.fake_module.rst"))
+ self.assertTrue(
+ os.path.exists(
+ "api/fake_package.fake_private_module.rst"))
+ self.assertTrue(
+ os.path.exists(
+ "api/fake_package.another_fake_module_for_testing.rst"))
+
+ def test_different_api_build_dir(self):
+ # Options have to come out of the settings dict as a tuple
+ # showing the source and the value.
+ self.pbr_options['api_doc_dir'] = (None, 'contributor/api')
+ build_doc = packaging.LocalBuildDoc(self.distr)
+ build_doc.run()
+
+ print('PBR OPTIONS:', self.pbr_options)
+ print('DISTR OPTIONS:', self.distr.command_options)
+
+ self.assertTrue(os.path.exists("contributor/api/autoindex.rst"))
+ self.assertTrue(
+ os.path.exists("contributor/api/fake_package.fake_module.rst"))
+ self.assertTrue(
+ os.path.exists(
+ "contributor/api/fake_package.fake_private_module.rst"))
+
+
class ParseRequirementsTestScenarios(base.BaseTestCase):
versioned_scenarios = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr/version.py new/pbr-3.1.1/pbr/version.py
--- old/pbr-2.0.0/pbr/version.py 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/pbr/version.py 2017-06-21 11:41:48.000000000 +0200
@@ -22,8 +22,6 @@
import operator
import sys
-import pkg_resources
-
def _is_int(string):
try:
@@ -435,6 +433,9 @@
record associated with the package, and if there is no such record
falls back to the logic sdist would use.
"""
+ # Lazy import because pkg_resources is costly to import so defer until
+ # we absolutely need it.
+ import pkg_resources
try:
requirement = pkg_resources.Requirement.parse(self.package)
provider = pkg_resources.get_provider(requirement)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr.egg-info/PKG-INFO new/pbr-3.1.1/pbr.egg-info/PKG-INFO
--- old/pbr-2.0.0/pbr.egg-info/PKG-INFO 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/pbr.egg-info/PKG-INFO 2017-06-21 11:44:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pbr
-Version: 2.0.0
+Version: 3.1.1
Summary: Python Build Reasonableness
Home-page: http://docs.openstack.org/developer/pbr/
Author: OpenStack
@@ -42,6 +42,7 @@
* Documentation: http://docs.openstack.org/developer/pbr
* Source: http://git.openstack.org/cgit/openstack-dev/pbr
* Bugs: http://bugs.launchpad.net/pbr
+ * Change Log: https://docs.openstack.org/developer/pbr/history.html
.. _d2to1: https://pypi.python.org/pypi/d2to1
.. _distutils2: https://pypi.python.org/pypi/Distutils2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr.egg-info/SOURCES.txt new/pbr-3.1.1/pbr.egg-info/SOURCES.txt
--- old/pbr-2.0.0/pbr.egg-info/SOURCES.txt 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/pbr.egg-info/SOURCES.txt 2017-06-21 11:44:14.000000000 +0200
@@ -12,6 +12,7 @@
tox.ini
doc/source/compatibility.rst
doc/source/conf.py
+doc/source/history.rst
doc/source/index.rst
doc/source/packagers.rst
doc/source/semver.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/pbr.egg-info/entry_points.txt new/pbr-3.1.1/pbr.egg-info/entry_points.txt
--- old/pbr-2.0.0/pbr.egg-info/entry_points.txt 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/pbr.egg-info/entry_points.txt 2017-06-21 11:44:14.000000000 +0200
@@ -1,9 +1,6 @@
[console_scripts]
pbr = pbr.cmd.main:main
-[distutils.commands]
-testr = pbr.testr_command:Testr
-
[distutils.setup_keywords]
pbr = pbr.core:pbr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/setup.cfg new/pbr-3.1.1/setup.cfg
--- old/pbr-2.0.0/setup.cfg 2017-03-01 04:32:42.000000000 +0100
+++ new/pbr-3.1.1/setup.cfg 2017-06-21 11:44:14.000000000 +0200
@@ -41,8 +41,6 @@
[entry_points]
distutils.setup_keywords =
pbr = pbr.core:pbr
-distutils.commands =
- testr = pbr.testr_command:Testr
egg_info.writers =
pbr.json = pbr.pbr_json:write_pbr_json
console_scripts =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/test-requirements.txt new/pbr-3.1.1/test-requirements.txt
--- old/pbr-2.0.0/test-requirements.txt 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/test-requirements.txt 2017-06-21 11:41:48.000000000 +0200
@@ -1,12 +1,12 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-coverage>=4.0 # Apache-2.0
+coverage!=4.4,>=4.0 # Apache-2.0
fixtures>=3.0.0 # Apache-2.0/BSD
-hacking<0.11,>=0.10.0
+hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
mock>=2.0 # BSD
python-subunit>=0.0.18 # Apache-2.0/BSD
-sphinx>=1.5.1 # BSD
+sphinx!=1.6.1,>=1.5.1 # BSD
oslosphinx>=4.7.0 # Apache-2.0
six>=1.9.0 # MIT
testrepository>=0.0.18 # Apache-2.0/BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-2.0.0/tox.ini new/pbr-3.1.1/tox.ini
--- old/pbr-2.0.0/tox.ini 2017-03-01 04:31:14.000000000 +0100
+++ new/pbr-3.1.1/tox.ini 2017-06-21 11:41:48.000000000 +0200
@@ -11,7 +11,7 @@
CLIENT_NAME=pbr
deps = -r{toxinidir}/test-requirements.txt
commands =
- python setup.py testr --testr-args='{posargs}'
+ python setup.py test --testr-args='{posargs}'
[tox:jenkins]
sitepackages = True
@@ -24,7 +24,7 @@
[testenv:cover]
commands =
- python setup.py testr --coverage
+ python setup.py test --coverage
[testenv:venv]
commands = {posargs}