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]


Reply via email to