Hello community,

here is the log from the commit of package python-oslo.concurrency for 
openSUSE:Factory checked in at 2016-09-30 15:35:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.concurrency (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.concurrency.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.concurrency"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-oslo.concurrency/python-oslo.concurrency.changes
  2016-05-04 08:20:04.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.concurrency.new/python-oslo.concurrency.changes
     2016-09-30 15:35:36.000000000 +0200
@@ -1,0 +2,44 @@
+Tue Aug 30 16:22:27 UTC 2016 - [email protected]
+
+- update to version 3.14.0
+  * Fix external lock tests on Windows
+  * Updated from global requirements
+
+-------------------------------------------------------------------
+Wed Aug 10 14:35:56 UTC 2016 - [email protected]
+
+- update to version 3.13.0
+  * Add Python 3.5 classifier and venv
+  * Imported Translations from Zanata
+  * Fix parameters of assertEqual are misplaced
+  * Updated from global requirements
+  * Add reno for releasenotes management
+
+-------------------------------------------------------------------
+Fri Jun  3 13:17:59 UTC 2016 - [email protected]
+
+- update to 3.9.0:
+  * Add doc/ to pep8 check
+  * Remove unused import statement
+  * Add timeout option to ssh_execute
+  * Fix wrong import example in docstring
+  * Trivial: ignore openstack/common in flake8 exclude list
+  * Updated from global requirements
+  * Imported Translations from Zanata
+  * processutils: add support for missing process limits
+  * Remove direct dependency on babel
+  * Updated from global requirements
+  * Updated from global requirements
+  * Updated from global requirements
+  * Add a few usage examples for lockutils
+  * Revert "Use tempfile.tempdir for lock_path if OSLO_LOCK_PATH is not set"
+  * Updated from global requirements
+  * Use tempfile.tempdir for lock_path if OSLO_LOCK_PATH is not set
+
+-------------------------------------------------------------------
+Thu Jun  2 08:55:41 UTC 2016 - [email protected]
+
+- use renderspec source service
+- update spec from upstream
+
+-------------------------------------------------------------------

Old:
----
  oslo.concurrency-3.7.0.tar.gz

New:
----
  oslo.concurrency-3.14.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-oslo.concurrency.spec ++++++
--- /var/tmp/diff_new_pack.vEcZCL/_old  2016-09-30 15:35:38.000000000 +0200
+++ /var/tmp/diff_new_pack.vEcZCL/_new  2016-09-30 15:35:38.000000000 +0200
@@ -16,87 +16,87 @@
 #
 
 
-%define version_unconverted 3.7.0
-
+%global sname oslo.concurrency
 Name:           python-oslo.concurrency
-Version:        3.7.0
+Version:        3.14.0
 Release:        0
-Summary:        OpenStack Oslo concurrency library
+Summary:        OpenStack oslo.concurrency library
 License:        Apache-2.0
 Group:          Development/Languages/Python
-Url:            http://launchpad.net/oslo
-Source:         
https://pypi.python.org/packages/source/o/oslo.concurrency/oslo.concurrency-%{version}.tar.gz
-BuildRequires:  openstack-suse-macros
+Url:            https://launchpad.net/%{sname}
+Source0:        
https://pypi.io/packages/source/o/%{sname}/%{sname}-%{version}.tar.gz
+BuildRequires:  openstack-macros
 BuildRequires:  python-devel
 BuildRequires:  python-enum34
-BuildRequires:  python-eventlet
-BuildRequires:  python-fasteners
-BuildRequires:  python-fixtures
-BuildRequires:  python-futures
-BuildRequires:  python-mock
-BuildRequires:  python-oslo.config
-BuildRequires:  python-oslo.utils
-BuildRequires:  python-oslosphinx
-BuildRequires:  python-oslotest
-BuildRequires:  python-pbr
-BuildRequires:  python-retrying
-BuildRequires:  python-setuptools
-BuildRequires:  python-sphinx
-BuildRequires:  python-testrepository
-Requires:       python-Babel >= 1.3
+BuildRequires:  python-eventlet >= 0.18.2
+BuildRequires:  python-fasteners >= 0.7
+BuildRequires:  python-fixtures >= 3.0.0
+BuildRequires:  python-futures >= 3.0
+BuildRequires:  python-mock >= 2.0
+BuildRequires:  python-oslo.config >= 3.14.0
+BuildRequires:  python-oslo.i18n >= 2.1.0
+BuildRequires:  python-oslo.utils >= 3.16.0
+BuildRequires:  python-oslotest >= 1.10.0
+BuildRequires:  python-pbr >= 1.6
+BuildRequires:  python-testrepository >= 0.0.18
+BuildRequires:  python-testscenarios >= 0.4
+BuildRequires:  python-testtools >= 1.4.0
 Requires:       python-enum34
 Requires:       python-fasteners >= 0.7
-Requires:       python-iso8601 >= 0.1.9
-Requires:       python-oslo.config >= 3.7.0
+Requires:       python-iso8601 >= 0.1.11
+Requires:       python-oslo.config >= 3.14.0
 Requires:       python-oslo.i18n >= 2.1.0
-Requires:       python-oslo.utils >= 3.5.0
+Requires:       python-oslo.utils >= 3.16.0
 Requires:       python-retrying >= 1.2.3
 Requires:       python-six >= 1.9.0
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 
 %description
-Oslo concurrency library has utilities for safely running multi-thread,
+The oslo.concurrency library has utilities for safely running multi-thread,
 multi-process applications using locking mechanisms and for running
 external processes.
 
 %package doc
-Summary:        Documentation for the Oslo concurrency library
-Group:          Documentation
-
+Summary:        Documentation for OpenStack concurrency library
+Group:          Development/Languages/Python
+BuildRequires:  python-Sphinx
 BuildRequires:  python-oslosphinx >= 2.5.0
-BuildRequires:  python-sphinx
 
 %description doc
-Documentation for the Oslo concurrency library.
+The oslo.concurrency library has utilities for safely running multi-thread,
+multi-process applications using locking mechanisms and for running
+external processes.
+This package contains the documentation.
 
 %prep
-%setup -q -n oslo.concurrency-%{version}
+%setup -q -n %{sname}-%{version}
 
 %build
-%{__python2} setup.py build
+%{py2_build}
 
 # generate html docs
-sphinx-build doc/source html
+%{__python2} setup.py build_sphinx
 # remove the sphinx-build leftovers
-rm -rf html/.{doctrees,buildinfo}
+rm -rf doc/build/html/.{doctrees,buildinfo}
 
 %install
-%{__python2} setup.py install --skip-build --root %{buildroot}
+%{py2_install}
 
 %check
-%if "%_lib" == "lib64"
-testr init
-testr run --parallel
-%endif
+# Test suite fails on 32 bit platforms
+if [ "%_lib" = "lib64" ]; then
+%{__python2} setup.py testr
+fi
 
 %files
-%defattr(-,root,root,-)
-%doc README.rst ChangeLog LICENSE AUTHORS
-%{python2_sitelib}/*
+%license LICENSE
+%doc README.rst ChangeLog
 %_bindir/lockutils-wrapper
+%{python2_sitelib}/oslo_concurrency
+%{python2_sitelib}/*.egg-info
 
 %files doc
-%doc html
+%license LICENSE
+%doc doc/build/html
 
 %changelog

++++++ _service ++++++
--- /var/tmp/diff_new_pack.vEcZCL/_old  2016-09-30 15:35:38.000000000 +0200
+++ /var/tmp/diff_new_pack.vEcZCL/_new  2016-09-30 15:35:38.000000000 +0200
@@ -1,15 +1,13 @@
 <services>
+  <service mode="disabled" name="renderspec">
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/master/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/rpm-packaging/master/global-requirements.txt</param>
+  </service>
   <service mode="disabled" name="download_files">
     <param name="changesgenerate">enable</param>
   </service>
-  <service mode="disabled" name="set_version">
-    <param name="basename">oslo.concurrency</param>
-  </service>
-  <service mode="disabled" name="python_requires">
-  </service>
   <service name="refresh_patches" mode="disabled">
     <param name="changesgenerate">enable</param>
   </service>
-  <service name="python_requires" mode="disabled">
-  </service>
 </services>

++++++ oslo.concurrency-3.7.0.tar.gz -> oslo.concurrency-3.14.0.tar.gz ++++++
++++ 1686 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/AUTHORS new/oslo.concurrency-3.14.0/AUTHORS
--- old/oslo.concurrency-3.7.0/AUTHORS  2016-03-28 05:06:57.000000000 +0200
+++ new/oslo.concurrency-3.14.0/AUTHORS 2016-08-18 19:59:40.000000000 +0200
@@ -22,6 +22,7 @@
 Davanum Srinivas <[email protected]>
 Davanum Srinivas <[email protected]>
 David Ripton <[email protected]>
+Denis Buliga <[email protected]>
 Dina Belova <[email protected]>
 Dirk Mueller <[email protected]>
 Doug Hellmann <[email protected]>
@@ -43,7 +44,9 @@
 Johannes Erdfelt <[email protected]>
 Joshua Harlow <[email protected]>
 Joshua Harlow <[email protected]>
+Joshua Harlow <[email protected]>
 Julien Danjou <[email protected]>
+Kirill Bespalov <[email protected]>
 Mark McLoughlin <[email protected]>
 Matt Riedemann <[email protected]>
 Matthew Treinish <[email protected]>
@@ -57,6 +60,7 @@
 Russell Bryant <[email protected]>
 Salvatore Orlando <[email protected]>
 Sean Dague <[email protected]>
+Sean M. Collins <[email protected]>
 Sergey Kraynev <[email protected]>
 Sergey Lukjanov <[email protected]>
 Shawn Boyette <[email protected]>
@@ -74,3 +78,5 @@
 Zhongyue Luo <[email protected]>
 jichenjc <[email protected]>
 vponomaryov <[email protected]>
+yanheven <[email protected]>
+zhangsong <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/ChangeLog new/oslo.concurrency-3.14.0/ChangeLog
--- old/oslo.concurrency-3.7.0/ChangeLog        2016-03-28 05:06:57.000000000 
+0200
+++ new/oslo.concurrency-3.14.0/ChangeLog       2016-08-18 19:59:40.000000000 
+0200
@@ -1,11 +1,61 @@
 CHANGES
 =======
 
-3.7.0
+3.14.0
+------
+
+* Updated from global requirements
+* Fix external lock tests on Windows
+
+3.13.0
+------
+
+* Updated from global requirements
+* Fix parameters of assertEqual are misplaced
+* Add Python 3.5 classifier and venv
+
+3.12.0
+------
+
+* Updated from global requirements
+* Imported Translations from Zanata
+* Updated from global requirements
+
+3.11.0
+------
+
+* Imported Translations from Zanata
+
+3.10.0
+------
+
+* Imported Translations from Zanata
+* Updated from global requirements
+* Add reno for releasenotes management
+
+3.9.0
 -----
 
+* Add doc/ to pep8 check
+* Remove unused import statement
+* Add timeout option to ssh_execute
+* Fix wrong import example in docstring
+* Trivial: ignore openstack/common in flake8 exclude list
+
+3.8.0
+-----
+
+* Updated from global requirements
+* Imported Translations from Zanata
+* processutils: add support for missing process limits
+* Remove direct dependency on babel
+* Updated from global requirements
+* Updated from global requirements
+* Updated from global requirements
+* Add a few usage examples for lockutils
+* Revert "Use tempfile.tempdir for lock_path if OSLO_LOCK_PATH is not set"
 * Updated from global requirements
-* Update .gitreview for stable/mitaka
+* Use tempfile.tempdir for lock_path if OSLO_LOCK_PATH is not set
 
 3.6.0
 -----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/PKG-INFO new/oslo.concurrency-3.14.0/PKG-INFO
--- old/oslo.concurrency-3.7.0/PKG-INFO 2016-03-28 05:06:57.000000000 +0200
+++ new/oslo.concurrency-3.14.0/PKG-INFO        2016-08-18 19:59:41.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: oslo.concurrency
-Version: 3.7.0
+Version: 3.14.0
 Summary: Oslo Concurrency library
 Home-page: http://launchpad.net/oslo
 Author: OpenStack
@@ -39,3 +39,4 @@
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/doc/source/conf.py 
new/oslo.concurrency-3.14.0/doc/source/conf.py
--- old/oslo.concurrency-3.7.0/doc/source/conf.py       2016-03-28 
05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/doc/source/conf.py      2016-08-18 
19:57:20.000000000 +0200
@@ -14,8 +14,7 @@
 
 import os
 import sys
-import fileinput
-import fnmatch
+
 
 sys.path.insert(0, os.path.abspath('../..'))
 # -- General configuration ----------------------------------------------------
@@ -78,4 +77,4 @@
 ]
 
 # Example configuration for intersphinx: refer to the Python standard library.
-#intersphinx_mapping = {'http://docs.python.org/': None}
+# intersphinx_mapping = {'http://docs.python.org/': None}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/doc/source/usage.rst 
new/oslo.concurrency-3.14.0/doc/source/usage.rst
--- old/oslo.concurrency-3.7.0/doc/source/usage.rst     2016-03-28 
05:04:39.000000000 +0200
+++ new/oslo.concurrency-3.14.0/doc/source/usage.rst    2016-08-18 
19:57:20.000000000 +0200
@@ -6,11 +6,62 @@
 example::
 
     from oslo_concurrency import lockutils
+    from oslo_concurrency import processutils
 
 .. seealso::
 
    * :doc:`API Documentation <api/index>`
 
+Locking a function (local to a process)
+=======================================
+
+To ensure that a function (which is not thread safe) is only used in
+a thread safe manner (typically such type of function should be refactored
+to avoid this problem but if not then the following can help)::
+
+    @lockutils.synchronized('not_thread_safe')
+    def not_thread_safe():
+        pass
+
+Once decorated later callers of this function will be able to call into
+this method and the contract that two threads will **not** enter this
+function at the same time will be upheld. Make sure that the names of the
+locks used are carefully chosen (typically by namespacing them to your
+app so that other apps will not chose the same names).
+
+Locking a function (local to a process as well as across process)
+=================================================================
+
+To ensure that a function (which is not thread safe **or** multi-process
+safe) is only used in a safe manner (typically such type of function should
+be refactored to avoid this problem but if not then the following can help)::
+
+    @lockutils.synchronized('not_thread_process_safe', external=True)
+    def not_thread_process_safe():
+        pass
+
+Once decorated later callers of this function will be able to call into
+this method and the contract that two threads (or any two processes)
+will **not** enter this function at the same time will be upheld. Make
+sure that the names of the locks used are carefully chosen (typically by
+namespacing them to your app so that other apps will not chose the same
+names).
+
+Common ways to prefix/namespace the synchronized decorator
+==========================================================
+
+Since it is **highly** recommended to prefix (or namespace) the usage
+of the synchronized there are a few helpers that can make this much easier
+to achieve.
+
+An example is::
+
+    myapp_synchronized = lockutils.synchronized_with_prefix("myapp")
+
+Then further usage of the ``lockutils.synchronized`` would instead now use
+this decorator created above instead of using ``lockutils.synchronized``
+directly.
+
 Command Line Wrapper
 ====================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/PKG-INFO 
new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/PKG-INFO
--- old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/PKG-INFO       
2016-03-28 05:06:57.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/PKG-INFO      
2016-08-18 19:59:40.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: oslo.concurrency
-Version: 3.7.0
+Version: 3.14.0
 Summary: Oslo Concurrency library
 Home-page: http://launchpad.net/oslo
 Author: OpenStack
@@ -39,3 +39,4 @@
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/SOURCES.txt 
new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/SOURCES.txt
--- old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/SOURCES.txt    
2016-03-28 05:06:57.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/SOURCES.txt   
2016-08-18 19:59:41.000000000 +0200
@@ -40,11 +40,12 @@
 oslo_concurrency/opts.py
 oslo_concurrency/prlimit.py
 oslo_concurrency/processutils.py
+oslo_concurrency/version.py
 oslo_concurrency/watchdog.py
 oslo_concurrency/fixture/__init__.py
 oslo_concurrency/fixture/lockutils.py
-oslo_concurrency/locale/oslo_concurrency-log-info.pot
-oslo_concurrency/locale/oslo_concurrency.pot
+oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency-log-info.po
+oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency.po
 oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency-log-info.po
 oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po
 oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency-log-info.po
@@ -55,4 +56,11 @@
 oslo_concurrency/tests/unit/__init__.py
 oslo_concurrency/tests/unit/test_lockutils.py
 oslo_concurrency/tests/unit/test_lockutils_eventlet.py
-oslo_concurrency/tests/unit/test_processutils.py
\ No newline at end of file
+oslo_concurrency/tests/unit/test_processutils.py
+releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
+releasenotes/source/conf.py
+releasenotes/source/index.rst
+releasenotes/source/unreleased.rst
+releasenotes/source/_static/.placeholder
+releasenotes/source/_templates/.placeholder
+releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/pbr.json 
new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/pbr.json
--- old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/pbr.json       
2016-03-28 05:06:57.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/pbr.json      
2016-08-18 19:59:40.000000000 +0200
@@ -1 +1 @@
-{"git_version": "75c5ba3", "is_release": true}
\ No newline at end of file
+{"git_version": "ebd3921", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/requires.txt 
new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/requires.txt
--- old/oslo.concurrency-3.7.0/oslo.concurrency.egg-info/requires.txt   
2016-03-28 05:06:57.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo.concurrency.egg-info/requires.txt  
2016-08-18 19:59:40.000000000 +0200
@@ -1,12 +1,9 @@
 pbr>=1.6
-Babel>=1.3
-iso8601>=0.1.9
-oslo.config>=3.7.0
+enum34
+iso8601>=0.1.11
+oslo.config>=3.14.0
 oslo.i18n>=2.1.0
-oslo.utils>=3.5.0
+oslo.utils>=3.16.0
 six>=1.9.0
 fasteners>=0.7
 retrying!=1.3.0,>=1.2.3
-
-[:(python_version=='2.7' or python_version=='2.6' or python_version=='3.3')]
-enum34
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency-log-info.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency-log-info.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency-log-info.po
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency-log-info.po
     2016-08-18 19:57:20.000000000 +0200
@@ -0,0 +1,19 @@
+# Andreas Jaeger <[email protected]>, 2016. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: oslo.concurrency 3.9.1.dev2\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-06-04 05:27+0000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2016-06-02 07:05+0000\n"
+"Last-Translator: Andreas Jaeger <[email protected]>\n"
+"Language-Team: German\n"
+"Language: de\n"
+"X-Generator: Zanata 3.7.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#, python-format
+msgid "Failed to remove file %(file)s"
+msgstr "Fehler beim Entfernen der Datei %(file)s"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency.po
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/de/LC_MESSAGES/oslo_concurrency.po
      2016-08-18 19:57:20.000000000 +0200
@@ -0,0 +1,101 @@
+# Translations template for oslo.concurrency.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the oslo.concurrency
+# project.
+#
+# Translators:
+# Christian Berendt <[email protected]>, 2014
+# Ettore Atalan <[email protected]>, 2014
+# Andreas Jaeger <[email protected]>, 2016. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: oslo.concurrency 3.9.1.dev3\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-06-07 17:48+0000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2016-06-08 06:36+0000\n"
+"Last-Translator: Andreas Jaeger <[email protected]>\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Generated-By: Babel 2.0\n"
+"X-Generator: Zanata 3.7.3\n"
+"Language-Team: German\n"
+
+#, python-format
+msgid ""
+"%(desc)r\n"
+"command: %(cmd)r\n"
+"exit code: %(code)r\n"
+"stdout: %(stdout)r\n"
+"stderr: %(stderr)r"
+msgstr ""
+"%(desc)r\n"
+"Kommando: %(cmd)r\n"
+"Abschlusscode: %(code)r\n"
+"Stdout: %(stdout)r\n"
+"Stderr: %(stderr)r"
+
+#, python-format
+msgid ""
+"%(description)s\n"
+"Command: %(cmd)s\n"
+"Exit code: %(exit_code)s\n"
+"Stdout: %(stdout)r\n"
+"Stderr: %(stderr)r"
+msgstr ""
+"%(description)s\n"
+"Befehl: %(cmd)s.\n"
+"Beendigungscode: %(exit_code)s.\n"
+"Standardausgabe: %(stdout)r\n"
+"Standardfehler: %(stderr)r"
+
+#, python-format
+msgid "%r failed. Not Retrying."
+msgstr "%r fehlgeschlagen. Wird nicht wiederholt."
+
+#, python-format
+msgid "%r failed. Retrying."
+msgstr "%r fehlgeschlagen. Neuversuch."
+
+msgid ""
+"Calling lockutils directly is no longer supported.  Please use the lockutils-"
+"wrapper console script instead."
+msgstr ""
+"Ein direkter Aufruf von lockutils wird nicht mehr unterstützt. Verwenden Sie "
+"stattdessen das lockutils-wrapper Konsolescript."
+
+msgid "Command requested root, but did not specify a root helper."
+msgstr "Kommando braucht root, es wurde aber kein root helper spezifiziert."
+
+msgid "Environment not supported over SSH"
+msgstr "Umgebung wird nicht über SSH unterstützt"
+
+#, python-format
+msgid ""
+"Got an OSError\n"
+"command: %(cmd)r\n"
+"errno: %(errno)r"
+msgstr ""
+"OS Fehler aufgetreten:\n"
+"Kommando: %(cmd)r\n"
+"Fehlernummer: %(errno)r"
+
+#, python-format
+msgid "Got invalid arg log_errors: %r"
+msgstr "Ungültiges Argument für log_errors: %r"
+
+#, python-format
+msgid "Got unknown keyword args: %r"
+msgstr "Ungültige Schlüsswelwortargumente: %r"
+
+#, python-format
+msgid "Running cmd (subprocess): %s"
+msgstr "Führe Kommando (subprocess) aus: %s"
+
+msgid "Unexpected error while running command."
+msgstr "Unerwarteter Fehler bei der Ausführung des Kommandos."
+
+msgid "process_input not supported over SSH"
+msgstr "process_input wird nicht über SSH unterstützt"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency-log-info.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency-log-info.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency-log-info.po
   2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency-log-info.po
  2016-08-18 19:57:20.000000000 +0200
@@ -5,12 +5,12 @@
 #
 # Translators:
 # Andi Chandler <[email protected]>, 2014
-# OpenStack Infra <[email protected]>, 2015. #zanata
+# Andreas Jaeger <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.concurrency 3.2.1.dev3\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-13 08:54+0000\n"
+"Project-Id-Version: oslo.concurrency 3.6.1.dev10\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-04-19 12:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po
    2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/en_GB/LC_MESSAGES/oslo_concurrency.po
   2016-08-18 19:57:20.000000000 +0200
@@ -5,12 +5,12 @@
 #
 # Translators:
 # Andi Chandler <[email protected]>, 2014-2015
-# OpenStack Infra <[email protected]>, 2015. #zanata
+# Andreas Jaeger <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.concurrency 3.2.1.dev3\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-13 08:54+0000\n"
+"Project-Id-Version: oslo.concurrency 3.6.1.dev10\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-04-19 12:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency-log-info.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency-log-info.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency-log-info.po
      2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency-log-info.po
     2016-08-18 19:57:20.000000000 +0200
@@ -5,12 +5,12 @@
 #
 # Translators:
 # Adriana Chisco Landazábal <[email protected]>, 2015
-# OpenStack Infra <[email protected]>, 2015. #zanata
+# Andreas Jaeger <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.concurrency 3.2.1.dev3\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-13 08:54+0000\n"
+"Project-Id-Version: oslo.concurrency 3.6.1.dev10\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-04-19 12:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency.po
       2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/es/LC_MESSAGES/oslo_concurrency.po
      2016-08-18 19:57:20.000000000 +0200
@@ -5,12 +5,12 @@
 #
 # Translators:
 # Adriana Chisco Landazábal <[email protected]>, 2015
-# OpenStack Infra <[email protected]>, 2015. #zanata
+# Andreas Jaeger <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.concurrency 3.2.1.dev3\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-13 08:54+0000\n"
+"Project-Id-Version: oslo.concurrency 3.6.1.dev10\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-04-19 12:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency-log-info.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency-log-info.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency-log-info.po
      2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency-log-info.po
     2016-08-18 19:57:20.000000000 +0200
@@ -5,12 +5,12 @@
 #
 # Translators:
 # Maxime COQUEREL <[email protected]>, 2015
-# OpenStack Infra <[email protected]>, 2015. #zanata
+# Andreas Jaeger <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.concurrency 3.2.1.dev3\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-13 08:54+0000\n"
+"Project-Id-Version: oslo.concurrency 3.6.1.dev10\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-04-19 12:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency.po
 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency.po
--- 
old/oslo.concurrency-3.7.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency.po
       2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/locale/fr/LC_MESSAGES/oslo_concurrency.po
      2016-08-18 19:57:20.000000000 +0200
@@ -5,12 +5,12 @@
 #
 # Translators:
 # Maxime COQUEREL <[email protected]>, 2015
-# OpenStack Infra <[email protected]>, 2015. #zanata
+# Andreas Jaeger <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.concurrency 3.2.1.dev3\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-13 08:54+0000\n"
+"Project-Id-Version: oslo.concurrency 3.6.1.dev10\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n";
+"POT-Creation-Date: 2016-04-19 12:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/lockutils.py 
new/oslo.concurrency-3.14.0/oslo_concurrency/lockutils.py
--- old/oslo.concurrency-3.7.0/oslo_concurrency/lockutils.py    2016-03-28 
05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo_concurrency/lockutils.py   2016-08-18 
19:57:20.000000000 +0200
@@ -291,7 +291,7 @@
     Redefine @synchronized in each project like so::
 
         (in nova/utils.py)
-        from nova.openstack.common import lockutils
+        from oslo_concurrency import lockutils
 
         synchronized = lockutils.synchronized_with_prefix('nova-')
 
@@ -316,7 +316,7 @@
     Redefine remove_external_lock_file_with_prefix in each project like so::
 
         (in nova/utils.py)
-        from nova.openstack.common import lockutils
+        from oslo_concurrency import lockutils
 
         synchronized = lockutils.synchronized_with_prefix('nova-')
         synchronized_remove = lockutils.remove_external_lock_file_with_prefix(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/prlimit.py 
new/oslo.concurrency-3.14.0/oslo_concurrency/prlimit.py
--- old/oslo.concurrency-3.7.0/oslo_concurrency/prlimit.py      2016-03-28 
05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo_concurrency/prlimit.py     2016-08-18 
19:57:20.000000000 +0200
@@ -26,8 +26,15 @@
 RESOURCES = (
     # argparse argument => resource
     ('as', resource.RLIMIT_AS),
+    ('core', resource.RLIMIT_CORE),
+    ('cpu', resource.RLIMIT_CPU),
+    ('data', resource.RLIMIT_DATA),
+    ('fsize', resource.RLIMIT_FSIZE),
+    ('memlock', resource.RLIMIT_MEMLOCK),
     ('nofile', resource.RLIMIT_NOFILE),
+    ('nproc', resource.RLIMIT_NPROC),
     ('rss', resource.RLIMIT_RSS),
+    ('stack', resource.RLIMIT_STACK),
 )
 
 
@@ -35,10 +42,24 @@
     parser = argparse.ArgumentParser(description='prlimit', prog=USAGE_PROGRAM)
     parser.add_argument('--as', type=int,
                         help='Address space limit in bytes')
+    parser.add_argument('--core', type=int,
+                        help='Core file size limit in bytes')
+    parser.add_argument('--cpu', type=int,
+                        help='CPU time limit in seconds')
+    parser.add_argument('--data', type=int,
+                        help='Data size limit in bytes')
+    parser.add_argument('--fsize', type=int,
+                        help='File size limit in bytes')
+    parser.add_argument('--memlock', type=int,
+                        help='Locked memory limit in bytes')
     parser.add_argument('--nofile', type=int,
                         help='Maximum number of open files')
+    parser.add_argument('--nproc', type=int,
+                        help='Maximum number of processes')
     parser.add_argument('--rss', type=int,
                         help='Maximum Resident Set Size (RSS) in bytes')
+    parser.add_argument('--stack', type=int,
+                        help='Stack size limit in bytes')
     parser.add_argument('program',
                         help='Program (absolute path)')
     parser.add_argument('program_args', metavar="arg", nargs='...',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/processutils.py 
new/oslo.concurrency-3.14.0/oslo_concurrency/processutils.py
--- old/oslo.concurrency-3.7.0/oslo_concurrency/processutils.py 2016-03-28 
05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo_concurrency/processutils.py        
2016-08-18 19:57:20.000000000 +0200
@@ -134,16 +134,36 @@
     Attributes:
 
     * address_space: Address space limit in bytes
-    * number_files: Maximum number of open files.
+    * core_file_size: Core file size limit in bytes
+    * cpu_time: CPU time limit in seconds
+    * data_size: Data size limit in bytes
+    * file_size: File size limit in bytes
+    * memory_locked: Locked memory limit in bytes
+    * number_files: Maximum number of open files
+    * number_processes: Maximum number of processes
     * resident_set_size: Maximum Resident Set Size (RSS) in bytes
+    * stack_size: Stack size limit in bytes
 
     This object can be used for the *prlimit* parameter of :func:`execute`.
     """
 
+    _LIMITS = {
+        "address_space": "--as",
+        "core_file_size": "--core",
+        "cpu_time": "--cpu",
+        "data_size": "--data",
+        "file_size": "--fsize",
+        "memory_locked": "--memlock",
+        "number_files": "--nofile",
+        "number_processes": "--nproc",
+        "resident_set_size": "--rss",
+        "stack_size": "--stack",
+    }
+
     def __init__(self, **kw):
-        self.address_space = kw.pop('address_space', None)
-        self.number_files = kw.pop('number_files', None)
-        self.resident_set_size = kw.pop('resident_set_size', None)
+        for limit in self._LIMITS.keys():
+            setattr(self, limit, kw.pop(limit, None))
+
         if kw:
             raise ValueError("invalid limits: %s"
                              % ', '.join(sorted(kw.keys())))
@@ -151,12 +171,10 @@
     def prlimit_args(self):
         """Create a list of arguments for the prlimit command line."""
         args = []
-        if self.address_space:
-            args.append('--as=%s' % self.address_space)
-        if self.number_files:
-            args.append('--nofile=%s' % self.number_files)
-        if self.resident_set_size:
-            args.append('--rss=%s' % self.resident_set_size)
+        for limit in self._LIMITS.keys():
+            val = getattr(self, limit)
+            if val is not None:
+                args.append("%s=%s" % (self._LIMITS[limit], val))
         return args
 
 
@@ -448,7 +466,7 @@
 
 def ssh_execute(ssh, cmd, process_input=None,
                 addl_env=None, check_exit_code=True,
-                binary=False):
+                binary=False, timeout=None):
     """Run a command through SSH.
 
     .. versionchanged:: 1.9
@@ -463,7 +481,8 @@
         # This is (probably) fixable if we need it...
         raise InvalidArgumentError(_('process_input not supported over SSH'))
 
-    stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd)
+    stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(
+        cmd, timeout=timeout)
     channel = stdout_stream.channel
 
     # NOTE(justinsb): This seems suspicious...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/tests/unit/test_lockutils.py 
new/oslo.concurrency-3.14.0/oslo_concurrency/tests/unit/test_lockutils.py
--- old/oslo.concurrency-3.7.0/oslo_concurrency/tests/unit/test_lockutils.py    
2016-03-28 05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/oslo_concurrency/tests/unit/test_lockutils.py   
2016-08-18 19:57:21.000000000 +0200
@@ -13,7 +13,7 @@
 #    under the License.
 
 import collections
-import fcntl
+import multiprocessing
 import os
 import shutil
 import signal
@@ -31,6 +31,50 @@
 from oslo_concurrency import lockutils
 from oslo_config import fixture as config
 
+if sys.platform == 'win32':
+    import msvcrt
+else:
+    import fcntl
+
+
+def lock_file(handle):
+    if sys.platform == 'win32':
+        msvcrt.locking(handle.fileno(), msvcrt.LK_NBLCK, 1)
+    else:
+        fcntl.flock(handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
+
+
+def unlock_file(handle):
+    if sys.platform == 'win32':
+        msvcrt.locking(handle.fileno(), msvcrt.LK_UNLCK, 1)
+    else:
+        fcntl.flock(handle, fcntl.LOCK_UN)
+
+
+def lock_files(handles_dir, out_queue):
+    with lockutils.lock('external', 'test-', external=True):
+        # Open some files we can use for locking
+        handles = []
+        for n in range(50):
+            path = os.path.join(handles_dir, ('file-%s' % n))
+            handles.append(open(path, 'w'))
+
+        # Loop over all the handles and try locking the file
+        # without blocking, keep a count of how many files we
+        # were able to lock and then unlock. If the lock fails
+        # we get an IOError and bail out with bad exit code
+        count = 0
+        for handle in handles:
+            try:
+                lock_file(handle)
+                count += 1
+                unlock_file(handle)
+            except IOError:
+                os._exit(2)
+            finally:
+                handle.close()
+        return out_queue.put(count)
+
 
 class LockTestCase(test_base.BaseTestCase):
 
@@ -44,9 +88,9 @@
             """Bar."""
             pass
 
-        self.assertEqual(foo.__doc__, 'Bar.', "Wrapped function's docstring "
+        self.assertEqual('Bar.', foo.__doc__, "Wrapped function's docstring "
                                               "got lost")
-        self.assertEqual(foo.__name__, 'foo', "Wrapped function's name "
+        self.assertEqual('foo', foo.__name__, "Wrapped function's name "
                                               "got mangled")
 
     def test_lock_internally_different_collections(self):
@@ -92,7 +136,7 @@
         for thread in threads:
             thread.join()
 
-        self.assertEqual(len(seen_threads), 100)
+        self.assertEqual(100, len(seen_threads))
         # Looking at the seen threads, split it into chunks of 10, and verify
         # that the last 9 match the first in each chunk.
         for i in range(10):
@@ -126,51 +170,20 @@
 
     def _do_test_lock_externally(self):
         """We can lock across multiple processes."""
-
-        def lock_files(handles_dir):
-
-            with lockutils.lock('external', 'test-', external=True):
-                # Open some files we can use for locking
-                handles = []
-                for n in range(50):
-                    path = os.path.join(handles_dir, ('file-%s' % n))
-                    handles.append(open(path, 'w'))
-
-                # Loop over all the handles and try locking the file
-                # without blocking, keep a count of how many files we
-                # were able to lock and then unlock. If the lock fails
-                # we get an IOError and bail out with bad exit code
-                count = 0
-                for handle in handles:
-                    try:
-                        fcntl.flock(handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
-                        count += 1
-                        fcntl.flock(handle, fcntl.LOCK_UN)
-                    except IOError:
-                        os._exit(2)
-                    finally:
-                        handle.close()
-
-                # Check if we were able to open all files
-                self.assertEqual(50, count)
-
         handles_dir = tempfile.mkdtemp()
         try:
             children = []
             for n in range(50):
-                pid = os.fork()
-                if pid:
-                    children.append(pid)
-                else:
-                    try:
-                        lock_files(handles_dir)
-                    finally:
-                        os._exit(0)
-
-            for child in children:
-                (pid, status) = os.waitpid(child, 0)
-                if pid:
-                    self.assertEqual(0, status)
+                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)
@@ -336,7 +349,7 @@
         conf = cfg.ConfigOpts()
         conf(['--config-file', paths[0]])
         conf.register_opts(lockutils._opts, 'oslo_concurrency')
-        self.assertEqual(conf.oslo_concurrency.lock_path, 'foo')
+        self.assertEqual('foo', conf.oslo_concurrency.lock_path)
         self.assertTrue(conf.oslo_concurrency.disable_process_locking)
 
 
@@ -436,7 +449,7 @@
         thread1.start()
         thread1.join()
         thread.join()
-        self.assertEqual(call_list, ['other', 'other', 'main', 'main'])
+        self.assertEqual(['other', 'other', 'main', 'main'], call_list)
 
     def test_non_destructive(self):
         lock_file = os.path.join(self.lock_dir, 'not-destroyed')
@@ -445,7 +458,7 @@
         with lockutils.lock('not-destroyed', external=True,
                             lock_path=self.lock_dir):
             with open(lock_file) as f:
-                self.assertEqual(f.read(), 'test')
+                self.assertEqual('test', f.read())
 
 
 class LockutilsModuleTestCase(test_base.BaseTestCase):
@@ -470,7 +483,7 @@
         ])
         argv = ['', sys.executable, '-c', script]
         retval = lockutils._lock_wrapper(argv)
-        self.assertEqual(retval, 0, "Bad OSLO_LOCK_PATH has been set")
+        self.assertEqual(0, retval, "Bad OSLO_LOCK_PATH has been set")
 
     def test_return_value_maintained(self):
         script = '\n'.join([
@@ -479,7 +492,7 @@
         ])
         argv = ['', sys.executable, '-c', script]
         retval = lockutils._lock_wrapper(argv)
-        self.assertEqual(retval, 1)
+        self.assertEqual(1, retval)
 
     def test_direct_call_explodes(self):
         cmd = [sys.executable, '-m', 'oslo_concurrency.lockutils']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/tests/unit/test_processutils.py 
new/oslo.concurrency-3.14.0/oslo_concurrency/tests/unit/test_processutils.py
--- old/oslo.concurrency-3.7.0/oslo_concurrency/tests/unit/test_processutils.py 
2016-03-28 05:04:37.000000000 +0200
+++ 
new/oslo.concurrency-3.14.0/oslo_concurrency/tests/unit/test_processutils.py    
    2016-08-18 19:57:20.000000000 +0200
@@ -21,6 +21,7 @@
 import os
 import pickle
 import resource
+import socket
 import stat
 import subprocess
 import sys
@@ -206,11 +207,12 @@
             fp = open(tmpfilename2, 'r')
             runs = fp.read()
             fp.close()
-            self.assertNotEqual(runs.strip(), 'failure', 'stdin did not '
-                                                         'always get passed '
-                                                         'correctly')
+            self.assertNotEqual('failure', 'stdin did not '
+                                           'always get passed '
+                                           'correctly',
+                                runs.strip())
             runs = int(runs.strip())
-            self.assertEqual(runs, 10, 'Ran %d times instead of 10.' % (runs,))
+            self.assertEqual(10, runs, 'Ran %d times instead of 10.' % (runs,))
         finally:
             os.unlink(tmpfilename)
             os.unlink(tmpfilename2)
@@ -397,9 +399,10 @@
         self.assertIsInstance(err.stderr, six.text_type)
         self.assertIn('onstdout --password="***"', err.stdout)
         self.assertIn('onstderr --password="***"', err.stderr)
-        self.assertEqual(err.cmd, ' '.join([tmpfilename,
-                                            'password="***"',
-                                            'something']))
+        self.assertEqual(' '.join([tmpfilename,
+                                   'password="***"',
+                                   'something']),
+                         err.cmd)
         self.assertNotIn('secret', str(err))
 
     def execute_undecodable_bytes(self, out_bytes, err_bytes,
@@ -427,8 +430,8 @@
         out, err = self.execute_undecodable_bytes(out_bytes, err_bytes,
                                                   binary=binary)
         if six.PY3 and not binary:
-            self.assertEqual(out, os.fsdecode(out_bytes))
-            self.assertEqual(err, os.fsdecode(err_bytes))
+            self.assertEqual(os.fsdecode(out_bytes), out)
+            self.assertEqual(os.fsdecode(err_bytes), err)
         else:
             self.assertEqual(out, out_bytes)
             self.assertEqual(err, err_bytes)
@@ -454,13 +457,13 @@
         if six.PY3:
             # On Python 3, stdout and stderr attributes of
             # ProcessExecutionError must always be Unicode
-            self.assertEqual(out, os.fsdecode(out_bytes))
-            self.assertEqual(err, os.fsdecode(err_bytes))
+            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, out_bytes)
-            self.assertEqual(err, err_bytes)
+            self.assertEqual(out_bytes, out)
+            self.assertEqual(err_bytes, err)
 
     def test_undecodable_bytes_error(self):
         self.check_undecodable_bytes_error(False)
@@ -481,7 +484,7 @@
         self.assertEqual(42, exc.exit_code)
         self.assertEqual('my cmd', exc.cmd)
         self.assertEqual('my description', exc.description)
-        self.assertEqual(exc_message, str(exc))
+        self.assertEqual(str(exc), exc_message)
 
 
 class ProcessExecutionErrorLoggingTest(test_base.BaseTestCase):
@@ -599,7 +602,9 @@
         self.out = out
         self.err = err
 
-    def exec_command(self, cmd):
+    def exec_command(self, cmd, timeout=None):
+        if timeout:
+            raise socket.timeout()
         stdout = FakeSshStream(self.out)
         stdout.setup_channel(self.rc)
         return (six.BytesIO(),
@@ -618,6 +623,12 @@
                           processutils.ssh_execute,
                           None, 'ls', process_input='important')
 
+    def test_timeout_error(self):
+        self.assertRaises(socket.timeout,
+                          processutils.ssh_execute,
+                          FakeSshConnection(0), 'ls',
+                          timeout=10)
+
     def test_works(self):
         out, err = processutils.ssh_execute(FakeSshConnection(0), 'ls')
         self.assertEqual('stdout', out)
@@ -640,11 +651,11 @@
 
         out, err = processutils.ssh_execute(conn, 'ls', binary=binary)
         if six.PY3 and not binary:
-            self.assertEqual(out, os.fsdecode(out_bytes))
-            self.assertEqual(err, os.fsdecode(err_bytes))
+            self.assertEqual(os.fsdecode(out_bytes), out)
+            self.assertEqual(os.fsdecode(err_bytes), err)
         else:
-            self.assertEqual(out, out_bytes)
-            self.assertEqual(err, err_bytes)
+            self.assertEqual(out_bytes, out)
+            self.assertEqual(err_bytes, err)
 
     def test_undecodable_bytes(self):
         self.check_undecodable_bytes(False)
@@ -670,13 +681,13 @@
         if six.PY3:
             # On Python 3, stdout and stderr attributes of
             # ProcessExecutionError must always be Unicode
-            self.assertEqual(out, os.fsdecode(out_bytes))
-            self.assertEqual(err, os.fsdecode(err_bytes))
+            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, out_bytes)
-            self.assertEqual(err, err_bytes)
+            self.assertEqual(out_bytes, out)
+            self.assertEqual(err_bytes, err)
 
     def test_undecodable_bytes_error(self):
         self.check_undecodable_bytes_error(False)
@@ -711,9 +722,9 @@
                                     check_exit_code=check)
 
             self.assertEqual(rc, err.exit_code)
-            self.assertEqual(err.stdout, 'password="***"')
-            self.assertEqual(err.stderr, 'password="***"')
-            self.assertEqual(err.cmd, 'ls --password="***"')
+            self.assertEqual('password="***"', err.stdout)
+            self.assertEqual('password="***"', err.stderr)
+            self.assertEqual('ls --password="***"', err.cmd)
             self.assertNotIn('secret', str(err))
             self.assertNotIn('foobar', str(err))
         else:
@@ -752,7 +763,7 @@
         # Create a new soft limit for a resource, lower than the current
         # soft limit.
         soft_limit, hard_limit = resource.getrlimit(res)
-        if soft_limit < 0:
+        if soft_limit <= 0:
             soft_limit = default_limit
         else:
             soft_limit -= substract
@@ -775,7 +786,7 @@
         prlimit = self.limit_address_space()
         stdout, stderr = processutils.execute(*self.SIMPLE_PROGRAM,
                                               prlimit=prlimit)
-        self.assertEqual(stdout.rstrip(), '')
+        self.assertEqual('', stdout.rstrip())
         self.assertEqual(stderr.rstrip(), '')
 
     def check_limit(self, prlimit, resource, value):
@@ -784,12 +795,37 @@
         args = [sys.executable, '-c', code]
         stdout, stderr = processutils.execute(*args, prlimit=prlimit)
         expected = (value, value)
-        self.assertEqual(stdout.rstrip(), str(expected))
+        self.assertEqual(str(expected), stdout.rstrip())
 
     def test_address_space(self):
         prlimit = self.limit_address_space()
         self.check_limit(prlimit, 'RLIMIT_AS', prlimit.address_space)
 
+    def test_core_size(self):
+        size = self.soft_limit(resource.RLIMIT_CORE, 1, 1024)
+        prlimit = processutils.ProcessLimits(core_file_size=size)
+        self.check_limit(prlimit, 'RLIMIT_CORE', prlimit.core_file_size)
+
+    def test_cpu_time(self):
+        time = self.soft_limit(resource.RLIMIT_CPU, 1, 1024)
+        prlimit = processutils.ProcessLimits(cpu_time=time)
+        self.check_limit(prlimit, 'RLIMIT_CPU', prlimit.cpu_time)
+
+    def test_data_size(self):
+        max_memory = self.memory_limit(resource.RLIMIT_DATA)
+        prlimit = processutils.ProcessLimits(data_size=max_memory)
+        self.check_limit(prlimit, 'RLIMIT_DATA', max_memory)
+
+    def test_file_size(self):
+        size = self.soft_limit(resource.RLIMIT_FSIZE, 1, 1024)
+        prlimit = processutils.ProcessLimits(file_size=size)
+        self.check_limit(prlimit, 'RLIMIT_FSIZE', prlimit.file_size)
+
+    def test_memory_locked(self):
+        max_memory = self.memory_limit(resource.RLIMIT_MEMLOCK)
+        prlimit = processutils.ProcessLimits(memory_locked=max_memory)
+        self.check_limit(prlimit, 'RLIMIT_MEMLOCK', max_memory)
+
     def test_resident_set_size(self):
         max_memory = self.memory_limit(resource.RLIMIT_RSS)
         prlimit = processutils.ProcessLimits(resident_set_size=max_memory)
@@ -800,6 +836,16 @@
         prlimit = processutils.ProcessLimits(number_files=nfiles)
         self.check_limit(prlimit, 'RLIMIT_NOFILE', nfiles)
 
+    def test_number_processes(self):
+        nprocs = self.soft_limit(resource.RLIMIT_NPROC, 1, 65535)
+        prlimit = processutils.ProcessLimits(number_processes=nprocs)
+        self.check_limit(prlimit, 'RLIMIT_NPROC', nprocs)
+
+    def test_stack_size(self):
+        max_memory = self.memory_limit(resource.RLIMIT_STACK)
+        prlimit = processutils.ProcessLimits(stack_size=max_memory)
+        self.check_limit(prlimit, 'RLIMIT_STACK', max_memory)
+
     def test_unsupported_prlimit(self):
         self.assertRaises(ValueError, processutils.ProcessLimits, xxx=33)
 
@@ -818,8 +864,8 @@
         try:
             processutils.execute(*args, prlimit=prlimit)
         except processutils.ProcessExecutionError as exc:
-            self.assertEqual(exc.exit_code, 1)
-            self.assertEqual(exc.stdout, '')
+            self.assertEqual(1, exc.exit_code)
+            self.assertEqual('', exc.stdout)
             expected = ('%s -m oslo_concurrency.prlimit: '
                         'failed to execute /missing_path/dont_exist/program: '
                         % os.path.basename(sys.executable))
@@ -841,8 +887,8 @@
         try:
             processutils.execute(*args, prlimit=prlimit)
         except processutils.ProcessExecutionError as exc:
-            self.assertEqual(exc.exit_code, 1)
-            self.assertEqual(exc.stdout, '')
+            self.assertEqual(1, exc.exit_code)
+            self.assertEqual('', exc.stdout)
             expected = ('%s -m oslo_concurrency.prlimit: '
                         'failed to set the AS resource limit: '
                         % os.path.basename(sys.executable))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/oslo_concurrency/version.py 
new/oslo.concurrency-3.14.0/oslo_concurrency/version.py
--- old/oslo.concurrency-3.7.0/oslo_concurrency/version.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.concurrency-3.14.0/oslo_concurrency/version.py     2016-08-18 
19:57:20.000000000 +0200
@@ -0,0 +1,18 @@
+#    Copyright 2016 OpenStack Foundation
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+
+import pbr.version
+
+version_info = pbr.version.VersionInfo('oslo_concurrency')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml 
new/oslo.concurrency-3.14.0/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
--- 
old/oslo.concurrency-3.7.0/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.concurrency-3.14.0/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml   
    2016-08-18 19:57:20.000000000 +0200
@@ -0,0 +1,3 @@
+---
+other:
+  - Switch to reno for managing release notes.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/releasenotes/source/conf.py 
new/oslo.concurrency-3.14.0/releasenotes/source/conf.py
--- old/oslo.concurrency-3.7.0/releasenotes/source/conf.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.concurrency-3.14.0/releasenotes/source/conf.py     2016-08-18 
19:57:20.000000000 +0200
@@ -0,0 +1,273 @@
+# -*- coding: utf-8 -*-
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+# sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'oslosphinx',
+    'reno.sphinxext',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'oslo.concurrency Release Notes'
+copyright = u'2016, oslo.concurrency Developers'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+from oslo_concurrency.version import version_info as oslo_concurrency_version
+# The full version, including alpha/beta/rc tags.
+release = oslo_concurrency_version.version_string_with_vcs()
+# The short X.Y version.
+version = oslo_concurrency_version.canonical_version_string()
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = []
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+# add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+# keep_warnings = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+# html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+# html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+# html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_domain_indices = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+# html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+# html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+# html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'oslo.concurrencyReleaseNotesDoc'
+
+
+# -- 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]).
+latex_documents = [
+    ('index', 'oslo.concurrencyReleaseNotes.tex',
+     u'oslo.concurrency Release Notes Documentation',
+     u'oslo.concurrency Developers', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+# latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'oslo.concurrencyReleaseNotes',
+     u'oslo.concurrency Release Notes Documentation',
+     [u'oslo.concurrency Developers'], 1)
+]
+
+# If true, show URL addresses after external links.
+# man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    ('index', 'oslo.concurrencyReleaseNotes',
+     u'oslo.concurrency Release Notes Documentation',
+     u'oslo.concurrency Developers', 'oslo.concurrencyReleaseNotes',
+     'One line description of project.',
+     'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+# texinfo_appendices = []
+
+# If false, no module index is generated.
+# texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+# texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+# texinfo_no_detailmenu = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/releasenotes/source/index.rst 
new/oslo.concurrency-3.14.0/releasenotes/source/index.rst
--- old/oslo.concurrency-3.7.0/releasenotes/source/index.rst    1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.concurrency-3.14.0/releasenotes/source/index.rst   2016-08-18 
19:57:20.000000000 +0200
@@ -0,0 +1,8 @@
+===============================
+ oslo.concurrency Release Notes
+===============================
+
+ .. toctree::
+    :maxdepth: 1
+
+    unreleased
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
 
new/oslo.concurrency-3.14.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
--- 
old/oslo.concurrency-3.7.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.concurrency-3.14.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
    2016-08-18 19:57:20.000000000 +0200
@@ -0,0 +1,30 @@
+# Andi Chandler <[email protected]>, 2016. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: oslo.concurrency Release Notes 3.11.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-01 03:44+0000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2016-06-28 05:54+0000\n"
+"Last-Translator: Andi Chandler <[email protected]>\n"
+"Language-Team: English (United Kingdom)\n"
+"Language: en-GB\n"
+"X-Generator: Zanata 3.7.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+msgid "3.10.0"
+msgstr "3.10.0"
+
+msgid "Other Notes"
+msgstr "Other Notes"
+
+msgid "Switch to reno for managing release notes."
+msgstr "Switch to reno for managing release notes."
+
+msgid "Unreleased Release Notes"
+msgstr "Unreleased Release Notes"
+
+msgid "oslo.concurrency Release Notes"
+msgstr "oslo.concurrency Release Notes"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/releasenotes/source/unreleased.rst 
new/oslo.concurrency-3.14.0/releasenotes/source/unreleased.rst
--- old/oslo.concurrency-3.7.0/releasenotes/source/unreleased.rst       
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.concurrency-3.14.0/releasenotes/source/unreleased.rst      
2016-08-18 19:57:20.000000000 +0200
@@ -0,0 +1,5 @@
+==========================
+ Unreleased Release Notes
+==========================
+
+.. release-notes::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/requirements.txt 
new/oslo.concurrency-3.14.0/requirements.txt
--- old/oslo.concurrency-3.7.0/requirements.txt 2016-03-28 05:04:37.000000000 
+0200
+++ new/oslo.concurrency-3.14.0/requirements.txt        2016-08-18 
19:57:21.000000000 +0200
@@ -3,12 +3,11 @@
 # process, which may cause wedges in the gate later.
 
 pbr>=1.6 # Apache-2.0
-Babel>=1.3 # BSD
 enum34;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' 
# BSD
-iso8601>=0.1.9 # MIT
-oslo.config>=3.7.0 # Apache-2.0
+iso8601>=0.1.11 # MIT
+oslo.config>=3.14.0 # Apache-2.0
 oslo.i18n>=2.1.0 # Apache-2.0
-oslo.utils>=3.5.0 # Apache-2.0
+oslo.utils>=3.16.0 # Apache-2.0
 six>=1.9.0 # MIT
 fasteners>=0.7 # Apache-2.0
 retrying!=1.3.0,>=1.2.3 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/setup.cfg new/oslo.concurrency-3.14.0/setup.cfg
--- old/oslo.concurrency-3.7.0/setup.cfg        2016-03-28 05:06:57.000000000 
+0200
+++ new/oslo.concurrency-3.14.0/setup.cfg       2016-08-18 19:59:41.000000000 
+0200
@@ -17,6 +17,7 @@
        Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.4
+       Programming Language :: Python :: 3.5
 
 [files]
 packages = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/test-requirements.txt 
new/oslo.concurrency-3.14.0/test-requirements.txt
--- old/oslo.concurrency-3.7.0/test-requirements.txt    2016-03-28 
05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/test-requirements.txt   2016-08-18 
19:57:20.000000000 +0200
@@ -6,10 +6,11 @@
 oslotest>=1.10.0 # Apache-2.0
 coverage>=3.6 # Apache-2.0
 futures>=3.0;python_version=='2.7' or python_version=='2.6' # BSD
-fixtures>=1.3.1 # Apache-2.0/BSD
+fixtures>=3.0.0 # Apache-2.0/BSD
 
 # These are needed for docs generation
 oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
-sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD
+sphinx!=1.3b1,<1.3,>=1.2.1 # BSD
+reno>=1.8.0 # Apache2
 
 eventlet!=0.18.3,>=0.18.2 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/oslo.concurrency-3.7.0/tox.ini new/oslo.concurrency-3.14.0/tox.ini
--- old/oslo.concurrency-3.7.0/tox.ini  2016-03-28 05:04:37.000000000 +0200
+++ new/oslo.concurrency-3.14.0/tox.ini 2016-08-18 19:57:20.000000000 +0200
@@ -1,6 +1,6 @@
 [tox]
 minversion = 1.6
-envlist = py34,py27,pep8
+envlist = py35,py34,py27,pep8
 
 [testenv]
 deps = -r{toxinidir}/test-requirements.txt
@@ -9,10 +9,6 @@
     lockutils-wrapper python setup.py testr --slowest --testr-args='{posargs}'
     env TEST_EVENTLET=1 lockutils-wrapper python setup.py testr --slowest 
--testr-args='{posargs}'
 
-[testenv:py34]
-commands =
-    lockutils-wrapper python setup.py testr --slowest --testr-args='{posargs}'
-
 [testenv:pep8]
 commands = flake8
 
@@ -28,7 +24,7 @@
 [flake8]
 show-source = True
 ignore = H405
-exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build
+exclude=.venv,.git,.tox,dist,*lib/python*,*egg,build
 
 [hacking]
 import_exceptions =
@@ -41,3 +37,6 @@
 # of the requirements.txt files
 deps = pip_missing_reqs
 commands = pip-missing-reqs -d --ignore-module=oslo_concurrency* 
--ignore-file=oslo_concurrency/tests/* --ignore-file=tests/ oslo_concurrency
+
+[testenv:releasenotes]
+commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html 
releasenotes/source releasenotes/build/html


Reply via email to