Hello community, here is the log from the commit of package python-oslo.concurrency for openSUSE:Factory checked in at 2020-10-26 16:16:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-oslo.concurrency (Old) and /work/SRC/openSUSE:Factory/.python-oslo.concurrency.new.3463 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.concurrency" Mon Oct 26 16:16:27 2020 rev:17 rq:841205 version:4.3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-oslo.concurrency/python-oslo.concurrency.changes 2020-06-05 20:15:51.842903111 +0200 +++ /work/SRC/openSUSE:Factory/.python-oslo.concurrency.new.3463/python-oslo.concurrency.changes 2020-10-26 16:17:02.686970426 +0100 @@ -1,0 +2,24 @@ +Fri Oct 9 19:10:17 UTC 2020 - cloud-de...@suse.de + +- update to version 4.3.0 + - Don't warn on lock removal if file doesn't exist + - Bump default tox env from py37 to py38 + - Add support for timeout to processutils.execute + - Monkey patch original current_thread _active + - Stop to use the __future__ module. + - Remove babel.cfg etc + - Switch to newer openstackdocstheme and reno versions + - Imported Translations from Zanata + - Update master for stable/ussuri + - Align contributing doc with oslo's policy + - Remove six usage + - Fix pygments style + - Update lower-constraints versions + - Fix hacking min version to 3.0.1 + - Bump bandit version + - Add py38 package metadata + - Add Python3 victoria unit tests + - Add release notes links to doc index + - Remove the unused coding style modules + +------------------------------------------------------------------- Old: ---- oslo.concurrency-4.0.2.tar.gz New: ---- oslo.concurrency-4.3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-oslo.concurrency.spec ++++++ --- /var/tmp/diff_new_pack.eARahU/_old 2020-10-26 16:17:03.606971166 +0100 +++ /var/tmp/diff_new_pack.eARahU/_new 2020-10-26 16:17:03.610971170 +0100 @@ -17,13 +17,13 @@ Name: python-oslo.concurrency -Version: 4.0.2 +Version: 4.3.0 Release: 0 Summary: OpenStack oslo.concurrency library License: Apache-2.0 Group: Development/Languages/Python URL: https://launchpad.net/oslo.concurrency -Source0: https://files.pythonhosted.org/packages/source/o/oslo.concurrency/oslo.concurrency-4.0.2.tar.gz +Source0: https://files.pythonhosted.org/packages/source/o/oslo.concurrency/oslo.concurrency-4.3.0.tar.gz BuildRequires: openstack-macros BuildRequires: python3-eventlet BuildRequires: python3-fasteners >= 0.7.0 @@ -51,7 +51,7 @@ Requires: python3-oslo.config >= 5.2.0 Requires: python3-oslo.i18n >= 3.15.3 Requires: python3-oslo.utils >= 3.33.0 -Requires: python3-six >= 1.10.0 +Requires: python3-six %if 0%{?suse_version} Obsoletes: python2-oslo.concurrency < 4.0.0 %endif @@ -77,7 +77,7 @@ This package contains the documentation. %prep -%autosetup -p1 -n oslo.concurrency-4.0.2 +%autosetup -p1 -n oslo.concurrency-4.3.0 %py_req_cleanup %build ++++++ _service ++++++ --- /var/tmp/diff_new_pack.eARahU/_old 2020-10-26 16:17:03.650971201 +0100 +++ /var/tmp/diff_new_pack.eARahU/_new 2020-10-26 16:17:03.650971201 +0100 @@ -1,8 +1,8 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/ussuri/openstack/oslo.concurrency/oslo.concurrency.spec.j2</param> + <param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/victoria/openstack/oslo.concurrency/oslo.concurrency.spec.j2</param> <param name="output-name">python-oslo.concurrency.spec</param> - <param name="requirements">https://opendev.org/openstack/oslo.concurrency/raw/branch/stable/ussuri/requirements.txt</param> + <param name="requirements">https://opendev.org/openstack/oslo.concurrency/raw/branch/stable/victoria/requirements.txt</param> <param name="changelog-email">cloud-de...@suse.de</param> <param name="changelog-provider">gh,openstack,oslo.concurrency</param> </service> ++++++ oslo.concurrency-4.0.2.tar.gz -> oslo.concurrency-4.3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/.zuul.yaml new/oslo.concurrency-4.3.0/.zuul.yaml --- old/oslo.concurrency-4.0.2/.zuul.yaml 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/.zuul.yaml 2020-09-11 21:23:14.000000000 +0200 @@ -4,7 +4,7 @@ - lib-forward-testing-python3 - openstack-cover-jobs - openstack-lower-constraints-jobs - - openstack-python3-ussuri-jobs + - openstack-python3-victoria-jobs - periodic-stable-jobs - publish-openstack-docs-pti - release-notes-jobs-python3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/AUTHORS new/oslo.concurrency-4.3.0/AUTHORS --- old/oslo.concurrency-4.0.2/AUTHORS 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/AUTHORS 2020-09-11 21:24:27.000000000 +0200 @@ -6,6 +6,7 @@ Angus Lees <g...@inodes.org> Ann Kamyshnikova <akamyshnik...@mirantis.com> Arata Notsu <no...@virtualtech.jp> +Arthur Dayne <huyueh...@inspur.com> Ben Nemec <bne...@redhat.com> Ben Nemec <bne...@us.ibm.com> Brad Pokorny <bpoko...@us.ibm.com> @@ -28,6 +29,7 @@ Denis Buliga <dbul...@cloudbasesolutions.com> Dina Belova <dbel...@mirantis.com> Dirk Mueller <d...@dmllr.de> +Dmitry Tantsur <dtant...@protonmail.com> Doug Hellmann <doug.hellm...@dreamhost.com> Doug Hellmann <d...@doughellmann.com> Eric Fried <openst...@fried.cc> @@ -63,6 +65,7 @@ Matthew Treinish <mtrein...@kortar.org> Matthew Treinish <trein...@linux.vnet.ibm.com> Michael Still <mi...@stillhq.com> +Moisés Guimarães de Medeiros <mogui...@redhat.com> Monty Taylor <mord...@inaugust.com> Nikhil Manchanda <slick...@gmail.com> Noorul Islam K M <noo...@noorul.com> @@ -111,4 +114,5 @@ vponomaryov <vponomar...@mirantis.com> wangqi <wang...@99cloud.net> yanheven <yanhe...@qq.com> +zhangboye <zhangb...@inspur.com> zhangsong <zhangs...@cmss.chinamobile.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/CONTRIBUTING.rst new/oslo.concurrency-4.3.0/CONTRIBUTING.rst --- old/oslo.concurrency-4.0.2/CONTRIBUTING.rst 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/CONTRIBUTING.rst 2020-09-11 21:23:14.000000000 +0200 @@ -1,3 +1,8 @@ +If you would like to contribute to the development of oslo's libraries, +first you must take a look to this page: + + https://specs.openstack.org/openstack/oslo-specs/specs/policy/contributing.html + If you would like to contribute to the development of OpenStack, you must follow the steps in this page: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/ChangeLog new/oslo.concurrency-4.3.0/ChangeLog --- old/oslo.concurrency-4.0.2/ChangeLog 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/ChangeLog 2020-09-11 21:24:27.000000000 +0200 @@ -1,11 +1,47 @@ CHANGES ======= +4.3.0 +----- + +* Bump bandit version +* Imported Translations from Zanata + +4.2.0 +----- + +* Add support for timeout to processutils.execute +* Update lower-constraints versions + +4.1.1 +----- + +* Fix pygments style + +4.1.0 +----- + +* Stop to use the \_\_future\_\_ module +* Fix hacking min version to 3.0.1 +* Switch to newer openstackdocstheme and reno versions +* Remove the unused coding style modules +* Remove babel.cfg etc +* Remove six usage +* Monkey patch original current\_thread \_active +* Align contributing doc with oslo's policy +* Add py38 package metadata +* Imported Translations from Zanata +* Bump default tox env from py37 to py38 +* Add release notes links to doc index +* Add Python3 victoria unit tests +* Update master for stable/ussuri + 4.0.2 ----- * Use unittest.mock instead of third party mock * Update hacking for Python3 +* Don't warn on lock removal if file doesn't exist 4.0.1 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/PKG-INFO new/oslo.concurrency-4.3.0/PKG-INFO --- old/oslo.concurrency-4.0.2/PKG-INFO 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/PKG-INFO 2020-09-11 21:24:27.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: oslo.concurrency -Version: 4.0.2 +Version: 4.3.0 Summary: Oslo Concurrency library Home-page: https://docs.openstack.org/oslo.concurrency/latest/ Author: OpenStack @@ -44,6 +44,7 @@ Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/babel.cfg new/oslo.concurrency-4.3.0/babel.cfg --- old/oslo.concurrency-4.0.2/babel.cfg 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/babel.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -[python: **.py] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/doc/requirements.txt new/oslo.concurrency-4.3.0/doc/requirements.txt --- old/oslo.concurrency-4.0.2/doc/requirements.txt 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/doc/requirements.txt 2020-09-11 21:23:14.000000000 +0200 @@ -2,8 +2,8 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. # this is required for the docs build jobs -sphinx>=1.8.0,!=2.1.0 # BSD -openstackdocstheme>=1.20.0 # Apache-2.0 -reno>=2.5.0 # Apache-2.0 +sphinx>=2.0.0,!=2.1.0 # BSD +openstackdocstheme>=2.2.0 # Apache-2.0 +reno>=3.1.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD sphinxcontrib-apidoc>=0.2.0 # BSD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/doc/source/conf.py new/oslo.concurrency-4.3.0/doc/source/conf.py --- old/oslo.concurrency-4.0.2/doc/source/conf.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/doc/source/conf.py 2020-09-11 21:23:14.000000000 +0200 @@ -24,9 +24,9 @@ ] # openstackdocstheme options -repository_name = 'openstack/oslo.concurrency' -bug_project = 'oslo.concurrency' -bug_tag = '' +openstackdocs_repo_name = 'openstack/oslo.concurrency' +openstackdocs_bug_project = 'oslo.concurrency' +openstackdocs_bug_tag = '' # The master toctree document. master_doc = 'index' @@ -42,14 +42,12 @@ add_module_names = True # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - +pygments_style = 'native' # -- Options for HTML output ------------------------------------------------- html_theme = 'openstackdocs' - # -- sphinxcontrib.apidoc configuration -------------------------------------- apidoc_module_dir = '../../' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/doc/source/index.rst new/oslo.concurrency-4.3.0/doc/source/index.rst --- old/oslo.concurrency-4.0.2/doc/source/index.rst 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/doc/source/index.rst 2020-09-11 21:23:14.000000000 +0200 @@ -16,6 +16,14 @@ contributor/index reference/index + +Release Notes +============= + +Read also the `oslo.concurrency Release Notes +<https://docs.openstack.org/releasenotes/oslo.concurrency/>`_. + + Indices and tables ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/lower-constraints.txt new/oslo.concurrency-4.3.0/lower-constraints.txt --- old/oslo.concurrency-4.0.2/lower-constraints.txt 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/lower-constraints.txt 2020-09-11 21:23:14.000000000 +0200 @@ -1,60 +1,51 @@ -alabaster==0.7.10 appdirs==1.3.0 Babel==2.3.4 -bandit==1.1.0 +cliff==3.1.0 +cmd2==0.8.9 coverage==4.0 debtcollector==1.2.0 -docutils==0.11 -dulwich==0.15.0 -enum34==1.0.4;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD -eventlet==0.18.2 +dnspython==1.16.0 +entrypoints==0.3 +eventlet==0.19.0 extras==1.0.0 fasteners==0.7.0 fixtures==3.0.0 -flake8==2.5.5 -futures==3.0.0;python_version=='2.7' or python_version=='2.6' # BSD +future==0.18.2 gitdb==0.6.4 GitPython==1.0.1 -greenlet==0.4.10 -hacking==0.12.0 -imagesize==0.7.1 +greenlet==0.4.13 iso8601==0.1.11 -Jinja2==2.10 keystoneauth1==3.4.0 linecache2==1.0.0 -MarkupSafe==1.0 -mccabe==0.2.1 -monotonic==0.6 +mock==4.0.2 +monotonic==1.5 mox3==0.20.0 netaddr==0.7.18 netifaces==0.10.4 -openstackdocstheme==1.20.0 os-client-config==1.28.0 oslo.config==5.2.0 oslo.i18n==3.15.3 oslo.utils==3.33.0 oslotest==3.2.0 pbr==2.0.0 -pep8==1.5.7 -pyflakes==0.8.1 -Pygments==2.2.0 +prettytable==0.7.2 pyparsing==2.1.0 +pyperclip==1.8.0 python-mimeparse==1.6.0 python-subunit==1.0.0 pytz==2013.6 PyYAML==3.12 -reno==2.5.0 requests==2.14.2 requestsexceptions==1.2.0 rfc3986==0.3.1 six==1.10.0 smmap==0.9.0 -snowballstemmer==1.2.1 -Sphinx==1.8.0 -sphinxcontrib-websupport==1.0.1 -stevedore==1.20.0 stestr==2.0.0 +stevedore==1.20.0 +testrepository==0.0.20 testtools==2.2.0 traceback2==1.4.0 unittest2==1.1.0 +voluptuous==0.11.7 +wcwidth==0.2.4 wrapt==1.7.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/PKG-INFO new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/PKG-INFO --- old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/PKG-INFO 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/PKG-INFO 2020-09-11 21:24:27.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: oslo.concurrency -Version: 4.0.2 +Version: 4.3.0 Summary: Oslo Concurrency library Home-page: https://docs.openstack.org/oslo.concurrency/latest/ Author: OpenStack @@ -44,6 +44,7 @@ Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/SOURCES.txt new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/SOURCES.txt --- old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/SOURCES.txt 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/SOURCES.txt 2020-09-11 21:24:27.000000000 +0200 @@ -8,7 +8,6 @@ HACKING.rst LICENSE README.rst -babel.cfg lower-constraints.txt requirements.txt setup.cfg @@ -62,6 +61,7 @@ releasenotes/notes/add-python-exec-kwarg-3a7a0c0849f9bb21.yaml releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml releasenotes/notes/drop-python27-support-7d837a45dae941bb.yaml +releasenotes/notes/timeout-c3fb65acda04c1c7.yaml releasenotes/source/conf.py releasenotes/source/index.rst releasenotes/source/newton.rst @@ -72,6 +72,7 @@ releasenotes/source/stein.rst releasenotes/source/train.rst releasenotes/source/unreleased.rst +releasenotes/source/ussuri.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/pbr.json new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/pbr.json --- old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/pbr.json 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/pbr.json 2020-09-11 21:24:27.000000000 +0200 @@ -1 +1 @@ -{"git_version": "60a157a", "is_release": true} \ No newline at end of file +{"git_version": "2f78803", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/requires.txt new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/requires.txt --- old/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/requires.txt 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo.concurrency.egg-info/requires.txt 2020-09-11 21:24:27.000000000 +0200 @@ -1,6 +1,5 @@ -pbr!=2.1.0,>=2.0.0 +fasteners>=0.7.0 oslo.config>=5.2.0 oslo.i18n>=3.15.3 oslo.utils>=3.33.0 -six>=1.10.0 -fasteners>=0.7.0 +pbr!=2.1.0,>=2.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po new/oslo.concurrency-4.3.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po --- old/oslo.concurrency-4.0.2/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po 2020-09-11 21:23:14.000000000 +0200 @@ -7,15 +7,16 @@ # Andi Chandler <a...@gowling.com>, 2014-2015 # Andreas Jaeger <jaegera...@gmail.com>, 2016. #zanata # Andi Chandler <a...@gowling.com>, 2017. #zanata +# Andi Chandler <a...@gowling.com>, 2020. #zanata msgid "" msgstr "" "Project-Id-Version: oslo.concurrency VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2018-02-23 11:40+0000\n" +"POT-Creation-Date: 2020-04-27 10:22+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2017-07-11 05:04+0000\n" +"PO-Revision-Date: 2020-04-27 08:12+0000\n" "Last-Translator: Andi Chandler <a...@gowling.com>\n" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -101,6 +102,9 @@ msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" +msgid "Specifying semaphores is not supported when using fair locks." +msgstr "Specifying semaphores is not supported when using fair locks." + msgid "Unexpected error while running command." msgstr "Unexpected error while running command." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/lockutils.py new/oslo.concurrency-4.3.0/oslo_concurrency/lockutils.py --- old/oslo.concurrency-4.0.2/oslo_concurrency/lockutils.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/lockutils.py 2020-09-11 21:23:14.000000000 +0200 @@ -14,6 +14,7 @@ # under the License. import contextlib +import errno import functools import logging import os @@ -28,7 +29,6 @@ from oslo_config import cfg from oslo_utils import reflection from oslo_utils import timeutils -import six from oslo_concurrency._i18n import _ @@ -200,9 +200,10 @@ lock_file_path = _get_lock_path(name, lock_file_prefix, lock_path) try: os.remove(lock_file_path) - except OSError: - LOG.info('Failed to remove file %(file)s', - {'file': lock_file_path}) + except OSError as exc: + if exc.errno != errno.ENOENT: + LOG.warning('Failed to remove file %(file)s', + {'file': lock_file_path}) def internal_lock(name, semaphores=None): @@ -342,7 +343,7 @@ def wrap(f): - @six.wraps(f) + @functools.wraps(f) def inner(*args, **kwargs): t1 = timeutils.now() t2 = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/prlimit.py new/oslo.concurrency-4.3.0/oslo_concurrency/prlimit.py --- old/oslo.concurrency-4.0.2/oslo_concurrency/prlimit.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/prlimit.py 2020-09-11 21:23:14.000000000 +0200 @@ -13,8 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -from __future__ import print_function - import argparse import os import resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/processutils.py new/oslo.concurrency-4.3.0/oslo_concurrency/processutils.py --- old/oslo.concurrency-4.0.2/oslo_concurrency/processutils.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/processutils.py 2020-09-11 21:23:14.000000000 +0200 @@ -32,7 +32,6 @@ from oslo_utils import importutils from oslo_utils import strutils from oslo_utils import timeutils -import six from oslo_concurrency._i18n import _ @@ -266,11 +265,16 @@ prlimits. If this is not set it will default to use sys.executable. :type python_exec: string + :param timeout: Timeout (in seconds) to wait for the process + termination. If timeout is reached, + :class:`subprocess.TimeoutExpired` is raised. + :type timeout: int :returns: (stdout, stderr) from process execution :raises: :class:`UnknownArgumentError` on receiving unknown arguments :raises: :class:`ProcessExecutionError` :raises: :class:`OSError` + :raises: :class:`subprocess.TimeoutExpired` The *prlimit* parameter can be used to set resource limits on the child process. If this parameter is used, the child process will be spawned by a @@ -319,6 +323,7 @@ preexec_fn = kwargs.pop('preexec_fn', None) prlimit = kwargs.pop('prlimit', None) python_exec = kwargs.pop('python_exec', sys.executable) + timeout = kwargs.pop('timeout', None) if isinstance(check_exit_code, bool): ignore_exit_code = not check_exit_code @@ -329,7 +334,7 @@ if kwargs: raise UnknownArgumentError(_('Got unknown keyword args: %r') % kwargs) - if isinstance(log_errors, six.integer_types): + if isinstance(log_errors, int): log_errors = LogErrors(log_errors) if not isinstance(log_errors, LogErrors): raise InvalidArgumentError(_('Got invalid arg log_errors: %r') % @@ -399,30 +404,35 @@ # we have to wrap this call using tpool. if eventlet_patched and os.name == 'nt': result = tpool.execute(obj.communicate, - process_input) + process_input, + timeout=timeout) else: - result = obj.communicate(process_input) + result = obj.communicate(process_input, + timeout=timeout) obj.stdin.close() # pylint: disable=E1101 _returncode = obj.returncode # pylint: disable=E1101 LOG.log(loglevel, 'CMD "%s" returned: %s in %0.3fs', sanitized_cmd, _returncode, watch.elapsed()) + except subprocess.TimeoutExpired: + LOG.log(loglevel, 'CMD "%s" reached timeout in %0.3fs', + sanitized_cmd, watch.elapsed()) + raise finally: if on_completion: on_completion(obj) if not ignore_exit_code and _returncode not in check_exit_code: (stdout, stderr) = result - if six.PY3: - stdout = os.fsdecode(stdout) - stderr = os.fsdecode(stderr) + stdout = os.fsdecode(stdout) + stderr = os.fsdecode(stderr) sanitized_stdout = strutils.mask_password(stdout) sanitized_stderr = strutils.mask_password(stderr) raise ProcessExecutionError(exit_code=_returncode, stdout=sanitized_stdout, stderr=sanitized_stderr, cmd=sanitized_cmd) - if six.PY3 and not binary and result is not None: + if not binary and result is not None: (stdout, stderr) = result # Decode from the locale using using the surrogateescape error # handler (decoding cannot fail) @@ -491,7 +501,7 @@ out, err = execute(*args, **kwargs) failed = False except ProcessExecutionError as exn: - out, err = '', six.text_type(exn) + out, err = '', str(exn) failed = True if not failed and discard_warnings and err: @@ -543,12 +553,11 @@ exit_status = channel.recv_exit_status() - if six.PY3: - # Decode from the locale using using the surrogateescape error handler - # (decoding cannot fail). Decode even if binary is True because - # mask_password() requires Unicode on Python 3 - stdout = os.fsdecode(stdout) - stderr = os.fsdecode(stderr) + # Decode from the locale using using the surrogateescape error handler + # (decoding cannot fail). Decode even if binary is True because + # mask_password() requires Unicode on Python 3 + stdout = os.fsdecode(stdout) + stderr = os.fsdecode(stderr) if sanitize_stdout: stdout = strutils.mask_password(stdout) @@ -570,19 +579,9 @@ cmd=sanitized_cmd) if binary: - if six.PY2: - # On Python 2, stdout is a bytes string if mask_password() failed - # to decode it, or an Unicode string otherwise. Encode to the - # default encoding (ASCII) because mask_password() decodes from - # the same encoding. - if isinstance(stdout, six.text_type): - stdout = stdout.encode() - if isinstance(stderr, six.text_type): - stderr = stderr.encode() - else: - # fsencode() is the reverse operation of fsdecode() - stdout = os.fsencode(stdout) - stderr = os.fsencode(stderr) + # fsencode() is the reverse operation of fsdecode() + stdout = os.fsencode(stdout) + stderr = os.fsencode(stderr) return (stdout, stderr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/tests/__init__.py new/oslo.concurrency-4.3.0/oslo_concurrency/tests/__init__.py --- old/oslo.concurrency-4.0.2/oslo_concurrency/tests/__init__.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/tests/__init__.py 2020-09-11 21:23:14.000000000 +0200 @@ -17,3 +17,9 @@ if os.environ.get('TEST_EVENTLET'): import eventlet eventlet.monkey_patch() + # Monkey patch the original current_thread to use the up-to-date _active + # global variable. See https://bugs.launchpad.net/bugs/1863021 and + # https://github.com/eventlet/eventlet/issues/592 + import __original_module_threading as orig_threading # noqa + import threading # noqa + orig_threading.current_thread.__globals__['_active'] = threading._active diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_lockutils.py new/oslo.concurrency-4.3.0/oslo_concurrency/tests/unit/test_lockutils.py --- old/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_lockutils.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/tests/unit/test_lockutils.py 2020-09-11 21:23:14.000000000 +0200 @@ -13,6 +13,7 @@ # under the License. import collections +import errno import multiprocessing import os import signal @@ -25,7 +26,6 @@ from oslo_config import cfg from oslotest import base as test_base -import six from oslo_concurrency.fixture import lockutils as fixtures from oslo_concurrency import lockutils @@ -278,10 +278,7 @@ # Note(flaper87): Lock is not external, which means # a semaphore will be yielded with lockutils.lock("test") as sem: - if six.PY2: - self.assertIsInstance(sem, threading._Semaphore) - else: - self.assertIsInstance(sem, threading.Semaphore) + self.assertIsInstance(sem, threading.Semaphore) # NOTE(flaper87): Lock is external so an InterProcessLock # will be yielded. @@ -295,10 +292,7 @@ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency') with lockutils.lock("test") as sem: - if six.PY2: - self.assertIsInstance(sem, threading._Semaphore) - else: - self.assertIsInstance(sem, threading.Semaphore) + self.assertIsInstance(sem, threading.Semaphore) with lockutils.lock("test2", external=True) as lock: self.assertTrue(lock.exists()) @@ -327,14 +321,28 @@ remove_mock.assert_called_once_with(path_mock.return_value) log_mock.assert_not_called() - @mock.patch('logging.Logger.info') - @mock.patch('os.remove', side_effect=OSError) + @mock.patch('logging.Logger.warning') + @mock.patch('os.remove', side_effect=OSError(errno.ENOENT, None)) @mock.patch('oslo_concurrency.lockutils._get_lock_path') def test_remove_lock_external_file_doesnt_exists(self, path_mock, remove_mock, log_mock): lockutils.remove_external_lock_file(mock.sentinel.name, mock.sentinel.prefix, mock.sentinel.lock_path) + path_mock.assert_called_once_with(mock.sentinel.name, + mock.sentinel.prefix, + mock.sentinel.lock_path) + remove_mock.assert_called_once_with(path_mock.return_value) + log_mock.assert_not_called() + + @mock.patch('logging.Logger.warning') + @mock.patch('os.remove', side_effect=OSError(errno.EPERM, None)) + @mock.patch('oslo_concurrency.lockutils._get_lock_path') + def test_remove_lock_external_file_permission_error( + self, path_mock, remove_mock, log_mock): + lockutils.remove_external_lock_file(mock.sentinel.name, + mock.sentinel.prefix, + mock.sentinel.lock_path) path_mock.assert_called_once_with(mock.sentinel.name, mock.sentinel.prefix, mock.sentinel.lock_path) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_processutils.py new/oslo.concurrency-4.3.0/oslo_concurrency/tests/unit/test_processutils.py --- old/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_processutils.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/oslo_concurrency/tests/unit/test_processutils.py 2020-09-11 21:23:14.000000000 +0200 @@ -13,9 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. -from __future__ import print_function - import errno +import io import logging import multiprocessing import os @@ -26,11 +25,11 @@ import subprocess import sys import tempfile +import time from unittest import mock import fixtures from oslotest import base as test_base -import six from oslo_concurrency import processutils @@ -89,7 +88,7 @@ on_execute_callback = mock.Mock() on_completion_callback = mock.Mock() - def fake_communicate(*args): + def fake_communicate(*args, timeout=None): raise IOError("Broken pipe") mock_comm.side_effect = fake_communicate @@ -112,17 +111,11 @@ processutils.execute(TRUE_UTILITY) - if six.PY2: - self.assertRaises(processutils.InvalidArgumentError, - processutils.execute, - TRUE_UTILITY, - preexec_fn=preexec_fn) - else: - try: - processutils.execute(TRUE_UTILITY, preexec_fn=preexec_fn) - except Exception as e: - if type(e).__name__ != 'SubprocessError': - raise + try: + processutils.execute(TRUE_UTILITY, preexec_fn=preexec_fn) + except Exception as e: + if type(e).__name__ != 'SubprocessError': + raise @mock.patch.object(os, 'name', 'nt') @mock.patch.object(processutils.subprocess, "Popen") @@ -153,9 +146,9 @@ if use_eventlet: mock_tpool.execute.assert_called_once_with( - mock_comm, fake_pinput) + mock_comm, fake_pinput, timeout=None) else: - mock_comm.assert_called_once_with(fake_pinput) + mock_comm.assert_called_once_with(fake_pinput, timeout=None) def test_windows_execute_without_eventlet(self): self._test_windows_execute() @@ -168,23 +161,23 @@ def test_defaults(self): err = processutils.ProcessExecutionError() - self.assertIn('None\n', six.text_type(err)) - self.assertIn('code: -\n', six.text_type(err)) + self.assertIn('None\n', str(err)) + self.assertIn('code: -\n', str(err)) def test_with_description(self): description = 'The Narwhal Bacons at Midnight' err = processutils.ProcessExecutionError(description=description) - self.assertIn(description, six.text_type(err)) + self.assertIn(description, str(err)) def test_with_exit_code(self): exit_code = 0 err = processutils.ProcessExecutionError(exit_code=exit_code) - self.assertIn(str(exit_code), six.text_type(err)) + self.assertIn(str(exit_code), str(err)) def test_with_cmd(self): cmd = 'telinit' err = processutils.ProcessExecutionError(cmd=cmd) - self.assertIn(cmd, six.text_type(err)) + self.assertIn(cmd, str(err)) def test_with_stdout(self): stdout = """ @@ -207,13 +200,13 @@ the Wielder of Wonder, with world's renown. """.strip() err = processutils.ProcessExecutionError(stdout=stdout) - print(six.text_type(err)) - self.assertIn('people-kings', six.text_type(err)) + print(str(err)) + self.assertIn('people-kings', str(err)) def test_with_stderr(self): stderr = 'Cottonian library' err = processutils.ProcessExecutionError(stderr=stderr) - self.assertIn(stderr, six.text_type(err)) + self.assertIn(stderr, str(err)) def test_retry_on_failure(self): fd, tmpfilename = tempfile.mkstemp() @@ -446,8 +439,8 @@ 'something') self.assertEqual(38, err.exit_code) - self.assertIsInstance(err.stdout, six.text_type) - self.assertIsInstance(err.stderr, six.text_type) + self.assertIsInstance(err.stdout, str) + self.assertIsInstance(err.stderr, str) self.assertIn('onstdout --password="***"', err.stdout) self.assertIn('onstderr --password="***"', err.stderr) self.assertEqual(' '.join([tmpfilename, @@ -458,20 +451,12 @@ def execute_undecodable_bytes(self, out_bytes, err_bytes, exitcode=0, binary=False): - if six.PY3: - code = ';'.join(('import sys', - 'sys.stdout.buffer.write(%a)' % out_bytes, - 'sys.stdout.flush()', - 'sys.stderr.buffer.write(%a)' % err_bytes, - 'sys.stderr.flush()', - 'sys.exit(%s)' % exitcode)) - else: - code = ';'.join(('import sys', - 'sys.stdout.write(%r)' % out_bytes, - 'sys.stdout.flush()', - 'sys.stderr.write(%r)' % err_bytes, - 'sys.stderr.flush()', - 'sys.exit(%s)' % exitcode)) + code = ';'.join(('import sys', + 'sys.stdout.buffer.write(%a)' % out_bytes, + 'sys.stdout.flush()', + 'sys.stderr.buffer.write(%a)' % err_bytes, + 'sys.stderr.flush()', + 'sys.exit(%s)' % exitcode)) return processutils.execute(sys.executable, '-c', code, binary=binary) @@ -480,7 +465,7 @@ err_bytes = b'err: ' + UNDECODABLE_BYTES out, err = self.execute_undecodable_bytes(out_bytes, err_bytes, binary=binary) - if six.PY3 and not binary: + if not binary: self.assertEqual(os.fsdecode(out_bytes), out) self.assertEqual(os.fsdecode(err_bytes), err) else: @@ -505,16 +490,8 @@ err = exc.stderr out_bytes = b'out: password="***" ' + UNDECODABLE_BYTES err_bytes = b'err: password="***" ' + UNDECODABLE_BYTES - if six.PY3: - # On Python 3, stdout and stderr attributes of - # ProcessExecutionError must always be Unicode - self.assertEqual(os.fsdecode(out_bytes), out) - self.assertEqual(os.fsdecode(err_bytes), err) - else: - # On Python 2, stdout and stderr attributes of - # ProcessExecutionError must always be bytes - self.assertEqual(out_bytes, out) - self.assertEqual(err_bytes, err) + self.assertEqual(os.fsdecode(out_bytes), out) + self.assertEqual(os.fsdecode(err_bytes), err) def test_undecodable_bytes_error(self): self.check_undecodable_bytes_error(False) @@ -537,6 +514,19 @@ self.assertEqual('my description', exc.description) self.assertEqual(str(exc), exc_message) + def test_timeout(self): + start = time.time() + # FIXME(dtantsur): I'm not sure what fancy mocking is happening in unit + # tests here, but I cannot check for a more precise exception because + # subprocess.TimeoutException != subprocess.TimeoutException. + # Checking the error message instead. + self.assertRaisesRegex(Exception, + 'timed out after 1 seconds', + processutils.execute, + '/usr/bin/env', 'sh', '-c', 'sleep 10', + timeout=1) + self.assertLess(time.time(), start + 5) + class ProcessExecutionErrorLoggingTest(test_base.BaseTestCase): def setUp(self): @@ -642,7 +632,7 @@ return self.rc -class FakeSshStream(six.BytesIO): +class FakeSshStream(io.BytesIO): def setup_channel(self, rc): self.channel = FakeSshChannel(rc) @@ -658,9 +648,9 @@ raise socket.timeout() stdout = FakeSshStream(self.out) stdout.setup_channel(self.rc) - return (six.BytesIO(), + return (io.BytesIO(), stdout, - six.BytesIO(self.err)) + io.BytesIO(self.err)) class SshExecuteTestCase(test_base.BaseTestCase): @@ -684,8 +674,8 @@ out, err = processutils.ssh_execute(FakeSshConnection(0), 'ls') self.assertEqual('stdout', out) self.assertEqual('stderr', err) - self.assertIsInstance(out, six.text_type) - self.assertIsInstance(err, six.text_type) + self.assertIsInstance(out, str) + self.assertIsInstance(err, str) def test_binary(self): o, e = processutils.ssh_execute(FakeSshConnection(0), 'ls', @@ -701,7 +691,7 @@ conn = FakeSshConnection(0, out=out_bytes, err=err_bytes) out, err = processutils.ssh_execute(conn, 'ls', binary=binary) - if six.PY3 and not binary: + if not binary: self.assertEqual(os.fsdecode(out_bytes), out) self.assertEqual(os.fsdecode(err_bytes), err) else: @@ -729,16 +719,8 @@ out = exc.stdout err = exc.stderr - if six.PY3: - # On Python 3, stdout and stderr attributes of - # ProcessExecutionError must always be Unicode - self.assertEqual(os.fsdecode(out_bytes), out) - self.assertEqual(os.fsdecode(err_bytes), err) - else: - # On Python 2, stdout and stderr attributes of - # ProcessExecutionError must always be bytes - self.assertEqual(out_bytes, out) - self.assertEqual(err_bytes, err) + self.assertEqual(os.fsdecode(out_bytes), out) + self.assertEqual(os.fsdecode(err_bytes), err) def test_undecodable_bytes_error(self): self.check_undecodable_bytes_error(False) @@ -752,7 +734,7 @@ def _test_compromising_ssh(self, rc, check): fixture = self.useFixture(fixtures.FakeLogger(level=logging.DEBUG)) - fake_stdin = six.BytesIO() + fake_stdin = io.BytesIO() fake_stdout = mock.Mock() fake_stdout.channel.recv_exit_status.return_value = rc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/releasenotes/notes/timeout-c3fb65acda04c1c7.yaml new/oslo.concurrency-4.3.0/releasenotes/notes/timeout-c3fb65acda04c1c7.yaml --- old/oslo.concurrency-4.0.2/releasenotes/notes/timeout-c3fb65acda04c1c7.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.concurrency-4.3.0/releasenotes/notes/timeout-c3fb65acda04c1c7.yaml 2020-09-11 21:23:14.000000000 +0200 @@ -0,0 +1,5 @@ +--- +features: + - | + Adds a new ``timeout`` argument to ``processutils.execute``. If set, + the process will be aborted if it runs more than ``timeout`` seconds. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/releasenotes/source/conf.py new/oslo.concurrency-4.3.0/releasenotes/source/conf.py --- old/oslo.concurrency-4.0.2/releasenotes/source/conf.py 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/releasenotes/source/conf.py 2020-09-11 21:23:14.000000000 +0200 @@ -40,9 +40,9 @@ ] # openstackdocstheme options -repository_name = 'openstack/oslo.config' -bug_project = 'oslo.config' -bug_tag = '' +openstackdocs_repo_name = 'openstack/oslo.config' +openstackdocs_bug_project = 'oslo.config' +openstackdocs_bug_tag = '' # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -96,7 +96,7 @@ # show_authors = False # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = 'native' # A list of ignored prefixes for module index sorting. # modindex_common_prefix = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/releasenotes/source/index.rst new/oslo.concurrency-4.3.0/releasenotes/source/index.rst --- old/oslo.concurrency-4.0.2/releasenotes/source/index.rst 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/releasenotes/source/index.rst 2020-09-11 21:23:14.000000000 +0200 @@ -6,6 +6,7 @@ :maxdepth: 1 unreleased + ussuri train stein rocky diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po new/oslo.concurrency-4.3.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po --- old/oslo.concurrency-4.0.2/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po 2020-09-11 21:23:14.000000000 +0200 @@ -1,15 +1,16 @@ # Andi Chandler <a...@gowling.com>, 2016. #zanata # Andi Chandler <a...@gowling.com>, 2017. #zanata # Andi Chandler <a...@gowling.com>, 2018. #zanata +# Andi Chandler <a...@gowling.com>, 2020. #zanata msgid "" msgstr "" "Project-Id-Version: oslo.concurrency\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-27 12:03+0000\n" +"POT-Creation-Date: 2020-07-01 10:57+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2018-09-16 09:03+0000\n" +"PO-Revision-Date: 2020-07-09 08:16+0000\n" "Last-Translator: Andi Chandler <a...@gowling.com>\n" "Language-Team: English (United Kingdom)\n" "Language: en_GB\n" @@ -22,6 +23,15 @@ msgid "3.25.0" msgstr "3.25.0" +msgid "3.29.0" +msgstr "3.29.0" + +msgid "4.0.0" +msgstr "4.0.0" + +msgid "4.2.0" +msgstr "4.2.0" + msgid "" "A new kwarg, ``python_exec`` is added to the execute() function in the " "processutils module. This option is used to specify the path to the python " @@ -31,6 +41,13 @@ "processutils module. This option is used to specify the path to the Python " "executable to use for prlimits enforcement." +msgid "" +"Adds a new ``timeout`` argument to ``processutils.execute``. If set, the " +"process will be aborted if it runs more than ``timeout`` seconds." +msgstr "" +"Adds a new ``timeout`` argument to ``processutils.execute``. If set, the " +"process will be aborted if it runs more than ``timeout`` seconds." + msgid "New Features" msgstr "New Features" @@ -46,17 +63,65 @@ msgid "Pike Series Release Notes" msgstr "Pike Series Release Notes" +msgid "Prelude" +msgstr "Prelude" + +msgid "" +"Python 2.7 is no longer supported. The minimum supported version of Python " +"is now Python 3.6." +msgstr "" +"Python 2.7 is no longer supported. The minimum supported version of Python " +"is now Python 3.6." + msgid "Queens Series Release Notes" msgstr "Queens Series Release Notes" msgid "Rocky Series Release Notes" msgstr "Rocky Series Release Notes" +msgid "Stein Series Release Notes" +msgstr "Stein Series Release Notes" + msgid "Switch to reno for managing release notes." msgstr "Switch to reno for managing release notes." +msgid "" +"This release includes optional support for fair locks. When fair locks are " +"specified, blocking waiters will acquire the lock in the order that they " +"blocked." +msgstr "" +"This release includes optional support for fair locks. When fair locks are " +"specified, blocking waiters will acquire the lock in the order that they " +"blocked." + +msgid "Train Series Release Notes" +msgstr "Train Series Release Notes" + msgid "Unreleased Release Notes" msgstr "Unreleased Release Notes" +msgid "Upgrade Notes" +msgstr "Upgrade Notes" + +msgid "Ussuri Series Release Notes" +msgstr "Ussuri Series Release Notes" + +msgid "" +"We now have optional support for ``fair`` locks. When fair locks are " +"specified, blocking waiters will acquire the lock in the order that they " +"blocked. This can be useful to ensure that existing blocked waiters do not " +"wait indefinitely in the face of large numbers of new attempts to acquire " +"the lock. When specifying locks as both ``external`` and ``fair``, the " +"ordering *within* a given process will be fair, but the ordering *between* " +"processes will be determined by the behaviour of the underlying OS." +msgstr "" +"We now have optional support for ``fair`` locks. When fair locks are " +"specified, blocking waiters will acquire the lock in the order that they " +"blocked. This can be useful to ensure that existing blocked waiters do not " +"wait indefinitely in the face of large numbers of new attempts to acquire " +"the lock. When specifying locks as both ``external`` and ``fair``, the " +"ordering *within* a given process will be fair, but the ordering *between* " +"processes will be determined by the behaviour of the underlying OS." + msgid "oslo.concurrency Release Notes" msgstr "oslo.concurrency Release Notes" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/releasenotes/source/ussuri.rst new/oslo.concurrency-4.3.0/releasenotes/source/ussuri.rst --- old/oslo.concurrency-4.0.2/releasenotes/source/ussuri.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.concurrency-4.3.0/releasenotes/source/ussuri.rst 2020-09-11 21:23:14.000000000 +0200 @@ -0,0 +1,6 @@ +=========================== +Ussuri Series Release Notes +=========================== + +.. release-notes:: + :branch: stable/ussuri diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/requirements.txt new/oslo.concurrency-4.3.0/requirements.txt --- old/oslo.concurrency-4.0.2/requirements.txt 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/requirements.txt 2020-09-11 21:23:14.000000000 +0200 @@ -6,5 +6,4 @@ oslo.config>=5.2.0 # Apache-2.0 oslo.i18n>=3.15.3 # Apache-2.0 oslo.utils>=3.33.0 # Apache-2.0 -six>=1.10.0 # MIT fasteners>=0.7.0 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/setup.cfg new/oslo.concurrency-4.3.0/setup.cfg --- old/oslo.concurrency-4.0.2/setup.cfg 2020-04-07 12:11:49.000000000 +0200 +++ new/oslo.concurrency-4.3.0/setup.cfg 2020-09-11 21:24:27.000000000 +0200 @@ -17,6 +17,7 @@ Programming Language :: Python :: 3 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 Programming Language :: Python :: 3 :: Only Programming Language :: Python :: Implementation :: CPython @@ -30,20 +31,6 @@ console_scripts = lockutils-wrapper = oslo_concurrency.lockutils:main -[compile_catalog] -directory = oslo_concurrency/locale -domain = oslo_concurrency - -[update_catalog] -domain = oslo_concurrency -output_dir = oslo_concurrency/locale -input_file = oslo_concurrency/locale/oslo_concurrency.pot - -[extract_messages] -keywords = _ gettext ngettext l_ lazy_gettext -mapping_file = babel.cfg -output_file = oslo_concurrency/locale/oslo_concurrency.pot - [egg_info] tag_build = tag_date = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/test-requirements.txt new/oslo.concurrency-4.3.0/test-requirements.txt --- old/oslo.concurrency-4.0.2/test-requirements.txt 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/test-requirements.txt 2020-09-11 21:23:14.000000000 +0200 @@ -2,12 +2,12 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -hacking>=3.0,<3.1.0 # Apache-2.0 +hacking>=3.0.1,<3.1.0 # Apache-2.0 oslotest>=3.2.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD stestr>=2.0.0 # Apache-2.0 -eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT +eventlet>=0.19.0 # MIT # Bandit security code scanner -bandit>=1.1.0,<1.6.0 # Apache-2.0 +bandit>=1.6.0,<1.7.0 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.concurrency-4.0.2/tox.ini new/oslo.concurrency-4.3.0/tox.ini --- old/oslo.concurrency-4.0.2/tox.ini 2020-04-07 12:10:50.000000000 +0200 +++ new/oslo.concurrency-4.3.0/tox.ini 2020-09-11 21:23:14.000000000 +0200 @@ -1,6 +1,6 @@ [tox] minversion = 3.2.0 -envlist = py37,pep8 +envlist = py38,pep8 ignore_basepython_conflict = True [testenv]