Hello community,
here is the log from the commit of package python-oslo.concurrency for
openSUSE:Factory checked in at 2020-06-05 20:13:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.concurrency (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.concurrency.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.concurrency"
Fri Jun 5 20:13:47 2020 rev:16 rq:803587 version:4.0.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-oslo.concurrency/python-oslo.concurrency.changes
2020-03-24 22:32:46.517102034 +0100
+++
/work/SRC/openSUSE:Factory/.python-oslo.concurrency.new.3606/python-oslo.concurrency.changes
2020-06-05 20:15:51.842903111 +0200
@@ -1,0 +2,25 @@
+Tue May 12 09:54:07 UTC 2020 - [email protected]
+
+- update to version 4.0.2
+ - Spiff up docs for *_with_prefix
+ - Blacklist sphinx 2.1.0 (autodoc bug)
+ - tox: Keeping going with docs
+ - Stop to build universal wheel
+ - Update the constraints url
+ - tox: Trivial cleanup
+ - Update master for stable/train
+ - ignore reno builds artifacts
+ - Drop python 2.7 support and testing
+ - Document management and history of lock files
+ - Update hacking for Python3
+ - Switch to Ussuri jobs
+ - Add lock_with_prefix convenience utility
+ - Fix remove_lock test
+ - trivial: Cleanup tox.ini
+ - remove outdated header
+ - Use unittest.mock instead of third party mock
+ - Stop configuring install_command in tox.
+ - Some test cleanup
+ - Bump the openstackdocstheme extension to 1.20
+
+-------------------------------------------------------------------
Old:
----
oslo.concurrency-3.30.0.tar.gz
New:
----
oslo.concurrency-4.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.concurrency.spec ++++++
--- /var/tmp/diff_new_pack.ENShfI/_old 2020-06-05 20:15:52.766906511 +0200
+++ /var/tmp/diff_new_pack.ENShfI/_new 2020-06-05 20:15:52.766906511 +0200
@@ -17,13 +17,13 @@
Name: python-oslo.concurrency
-Version: 3.30.0
+Version: 4.0.2
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-3.30.0.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/o/oslo.concurrency/oslo.concurrency-4.0.2.tar.gz
BuildRequires: openstack-macros
BuildRequires: python3-eventlet
BuildRequires: python3-fasteners >= 0.7.0
@@ -77,7 +77,7 @@
This package contains the documentation.
%prep
-%autosetup -p1 -n oslo.concurrency-3.30.0
+%autosetup -p1 -n oslo.concurrency-4.0.2
%py_req_cleanup
%build
++++++ _service ++++++
--- /var/tmp/diff_new_pack.ENShfI/_old 2020-06-05 20:15:52.814906687 +0200
+++ /var/tmp/diff_new_pack.ENShfI/_new 2020-06-05 20:15:52.814906687 +0200
@@ -1,8 +1,8 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/train/openstack/oslo.concurrency/oslo.concurrency.spec.j2</param>
+ <param
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/ussuri/openstack/oslo.concurrency/oslo.concurrency.spec.j2</param>
<param name="output-name">python-oslo.concurrency.spec</param>
- <param
name="requirements">https://raw.githubusercontent.com/openstack/oslo.concurrency/stable/train/requirements.txt</param>
+ <param
name="requirements">https://opendev.org/openstack/oslo.concurrency/raw/branch/stable/ussuri/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param name="changelog-provider">gh,openstack,oslo.concurrency</param>
</service>
++++++ oslo.concurrency-3.30.0.tar.gz -> oslo.concurrency-4.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/.zuul.yaml
new/oslo.concurrency-4.0.2/.zuul.yaml
--- old/oslo.concurrency-3.30.0/.zuul.yaml 2019-09-04 16:25:11.000000000
+0200
+++ new/oslo.concurrency-4.0.2/.zuul.yaml 2020-04-07 12:10:50.000000000
+0200
@@ -1,12 +1,10 @@
- project:
templates:
- check-requirements
- - lib-forward-testing
- lib-forward-testing-python3
- openstack-cover-jobs
- openstack-lower-constraints-jobs
- - openstack-python-jobs
- - openstack-python3-train-jobs
+ - openstack-python3-ussuri-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-3.30.0/AUTHORS
new/oslo.concurrency-4.0.2/AUTHORS
--- old/oslo.concurrency-3.30.0/AUTHORS 2019-09-04 16:25:50.000000000 +0200
+++ new/oslo.concurrency-4.0.2/AUTHORS 2020-04-07 12:11:49.000000000 +0200
@@ -30,6 +30,7 @@
Dirk Mueller <[email protected]>
Doug Hellmann <[email protected]>
Doug Hellmann <[email protected]>
+Eric Fried <[email protected]>
Eric Windisch <[email protected]>
Flaper Fesp <[email protected]>
Flavio Percoco <[email protected]>
@@ -37,6 +38,7 @@
Gary Kotton <[email protected]>
Gevorg Davoian <[email protected]>
Ghanshyam Mann <[email protected]>
+Gorka Eguileor <[email protected]>
Hervé Beraud <[email protected]>
IWAMOTO Toshihiro <[email protected]>
Ian Cordasco <[email protected]>
@@ -72,9 +74,11 @@
Salvatore Orlando <[email protected]>
Sean Dague <[email protected]>
Sean M. Collins <[email protected]>
+Sean McGinnis <[email protected]>
Sergey Kraynev <[email protected]>
Sergey Lukjanov <[email protected]>
Shawn Boyette <[email protected]>
+Stephen Finucane <[email protected]>
Steve Kowalik <[email protected]>
Steve Martinelli <[email protected]>
Thomas Bechtold <[email protected]>
@@ -91,6 +95,7 @@
ZhijunWei <[email protected]>
ZhongShengping <[email protected]>
Zhongyue Luo <[email protected]>
+caoyuan <[email protected]>
gecong1973 <[email protected]>
gengchc2 <[email protected]>
howardlee <[email protected]>
@@ -98,6 +103,7 @@
jichenjc <[email protected]>
loooosy <[email protected]>
melissaml <[email protected]>
+pengyuesheng <[email protected]>
prashkre <[email protected]>
ricolin <[email protected]>
shangxiaobj <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/ChangeLog
new/oslo.concurrency-4.0.2/ChangeLog
--- old/oslo.concurrency-3.30.0/ChangeLog 2019-09-04 16:25:50.000000000
+0200
+++ new/oslo.concurrency-4.0.2/ChangeLog 2020-04-07 12:11:49.000000000
+0200
@@ -1,6 +1,42 @@
CHANGES
=======
+4.0.2
+-----
+
+* Use unittest.mock instead of third party mock
+* Update hacking for Python3
+
+4.0.1
+-----
+
+* trivial: Cleanup tox.ini
+* ignore reno builds artifacts
+* remove outdated header
+* Stop to build universal wheel
+
+4.0.0
+-----
+
+* Drop python 2.7 support and testing
+* Stop configuring install\_command in tox
+* tox: Trivial cleanup
+* Fix remove\_lock test
+
+3.31.0
+------
+
+* Spiff up docs for \*\_with\_prefix
+* Switch to Ussuri jobs
+* tox: Keeping going with docs
+* Document management and history of lock files
+* Bump the openstackdocstheme extension to 1.20
+* Blacklist sphinx 2.1.0 (autodoc bug)
+* Update the constraints url
+* Update master for stable/train
+* Add lock\_with\_prefix convenience utility
+* Some test cleanup
+
3.30.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/PKG-INFO
new/oslo.concurrency-4.0.2/PKG-INFO
--- old/oslo.concurrency-3.30.0/PKG-INFO 2019-09-04 16:25:50.000000000
+0200
+++ new/oslo.concurrency-4.0.2/PKG-INFO 2020-04-07 12:11:49.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: oslo.concurrency
-Version: 3.30.0
+Version: 4.0.2
Summary: Oslo Concurrency library
Home-page: https://docs.openstack.org/oslo.concurrency/latest/
Author: OpenStack
@@ -41,8 +41,9 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+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-3.30.0/doc/requirements.txt
new/oslo.concurrency-4.0.2/doc/requirements.txt
--- old/oslo.concurrency-3.30.0/doc/requirements.txt 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/doc/requirements.txt 2020-04-07
12:10:50.000000000 +0200
@@ -2,9 +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.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD
-sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4' # BSD
-openstackdocstheme>=1.18.1 # Apache-2.0
+sphinx>=1.8.0,!=2.1.0 # BSD
+openstackdocstheme>=1.20.0 # Apache-2.0
reno>=2.5.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-3.30.0/doc/source/admin/index.rst
new/oslo.concurrency-4.0.2/doc/source/admin/index.rst
--- old/oslo.concurrency-3.30.0/doc/source/admin/index.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.concurrency-4.0.2/doc/source/admin/index.rst 2020-04-07
12:10:50.000000000 +0200
@@ -0,0 +1,96 @@
+=====================
+ Administrator Guide
+=====================
+
+This section contains information useful to administrators operating a service
+that uses oslo.concurrency.
+
+Lock File Management
+====================
+
+For services that use oslo.concurrency's external lock functionality for
+interprocess locking, lock files will be stored in the location specified
+by the ``lock_path`` config option in the ``oslo_concurrency`` section.
+These lock files are not automatically deleted by oslo.concurrency because
+the library has no way to know when the service is done with a lock, and
+deleting a lock file that is being held by the service would cause
+concurrency problems. Some services do delete lock files when they are done
+with them, but deletion of a service's lock files while the service is
+running should only be done by the service itself. External cleanup methods
+cannot reasonably know when a lock is no longer needed.
+
+However, to prevent the ``lock_path`` directory from growing indefinitely,
+it is a good idea to occasionally delete all the lock files from it. The only
+safe time to do this is when the service is not running, such as after a
+reboot or when the service is down for maintenance. In the latter case, make
+sure that all related services (such as api, worker, conductor, etc) are down
+If any process that might hold locks is still running, deleting lock files may
+introduce inconsistency in the service. One possible approach to this cleanup
+is to put the ``lock_path`` in tmpfs so it will be automatically cleared on
+reboot.
+
+Note that in general, leftover lock files are a cosmetic nuisance at worst.
+If you do run into a functional problem as a result of large numbers of
+lock files, please report it to the Oslo team so we can look into other
+mitigation strategies.
+
+Frequently Asked Questions
+==========================
+
+What is the history of the lock file issue?
+-------------------------------------------
+
+It comes up every few months when a deployer of OpenStack notices that they
+have a large number of lock files lying around, apparently unused. A thread
+is started on the mailing list and one of the Oslo developers has to provide
+an explanation of why it works the way it does. This FAQ is intended to be an
+official replacement for the one-off explanation that is usually given.
+
+The code responsible for this behavior has actually moved to the
+`fasteners <https://github.com/harlowja/fasteners>`_ project, and there
+is an
+`issue addressing the leftover lock files
<https://github.com/harlowja/fasteners/issues/26>`_
+there. It covers much of the technical history of the problem, as well as
+some proposed solutions.
+
+Why hasn't this been fixed yet?
+-------------------------------
+
+Because to the Oslo developers' knowledge, no one has ever had a functional
+issue as a result of leftover lock files. This makes it a lower priority
+problem, and because of the complexity of fixing it nobody has been able to
+yet. If functional issues are found, they should be reported as a bug
+against oslo.concurrency so they can be tracked. In the meantime, this will
+likely continue to be treated as a cosmetic annoyance and prioritized
+appropriately.
+
+Why aren't lock files deleted when the lock is released?
+--------------------------------------------------------
+
+In our testing, when a lock file was deleted while another process was waiting
+for it, it created a sort of split-brain situation between any process that had
+been waiting for the deleted file, and any process that attempted to lock the
+file after it had been deleted. Essentially, two processes could end up holding
+the same lock at the same time, which made this an unacceptable solution.
+
+Why don't you use some other method of interprocess locking?
+------------------------------------------------------------
+
+We tried. Both Posix and SysV IPC were explored as alternatives. Unfortunately,
+both have significant issues on Linux. Posix locks cannot be broken if the
+process holding them crashes (at least not without a reboot). SysV locks have
+a limited range of numerical ids, and because oslo.concurrency supports
+string-based lock names, the possibility of collisions when hashing names was
+too high. It was deemed better to have the file-based locking mechanism that
+would always work than a different method that introduced serious new problems.
+
+Bonus Question: Why doesn't ``lock_path`` default to a temp directory?
+----------------------------------------------------------------------
+
+Because every process that may need to hold a lock must use the same value
+for ``lock_path`` or it becomes useless. If we allowed ``lock_path`` to be
+unset and just created a temp directory on startup, each process would create
+its own temp directory and there would be no actual coordination between them.
+
+While this isn't strictly related to the lock file issue, it is another FAQ
+about oslo.concurrency so it made sense to mention it here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/doc/source/conf.py
new/oslo.concurrency-4.0.2/doc/source/conf.py
--- old/oslo.concurrency-3.30.0/doc/source/conf.py 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/doc/source/conf.py 2020-04-07
12:10:50.000000000 +0200
@@ -32,7 +32,6 @@
master_doc = 'index'
# General information about the project.
-project = u'oslo.concurrency'
copyright = u'2014, OpenStack Foundation'
# If true, '()' will be appended to :func: etc. cross-reference text.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/doc/source/index.rst
new/oslo.concurrency-4.0.2/doc/source/index.rst
--- old/oslo.concurrency-3.30.0/doc/source/index.rst 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/doc/source/index.rst 2020-04-07
12:10:50.000000000 +0200
@@ -10,6 +10,7 @@
:maxdepth: 1
install/index
+ admin/index
user/index
configuration/index
contributor/index
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/lower-constraints.txt
new/oslo.concurrency-4.0.2/lower-constraints.txt
--- old/oslo.concurrency-3.30.0/lower-constraints.txt 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/lower-constraints.txt 2020-04-07
12:10:50.000000000 +0200
@@ -24,12 +24,11 @@
linecache2==1.0.0
MarkupSafe==1.0
mccabe==0.2.1
-mock==2.0.0
monotonic==0.6
mox3==0.20.0
netaddr==0.7.18
netifaces==0.10.4
-openstackdocstheme==1.18.1
+openstackdocstheme==1.20.0
os-client-config==1.28.0
oslo.config==5.2.0
oslo.i18n==3.15.3
@@ -51,7 +50,7 @@
six==1.10.0
smmap==0.9.0
snowballstemmer==1.2.1
-Sphinx==1.6.2
+Sphinx==1.8.0
sphinxcontrib-websupport==1.0.1
stevedore==1.20.0
stestr==2.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/PKG-INFO
new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/PKG-INFO
--- old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/PKG-INFO
2019-09-04 16:25:50.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/PKG-INFO
2020-04-07 12:11:49.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: oslo.concurrency
-Version: 3.30.0
+Version: 4.0.2
Summary: Oslo Concurrency library
Home-page: https://docs.openstack.org/oslo.concurrency/latest/
Author: OpenStack
@@ -41,8 +41,9 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+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-3.30.0/oslo.concurrency.egg-info/SOURCES.txt
new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/SOURCES.txt
--- old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/SOURCES.txt
2019-09-04 16:25:50.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/SOURCES.txt
2020-04-07 12:11:49.000000000 +0200
@@ -18,6 +18,7 @@
doc/requirements.txt
doc/source/conf.py
doc/source/index.rst
+doc/source/admin/index.rst
doc/source/configuration/index.rst
doc/source/contributor/contributing.rst
doc/source/contributor/history.rst
@@ -60,6 +61,7 @@
releasenotes/notes/add-option-for-fair-locks-b6d660e97683cec6.yaml
releasenotes/notes/add-python-exec-kwarg-3a7a0c0849f9bb21.yaml
releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
+releasenotes/notes/drop-python27-support-7d837a45dae941bb.yaml
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/newton.rst
@@ -68,6 +70,7 @@
releasenotes/source/queens.rst
releasenotes/source/rocky.rst
releasenotes/source/stein.rst
+releasenotes/source/train.rst
releasenotes/source/unreleased.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/pbr.json
new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/pbr.json
--- old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/pbr.json
2019-09-04 16:25:50.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/pbr.json
2020-04-07 12:11:49.000000000 +0200
@@ -1 +1 @@
-{"git_version": "610df38", "is_release": true}
\ No newline at end of file
+{"git_version": "60a157a", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/requires.txt
new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/requires.txt
--- old/oslo.concurrency-3.30.0/oslo.concurrency.egg-info/requires.txt
2019-09-04 16:25:50.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo.concurrency.egg-info/requires.txt
2020-04-07 12:11:49.000000000 +0200
@@ -4,6 +4,3 @@
oslo.utils>=3.33.0
six>=1.10.0
fasteners>=0.7.0
-
-[:(python_version=='2.7' or python_version=='2.6' or python_version=='3.3')]
-enum34>=1.0.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo_concurrency/lockutils.py
new/oslo.concurrency-4.0.2/oslo_concurrency/lockutils.py
--- old/oslo.concurrency-3.30.0/oslo_concurrency/lockutils.py 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo_concurrency/lockutils.py 2020-04-07
12:10:50.000000000 +0200
@@ -281,6 +281,37 @@
LOG.debug('Releasing lock "%(lock)s"', {'lock': name})
+def lock_with_prefix(lock_file_prefix):
+ """Partial object generator for the lock context manager.
+
+ Redefine lock in each project like so::
+
+ (in nova/utils.py)
+ from oslo_concurrency import lockutils
+
+ _prefix = 'nova'
+ lock = lockutils.lock_with_prefix(_prefix)
+ lock_cleanup = lockutils.remove_external_lock_file_with_prefix(_prefix)
+
+
+ (in nova/foo.py)
+ from nova import utils
+
+ with utils.lock('mylock'):
+ ...
+
+ Eventually clean up with::
+
+ lock_cleanup('mylock')
+
+ :param lock_file_prefix: A string used to provide lock files on disk with a
+ meaningful prefix. Will be separated from the lock name with a hyphen,
+ which may optionally be included in the lock_file_prefix (e.g.
+ ``'nova'`` and ``'nova-'`` are equivalent).
+ """
+ return functools.partial(lock, lock_file_prefix=lock_file_prefix)
+
+
def synchronized(name, lock_file_prefix=None, external=False, lock_path=None,
semaphores=None, delay=0.01, fair=False):
"""Synchronization decorator.
@@ -350,7 +381,9 @@
(in nova/utils.py)
from oslo_concurrency import lockutils
- synchronized = lockutils.synchronized_with_prefix('nova-')
+ _prefix = 'nova'
+ synchronized = lockutils.synchronized_with_prefix(_prefix)
+ lock_cleanup = lockutils.remove_external_lock_file_with_prefix(_prefix)
(in nova/foo.py)
@@ -360,8 +393,14 @@
def bar(self, *args):
...
- The lock_file_prefix argument is used to provide lock files on disk with a
- meaningful prefix.
+ Eventually clean up with::
+
+ lock_cleanup('mylock')
+
+ :param lock_file_prefix: A string used to provide lock files on disk with a
+ meaningful prefix. Will be separated from the lock name with a hyphen,
+ which may optionally be included in the lock_file_prefix (e.g.
+ ``'nova'`` and ``'nova-'`` are equivalent).
"""
return functools.partial(synchronized, lock_file_prefix=lock_file_prefix)
@@ -375,18 +414,25 @@
(in nova/utils.py)
from oslo_concurrency import lockutils
- synchronized = lockutils.synchronized_with_prefix('nova-')
- synchronized_remove = lockutils.remove_external_lock_file_with_prefix(
- 'nova-')
+ _prefix = 'nova'
+ synchronized = lockutils.synchronized_with_prefix(_prefix)
+ lock = lockutils.lock_with_prefix(_prefix)
+ lock_cleanup = lockutils.remove_external_lock_file_with_prefix(_prefix)
(in nova/foo.py)
from nova import utils
@utils.synchronized('mylock')
def bar(self, *args):
- ...
+ ...
+
+ def baz(self, *args):
+ ...
+ with utils.lock('mylock'):
+ ...
+ ...
- <eventually call synchronized_remove('mylock') to cleanup>
+ <eventually call lock_cleanup('mylock') to clean up>
The lock_file_prefix argument is used to provide lock files on disk with a
meaningful prefix.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo_concurrency/tests/unit/test_lockutils.py
new/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_lockutils.py
--- old/oslo.concurrency-3.30.0/oslo_concurrency/tests/unit/test_lockutils.py
2019-09-04 16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_lockutils.py
2020-04-07 12:10:50.000000000 +0200
@@ -15,13 +15,13 @@
import collections
import multiprocessing
import os
-import shutil
import signal
import subprocess
import sys
import tempfile
import threading
import time
+from unittest import mock
from oslo_config import cfg
from oslotest import base as test_base
@@ -188,65 +188,54 @@
def test_nested_synchronized_external_works(self):
"""We can nest external syncs."""
- tempdir = tempfile.mkdtemp()
- try:
- self.config(lock_path=tempdir, group='oslo_concurrency')
- sentinel = object()
-
- @lockutils.synchronized('testlock1', 'test-', external=True)
- def outer_lock():
-
- @lockutils.synchronized('testlock2', 'test-', external=True)
- def inner_lock():
- return sentinel
- return inner_lock()
-
- self.assertEqual(sentinel, outer_lock())
-
- finally:
- if os.path.exists(tempdir):
- shutil.rmtree(tempdir)
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
+ sentinel = object()
+
+ @lockutils.synchronized('testlock1', 'test-', external=True)
+ def outer_lock():
+
+ @lockutils.synchronized('testlock2', 'test-', external=True)
+ def inner_lock():
+ return sentinel
+ return inner_lock()
+
+ self.assertEqual(sentinel, outer_lock())
def _do_test_lock_externally(self):
"""We can lock across multiple processes."""
- handles_dir = tempfile.mkdtemp()
- try:
- children = []
- for n in range(50):
- queue = multiprocessing.Queue()
- proc = multiprocessing.Process(
- target=lock_files,
- args=(handles_dir, queue))
- proc.start()
- children.append((proc, queue))
- for child, queue in children:
- child.join()
- count = queue.get(block=False)
- self.assertEqual(50, count)
- finally:
- if os.path.exists(handles_dir):
- shutil.rmtree(handles_dir, ignore_errors=True)
+ children = []
+ for n in range(50):
+ queue = multiprocessing.Queue()
+ proc = multiprocessing.Process(
+ target=lock_files,
+ args=(tempfile.mkdtemp(), queue))
+ proc.start()
+ children.append((proc, queue))
+ for child, queue in children:
+ child.join()
+ count = queue.get(block=False)
+ self.assertEqual(50, count)
def test_lock_externally(self):
- lock_dir = tempfile.mkdtemp()
- self.config(lock_path=lock_dir, group='oslo_concurrency')
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
- try:
- self._do_test_lock_externally()
- finally:
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
+ self._do_test_lock_externally()
def test_lock_externally_lock_dir_not_exist(self):
lock_dir = tempfile.mkdtemp()
os.rmdir(lock_dir)
self.config(lock_path=lock_dir, group='oslo_concurrency')
- try:
- self._do_test_lock_externally()
- finally:
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
+ self._do_test_lock_externally()
+
+ def test_lock_with_prefix(self):
+ # TODO(efried): Embetter this test
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
+ foo = lockutils.lock_with_prefix('mypfix-')
+
+ with foo('mylock', external=True):
+ # We can't check much
+ pass
def test_synchronized_with_prefix(self):
lock_name = 'mylock'
@@ -264,115 +253,93 @@
self.assertTrue(bar(lock_dir, lock_pfix, lock_name))
def test_synchronized_without_prefix(self):
- lock_dir = tempfile.mkdtemp()
- self.config(lock_path=lock_dir, group='oslo_concurrency')
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
@lockutils.synchronized('lock', external=True)
def test_without_prefix():
# We can't check much
pass
- try:
- test_without_prefix()
- finally:
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
+ test_without_prefix()
def test_synchronized_prefix_without_hypen(self):
- lock_dir = tempfile.mkdtemp()
- self.config(lock_path=lock_dir, group='oslo_concurrency')
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
@lockutils.synchronized('lock', 'hypen', True)
def test_without_hypen():
# We can't check much
pass
- try:
- test_without_hypen()
- finally:
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
+ test_without_hypen()
def test_contextlock(self):
- lock_dir = tempfile.mkdtemp()
- self.config(lock_path=lock_dir, group='oslo_concurrency')
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
- try:
- # 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)
+ # 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)
+
+ # NOTE(flaper87): Lock is external so an InterProcessLock
+ # will be yielded.
+ with lockutils.lock("test2", external=True) as lock:
+ self.assertTrue(lock.exists())
- # NOTE(flaper87): Lock is external so an InterProcessLock
- # will be yielded.
- with lockutils.lock("test2", external=True) as lock:
- self.assertTrue(lock.exists())
-
- with lockutils.lock("test1",
- external=True) as lock1:
- self.assertIsInstance(lock1,
- lockutils.InterProcessLock)
- finally:
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
+ with lockutils.lock("test1", external=True) as lock1:
+ self.assertIsInstance(lock1, lockutils.InterProcessLock)
def test_contextlock_unlocks(self):
- lock_dir = tempfile.mkdtemp()
- self.config(lock_path=lock_dir, group='oslo_concurrency')
-
- sem = None
+ self.config(lock_path=tempfile.mkdtemp(), group='oslo_concurrency')
- try:
- with lockutils.lock("test") as sem:
- if six.PY2:
- self.assertIsInstance(sem, threading._Semaphore)
- else:
- self.assertIsInstance(sem, threading.Semaphore)
-
- with lockutils.lock("test2", external=True) as lock:
- self.assertTrue(lock.exists())
+ with lockutils.lock("test") as sem:
+ if six.PY2:
+ self.assertIsInstance(sem, threading._Semaphore)
+ else:
+ self.assertIsInstance(sem, threading.Semaphore)
- # NOTE(flaper87): Lock should be free
- with lockutils.lock("test2", external=True) as lock:
- self.assertTrue(lock.exists())
+ with lockutils.lock("test2", external=True) as lock:
+ self.assertTrue(lock.exists())
# NOTE(flaper87): Lock should be free
- # but semaphore should already exist.
- with lockutils.lock("test") as sem2:
- self.assertEqual(sem, sem2)
- finally:
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
-
- def _test_remove_lock_external_file(self, lock_dir, use_external=False):
- lock_name = 'mylock'
- lock_pfix = 'mypfix-remove-lock-test-'
+ with lockutils.lock("test2", external=True) as lock:
+ self.assertTrue(lock.exists())
- if use_external:
- lock_path = lock_dir
- else:
- lock_path = None
-
- lockutils.remove_external_lock_file(lock_name, lock_pfix, lock_path)
-
- for ent in os.listdir(lock_dir):
- self.assertRaises(OSError, ent.startswith, lock_pfix)
-
- if os.path.exists(lock_dir):
- shutil.rmtree(lock_dir, ignore_errors=True)
-
- def test_remove_lock_external_file(self):
- lock_dir = tempfile.mkdtemp()
- self.config(lock_path=lock_dir, group='oslo_concurrency')
- self._test_remove_lock_external_file(lock_dir)
-
- def test_remove_lock_external_file_lock_path(self):
- lock_dir = tempfile.mkdtemp()
- self._test_remove_lock_external_file(lock_dir,
- use_external=True)
+ # NOTE(flaper87): Lock should be free
+ # but semaphore should already exist.
+ with lockutils.lock("test") as sem2:
+ self.assertEqual(sem, sem2)
+
+ @mock.patch('logging.Logger.info')
+ @mock.patch('os.remove')
+ @mock.patch('oslo_concurrency.lockutils._get_lock_path')
+ def test_remove_lock_external_file_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.info')
+ @mock.patch('os.remove', side_effect=OSError)
+ @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_called()
def test_no_slash_in_b64(self):
# base64(sha1(foobar)) has a slash in it
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo_concurrency/tests/unit/test_lockutils_eventlet.py
new/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_lockutils_eventlet.py
---
old/oslo.concurrency-3.30.0/oslo_concurrency/tests/unit/test_lockutils_eventlet.py
2019-09-04 16:25:11.000000000 +0200
+++
new/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_lockutils_eventlet.py
2020-04-07 12:10:50.000000000 +0200
@@ -13,7 +13,6 @@
# under the License.
import os
-import shutil
import tempfile
import eventlet
@@ -28,32 +27,27 @@
def test_concurrent_green_lock_succeeds(self):
"""Verify spawn_n greenthreads with two locks run concurrently."""
tmpdir = tempfile.mkdtemp()
- try:
- self.completed = False
+ self.completed = False
- def locka(wait):
- a = lockutils.InterProcessLock(os.path.join(tmpdir, 'a'))
- with a:
- wait.wait()
- self.completed = True
-
- def lockb(wait):
- b = lockutils.InterProcessLock(os.path.join(tmpdir, 'b'))
- with b:
- wait.wait()
-
- wait1 = eventlet.event.Event()
- wait2 = eventlet.event.Event()
- pool = greenpool.GreenPool()
- pool.spawn_n(locka, wait1)
- pool.spawn_n(lockb, wait2)
- wait2.send()
- eventlet.sleep(0)
- wait1.send()
- pool.waitall()
-
- self.assertTrue(self.completed)
-
- finally:
- if os.path.exists(tmpdir):
- shutil.rmtree(tmpdir)
+ def locka(wait):
+ a = lockutils.InterProcessLock(os.path.join(tmpdir, 'a'))
+ with a:
+ wait.wait()
+ self.completed = True
+
+ def lockb(wait):
+ b = lockutils.InterProcessLock(os.path.join(tmpdir, 'b'))
+ with b:
+ wait.wait()
+
+ wait1 = eventlet.event.Event()
+ wait2 = eventlet.event.Event()
+ pool = greenpool.GreenPool()
+ pool.spawn_n(locka, wait1)
+ pool.spawn_n(lockb, wait2)
+ wait2.send()
+ eventlet.sleep(0)
+ wait1.send()
+ pool.waitall()
+
+ self.assertTrue(self.completed)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/oslo_concurrency/tests/unit/test_processutils.py
new/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_processutils.py
---
old/oslo.concurrency-3.30.0/oslo_concurrency/tests/unit/test_processutils.py
2019-09-04 16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/oslo_concurrency/tests/unit/test_processutils.py
2020-04-07 12:10:50.000000000 +0200
@@ -26,9 +26,9 @@
import subprocess
import sys
import tempfile
+from unittest import mock
import fixtures
-import mock
from oslotest import base as test_base
import six
@@ -190,18 +190,18 @@
stdout = """
Lo, praise of the prowess of people-kings
of spear-armed Danes, in days long sped,
- we have heard, and what honot the athelings won!
+ we have heard, and what honor the athelings won!
Oft Scyld the Scefing from squadroned foes,
from many a tribe, the mead-bench tore,
- awing the earls. Since erse he lay
+ awing the earls. Since erst he lay
friendless, a foundling, fate repaid him:
- for he waxed under welkin, in wealth he trove,
+ for he waxed under welkin, in wealth he throve,
till before him the folk, both far and near,
who house by the whale-path, heard his mandate,
- gabe him gits: a good king he!
+ gave him gifts: a good king he!
To him an heir was afterward born,
a son in his halls, whom heaven sent
- to favor the fol, feeling their woe
+ to favor the folk, feeling their woe
that erst they had lacked an earl for leader
so long a while; the Lord endowed him,
the Wielder of Wonder, with world's renown.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/releasenotes/notes/drop-python27-support-7d837a45dae941bb.yaml
new/oslo.concurrency-4.0.2/releasenotes/notes/drop-python27-support-7d837a45dae941bb.yaml
---
old/oslo.concurrency-3.30.0/releasenotes/notes/drop-python27-support-7d837a45dae941bb.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/oslo.concurrency-4.0.2/releasenotes/notes/drop-python27-support-7d837a45dae941bb.yaml
2020-04-07 12:10:50.000000000 +0200
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ Python 2.7 is no longer supported. The minimum supported version of Python
+ is now Python 3.6.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/releasenotes/source/conf.py
new/oslo.concurrency-4.0.2/releasenotes/source/conf.py
--- old/oslo.concurrency-3.30.0/releasenotes/source/conf.py 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/releasenotes/source/conf.py 2020-04-07
12:10:50.000000000 +0200
@@ -43,7 +43,6 @@
repository_name = 'openstack/oslo.config'
bug_project = 'oslo.config'
bug_tag = ''
-html_last_updated_fmt = '%Y-%m-%d %H:%M'
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -58,7 +57,6 @@
master_doc = 'index'
# General information about the project.
-project = u'oslo.concurrency Release Notes'
copyright = u'2016, oslo.concurrency Developers'
# Release notes do not need a version in the title, they span
@@ -194,17 +192,6 @@
# -- Options for LaTeX output ---------------------------------------------
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- # 'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- # 'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- # 'preamble': '',
-}
-
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/releasenotes/source/index.rst
new/oslo.concurrency-4.0.2/releasenotes/source/index.rst
--- old/oslo.concurrency-3.30.0/releasenotes/source/index.rst 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/releasenotes/source/index.rst 2020-04-07
12:10:50.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ train
stein
rocky
queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.concurrency-3.30.0/releasenotes/source/train.rst
new/oslo.concurrency-4.0.2/releasenotes/source/train.rst
--- old/oslo.concurrency-3.30.0/releasenotes/source/train.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.concurrency-4.0.2/releasenotes/source/train.rst 2020-04-07
12:10:50.000000000 +0200
@@ -0,0 +1,6 @@
+==========================
+Train Series Release Notes
+==========================
+
+.. release-notes::
+ :branch: stable/train
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/requirements.txt
new/oslo.concurrency-4.0.2/requirements.txt
--- old/oslo.concurrency-3.30.0/requirements.txt 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/requirements.txt 2020-04-07 12:10:50.000000000
+0200
@@ -3,7 +3,6 @@
# process, which may cause wedges in the gate later.
pbr!=2.1.0,>=2.0.0 # Apache-2.0
-enum34>=1.0.4;python_version=='2.7' or python_version=='2.6' or
python_version=='3.3' # BSD
oslo.config>=5.2.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
oslo.utils>=3.33.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/setup.cfg
new/oslo.concurrency-4.0.2/setup.cfg
--- old/oslo.concurrency-3.30.0/setup.cfg 2019-09-04 16:25:50.000000000
+0200
+++ new/oslo.concurrency-4.0.2/setup.cfg 2020-04-07 12:11:49.000000000
+0200
@@ -6,6 +6,7 @@
author = OpenStack
author-email = [email protected]
home-page = https://docs.openstack.org/oslo.concurrency/latest/
+python-requires = >=3.6
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@@ -13,11 +14,11 @@
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
- Programming Language :: Python :: 2
- Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: Implementation :: CPython
[files]
packages =
@@ -29,15 +30,6 @@
console_scripts =
lockutils-wrapper = oslo_concurrency.lockutils:main
-[build_sphinx]
-source-dir = doc/source
-build-dir = doc/build
-all_files = 1
-warning-is-error = 1
-
-[upload_sphinx]
-upload-dir = doc/build/html
-
[compile_catalog]
directory = oslo_concurrency/locale
domain = oslo_concurrency
@@ -52,12 +44,6 @@
mapping_file = babel.cfg
output_file = oslo_concurrency/locale/oslo_concurrency.pot
-[pbr]
-warnerrors = True
-
-[bdist_wheel]
-universal = 1
-
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/setup.py
new/oslo.concurrency-4.0.2/setup.py
--- old/oslo.concurrency-3.30.0/setup.py 2019-09-04 16:25:11.000000000
+0200
+++ new/oslo.concurrency-4.0.2/setup.py 2020-04-07 12:10:50.000000000 +0200
@@ -13,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
# In python < 2.7.4, a lazy loading of package `pbr` will break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/test-requirements.txt
new/oslo.concurrency-4.0.2/test-requirements.txt
--- old/oslo.concurrency-3.30.0/test-requirements.txt 2019-09-04
16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/test-requirements.txt 2020-04-07
12:10:50.000000000 +0200
@@ -2,13 +2,11 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-hacking>=1.1.0,<1.2.0 # Apache-2.0
+hacking>=3.0,<3.1.0 # Apache-2.0
oslotest>=3.2.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0
-futures>=3.0.0;python_version=='2.7' or python_version=='2.6' # BSD
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
# Bandit security code scanner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.concurrency-3.30.0/tox.ini
new/oslo.concurrency-4.0.2/tox.ini
--- old/oslo.concurrency-3.30.0/tox.ini 2019-09-04 16:25:11.000000000 +0200
+++ new/oslo.concurrency-4.0.2/tox.ini 2020-04-07 12:10:50.000000000 +0200
@@ -1,46 +1,39 @@
[tox]
-minversion = 2.0
-envlist = py27,py37,pep8
+minversion = 3.2.0
+envlist = py37,pep8
+ignore_basepython_conflict = True
[testenv]
-install_command = pip install {opts} {packages}
+basepython = python3
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
+
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/test-requirements.txt
- -r{toxinidir}/requirements.txt
# We want to support both vanilla stdlib and eventlet monkey patched
+whitelist_externals = env
commands =
- lockutils-wrapper stestr run --slowest {posargs}
+ env TEST_EVENTLET=0 lockutils-wrapper stestr run --slowest {posargs}
env TEST_EVENTLET=1 lockutils-wrapper stestr run --slowest {posargs}
-[testenv:py27]
-basepython = python2.7
-
[testenv:pep8]
-basepython = python3
-deps =
- -r{toxinidir}/test-requirements.txt
+deps = {[testenv]deps}
commands =
flake8
# Run security linter
bandit -r oslo_concurrency -x tests -n5 --skip B311,B404,B603,B606
[testenv:venv]
-basepython = python3
commands = {posargs}
[testenv:docs]
-basepython = python3
whitelist_externals = rm
deps =
- {[testenv]deps}
+
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
-r{toxinidir}/doc/requirements.txt
commands =
rm -fr doc/build
- sphinx-build -W -b html doc/source doc/build/html {posargs}
+ sphinx-build -W --keep-going -b html doc/source doc/build/html {posargs}
[testenv:cover]
-basepython = python3
setenv =
PYTHON=coverage run --source oslo_concurrency --parallel-mode
commands =
@@ -51,7 +44,7 @@
[flake8]
show-source = True
-ignore = H405
+ignore = H405,W504
exclude=.venv,.git,.tox,dist,*lib/python*,*egg,build
[hacking]
@@ -59,12 +52,11 @@
oslo_concurrency._i18n
[testenv:releasenotes]
-basepython = python3
-deps = -r{toxinidir}/doc/requirements.txt
-commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html
+deps = {[testenv:docs]deps}
+commands =
+ sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html
releasenotes/source releasenotes/build/html
[testenv:lower-constraints]
-basepython = python3
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt