Hello community,

here is the log from the commit of package python-keystoneclient for 
openSUSE:Factory checked in at 2018-01-24 15:26:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keystoneclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-keystoneclient.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-keystoneclient"

Wed Jan 24 15:26:51 2018 rev:26 rq:567262 version:3.14.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-keystoneclient/python-keystoneclient.changes  
    2017-08-28 15:30:40.930737554 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-keystoneclient.new/python-keystoneclient.changes
 2018-01-24 15:26:57.372319298 +0100
@@ -1,0 +2,15 @@
+Mon Jan 15 11:41:39 UTC 2018 - [email protected]
+
+- update to version 3.14.0
+  - Remove functional tests for v2.0 API
+  - Use generic user for both zuul v2 and v3
+  - Update reno for stable/pike
+  - Remove use of positional decorator
+  - Remove setting of version/release from releasenotes
+  - Adds bandit nosec flag to hashlib.sha1
+  - Handle UTC+00:00 in datetime strings
+  - Imported Translations from Zanata
+  - Avoid tox_install.sh for constraints support
+  - Updated from global requirements
+
+-------------------------------------------------------------------

Old:
----
  python-keystoneclient-3.13.0.tar.gz

New:
----
  python-keystoneclient-3.14.0.tar.gz

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

Other differences:
------------------
++++++ python-keystoneclient.spec ++++++
--- /var/tmp/diff_new_pack.1Y6bdj/_old  2018-01-24 15:26:58.012289365 +0100
+++ /var/tmp/diff_new_pack.1Y6bdj/_new  2018-01-24 15:26:58.012289365 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-keystoneclient
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,54 +18,71 @@
 
 %global sname python-keystoneclient
 Name:           python-keystoneclient
-Version:        3.13.0
+Version:        3.14.0
 Release:        0
 Summary:        Client library for OpenStack Identity API
 License:        Apache-2.0
 Group:          Development/Languages/Python
 Url:            http://launchpad.net/%{sname}
-Source0:        
https://pypi.io/packages/source/p/%{sname}/%{sname}-%{version}.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/p/%{sname}/%{sname}-%{version}.tar.gz
 BuildRequires:  openssl
 BuildRequires:  openstack-macros
-BuildRequires:  python-debtcollector >= 1.2.0
 BuildRequires:  python-devel
-BuildRequires:  python-keystoneauth1 >= 2.21.0
-BuildRequires:  python-lxml >= 2.3
-BuildRequires:  python-mock >= 2.0
-BuildRequires:  python-oslo.config >= 4.0.0
-BuildRequires:  python-oslo.i18n >= 2.1.0
-BuildRequires:  python-oslo.serialization >= 1.10.0
-BuildRequires:  python-oslo.utils >= 3.20.0
-BuildRequires:  python-oslotest >= 1.10.0
-BuildRequires:  python-pbr >= 2.0.0
-BuildRequires:  python-positional >= 1.1.1
-BuildRequires:  python-requests-mock >= 1.1
-BuildRequires:  python-six >= 1.9.0
-BuildRequires:  python-testrepository >= 0.0.18
-BuildRequires:  python-testresources >= 0.2.4
-BuildRequires:  python-testscenarios >= 0.4
+BuildRequires:  python2-debtcollector >= 1.2.0
+BuildRequires:  python2-keystoneauth1 >= 3.2.0
+BuildRequires:  python2-lxml >= 3.4.1
+BuildRequires:  python2-mock >= 2.0.0
+BuildRequires:  python2-oslo.config >= 4.6.0
+BuildRequires:  python2-oslo.i18n >= 3.15.3
+BuildRequires:  python2-oslo.serialization >= 2.18.0
+BuildRequires:  python2-oslo.utils >= 3.31.0
+BuildRequires:  python2-oslotest >= 1.10.0
+BuildRequires:  python2-pbr >= 2.0.0
+BuildRequires:  python2-positional
+BuildRequires:  python2-requests-mock >= 1.1.0
+BuildRequires:  python2-six >= 1.10.0
+BuildRequires:  python2-testrepository >= 0.0.18
+BuildRequires:  python2-testresources >= 2.0.0
+BuildRequires:  python2-testscenarios >= 0.4
+BuildRequires:  python3-debtcollector >= 1.2.0
+BuildRequires:  python3-devel
+BuildRequires:  python3-keystoneauth1 >= 3.2.0
+BuildRequires:  python3-lxml >= 3.4.1
+BuildRequires:  python3-mock >= 2.0.0
+BuildRequires:  python3-oslo.config >= 4.6.0
+BuildRequires:  python3-oslo.i18n >= 3.15.3
+BuildRequires:  python3-oslo.serialization >= 2.18.0
+BuildRequires:  python3-oslo.utils >= 3.31.0
+BuildRequires:  python3-oslotest >= 1.10.0
+BuildRequires:  python3-pbr >= 2.0.0
+BuildRequires:  python3-requests-mock >= 1.1.0
+BuildRequires:  python3-six >= 1.10.0
+BuildRequires:  python3-testrepository >= 0.0.18
+BuildRequires:  python3-testresources >= 2.0.0
+BuildRequires:  python3-testscenarios >= 0.4
 Requires:       python-debtcollector >= 1.2.0
-Requires:       python-keystoneauth1 >= 2.21.0
-Requires:       python-oslo.config >= 4.0.0
-Requires:       python-oslo.i18n >= 2.1.0
-Requires:       python-oslo.serialization >= 1.10.0
-Requires:       python-oslo.utils >= 3.20.0
-Requires:       python-positional >= 1.1.1
+Requires:       python-keystoneauth1 >= 3.2.0
+Requires:       python-oslo.config >= 4.6.0
+Requires:       python-oslo.i18n >= 3.15.3
+Requires:       python-oslo.serialization >= 2.18.0
+Requires:       python-oslo.utils >= 3.31.0
+Requires:       python-positional
 Requires:       python-requests >= 2.14.2
-Requires:       python-six >= 1.9.0
+Requires:       python-six >= 1.10.0
 Requires:       python-stevedore >= 1.20.0
 BuildArch:      noarch
+%python_subpackages
 
 %description
 Client library for interacting with Openstack Identity API.
 
-%package doc
+%package -n python-keystoneclient-doc
 Summary:        Documentation for OpenStack Identity API Client
-Group:          Documentation
+Group:          Documentation/HTML
 BuildRequires:  python-Sphinx
-BuildRequires:  python-openstackdocstheme >= 1.11.0
+BuildRequires:  python-openstackdocstheme >= 1.17.0
 
-%description doc
+%description -n python-keystoneclient-doc
 Documentation for the client library for interacting with Openstack
 Identity API.
 
@@ -77,13 +94,13 @@
 sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg
 
 %build
-%{py2_build}
+%{python_build}
 
 # Build HTML docs and man page
 %{__python2} setup.py build_sphinx
 
 %install
-%{py2_install}
+%{python_install}
 
 # Delete tests
 rm -fr %{buildroot}%{python2_sitelib}/tests
@@ -92,15 +109,17 @@
 rm -fr html/.doctrees html/.buildinfo
 
 %check
-%{__python2} setup.py testr
+%{python_expand rm -rf .testrepository
+$python setup.py testr
+}
 
-%files
+%files %{python_files}
 %doc README.rst
 %license LICENSE
 %{python2_sitelib}/keystoneclient
 %{python2_sitelib}/*.egg-info
 
-%files doc
+%files -n python-keystoneclient-doc
 %doc doc/build/html
 %license LICENSE
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.1Y6bdj/_old  2018-01-24 15:26:58.040288055 +0100
+++ /var/tmp/diff_new_pack.1Y6bdj/_new  2018-01-24 15:26:58.040288055 +0100
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/pike/openstack/python-keystoneclient/python-keystoneclient.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/master/openstack/python-keystoneclient/python-keystoneclient.spec.j2</param>
     <param name="output-name">python-keystoneclient.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/pike/global-requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/master/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,python-keystoneclient</param>
   </service>

++++++ python-keystoneclient-3.13.0.tar.gz -> 
python-keystoneclient-3.14.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/AUTHORS 
new/python-keystoneclient-3.14.0/AUTHORS
--- old/python-keystoneclient-3.13.0/AUTHORS    2017-07-28 16:07:53.000000000 
+0200
+++ new/python-keystoneclient-3.14.0/AUTHORS    2017-12-09 05:06:22.000000000 
+0100
@@ -151,6 +151,7 @@
 Mouad Benchchaoui <[email protected]>
 Nachiappan <[email protected]>
 Nachiappan VR N <[email protected]>
+Nam Nguyen Hoai <[email protected]>
 Navid Pustchi <[email protected]>
 Nicolas Simonds <[email protected]>
 Nisha Yadav <[email protected]>
@@ -168,6 +169,7 @@
 Rob Crittenden <[email protected]>
 Rodrigo Duarte <[email protected]>
 Rodrigo Duarte Sousa <[email protected]>
+Rodrigo Duarte Sousa <[email protected]>
 Rodrigo Duarte Sousa <[email protected]>
 Rodrigo Duarte Sousa <[email protected]>
 Roman Bogorodskiy <[email protected]>
@@ -230,6 +232,7 @@
 Zhongyue Luo <[email protected]>
 Zhongyue Luo <[email protected]>
 Ziad Sawalha <[email protected]>
+Zuul <[email protected]>
 ankitagrawal <[email protected]>
 chenaidong1 <[email protected]>
 chenxiao <[email protected]>
@@ -245,6 +248,7 @@
 ji-xuepeng <[email protected]>
 jun xie <[email protected]>
 lawrancejing <[email protected]>
+lhinds <[email protected]>
 lin-hua-cheng <[email protected]>
 lin-hua-cheng <[email protected]>
 liu-sheng <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/ChangeLog 
new/python-keystoneclient-3.14.0/ChangeLog
--- old/python-keystoneclient-3.13.0/ChangeLog  2017-07-28 16:07:53.000000000 
+0200
+++ new/python-keystoneclient-3.14.0/ChangeLog  2017-12-09 05:06:22.000000000 
+0100
@@ -1,6 +1,25 @@
 CHANGES
 =======
 
+3.14.0
+------
+
+* Updated from global requirements
+* Avoid tox\_install.sh for constraints support
+* Handle UTC+00:00 in datetime strings
+* Remove setting of version/release from releasenotes
+* Updated from global requirements
+* Remove functional tests for v2.0 API
+* Updated from global requirements
+* Use generic user for both zuul v2 and v3
+* Updated from global requirements
+* Adds bandit nosec flag to hashlib.sha1
+* Updated from global requirements
+* Remove use of positional decorator
+* Imported Translations from Zanata
+* Update reno for stable/pike
+* Updated from global requirements
+
 3.13.0
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/PKG-INFO 
new/python-keystoneclient-3.14.0/PKG-INFO
--- old/python-keystoneclient-3.13.0/PKG-INFO   2017-07-28 16:07:54.000000000 
+0200
+++ new/python-keystoneclient-3.14.0/PKG-INFO   2017-12-09 05:06:23.000000000 
+0100
@@ -1,11 +1,12 @@
 Metadata-Version: 1.1
 Name: python-keystoneclient
-Version: 3.13.0
+Version: 3.14.0
 Summary: Client Library for OpenStack Identity
 Home-page: https://docs.openstack.org/python-keystoneclient/latest/
 Author: OpenStack
 Author-email: [email protected]
 License: UNKNOWN
+Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/_discover.py 
new/python-keystoneclient-3.14.0/keystoneclient/_discover.py
--- old/python-keystoneclient-3.13.0/keystoneclient/_discover.py        
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/_discover.py        
2017-12-09 05:02:58.000000000 +0100
@@ -24,8 +24,6 @@
 import logging
 import re
 
-from positional import positional
-
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
 
@@ -33,7 +31,6 @@
 _LOGGER = logging.getLogger(__name__)
 
 
-@positional()
 def get_version_data(session, url, authenticated=None):
     """Retrieve raw version data from a url."""
     headers = {'Accept': 'application/json'}
@@ -141,7 +138,6 @@
     DEPRECATED_STATUSES = ('deprecated',)
     EXPERIMENTAL_STATUSES = ('experimental',)
 
-    @positional()
     def __init__(self, session, url, authenticated=None):
         self._data = get_version_data(session, url,
                                       authenticated=authenticated)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/adapter.py 
new/python-keystoneclient-3.14.0/keystoneclient/adapter.py
--- old/python-keystoneclient-3.13.0/keystoneclient/adapter.py  2017-07-28 
16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/adapter.py  2017-12-09 
05:02:58.000000000 +0100
@@ -13,7 +13,6 @@
 import warnings
 
 from oslo_serialization import jsonutils
-from positional import positional
 
 
 class Adapter(object):
@@ -46,7 +45,6 @@
     :type logger: logging.Logger
     """
 
-    @positional()
     def __init__(self, session, service_type=None, service_name=None,
                  interface=None, region_name=None, endpoint_override=None,
                  version=None, auth=None, user_agent=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/cli.py 
new/python-keystoneclient-3.14.0/keystoneclient/auth/cli.py
--- old/python-keystoneclient-3.13.0/keystoneclient/auth/cli.py 2017-07-28 
16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/auth/cli.py 2017-12-09 
05:02:58.000000000 +0100
@@ -14,7 +14,6 @@
 import os
 
 from debtcollector import removals
-from positional import positional
 
 from keystoneclient.auth import base
 
@@ -24,7 +23,6 @@
     version='2.1.0',
     removal_version='3.0.0'
 )
-@positional()
 def register_argparse_arguments(parser, argv, default=None):
     """Register CLI options needed to create a plugin.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/access.py 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/access.py
--- old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/access.py     
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/access.py     
2017-12-09 05:02:58.000000000 +0100
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from positional import positional
-
 from keystoneclient.auth.identity import base
 
 
@@ -32,7 +30,6 @@
                      if using the AUTH_INTERFACE with get_endpoint. (optional)
     """
 
-    @positional()
     def __init__(self, auth_ref, auth_url=None):
         super(AccessInfoPlugin, self).__init__(auth_url=auth_url,
                                                reauthenticate=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/base.py 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/base.py
--- old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/base.py       
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/base.py       
2017-12-09 05:02:58.000000000 +0100
@@ -16,7 +16,6 @@
 import warnings
 
 from oslo_config import cfg
-from positional import positional
 import six
 
 from keystoneclient import _discover
@@ -366,7 +365,6 @@
     def get_project_id(self, session, **kwargs):
         return self.get_access(session).project_id
 
-    @positional()
     def get_discovery(self, session, url, authenticated=None):
         """Return the discovery object for a URL.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/generic/cli.py 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/generic/cli.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/generic/cli.py    
    2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/generic/cli.py    
    2017-12-09 05:02:58.000000000 +0100
@@ -11,7 +11,6 @@
 # under the License.
 
 from oslo_config import cfg
-from positional import positional
 
 from keystoneclient.auth.identity.generic import password
 from keystoneclient import exceptions as exc
@@ -25,7 +24,6 @@
     as well as allowing users to override with a custom token and endpoint.
     """
 
-    @positional()
     def __init__(self, endpoint=None, token=None, **kwargs):
         super(DefaultCLI, self).__init__(**kwargs)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/generic/password.py
 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/generic/password.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/generic/password.py
   2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/generic/password.py
   2017-12-09 05:02:58.000000000 +0100
@@ -11,7 +11,6 @@
 # under the License.
 
 from oslo_config import cfg
-from positional import positional
 
 from keystoneclient import _discover
 from keystoneclient.auth.identity.generic import base
@@ -42,7 +41,6 @@
 
     """
 
-    @positional()
     def __init__(self, auth_url, username=None, user_id=None, password=None,
                  user_domain_id=None, user_domain_name=None, **kwargs):
         super(Password, self).__init__(auth_url=auth_url, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/v2.py 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/v2.py
--- old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/v2.py 
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/v2.py 
2017-12-09 05:02:58.000000000 +0100
@@ -14,7 +14,6 @@
 import logging
 
 from oslo_config import cfg
-from positional import positional
 import six
 
 from keystoneclient import access
@@ -49,7 +48,6 @@
 
         return options
 
-    @positional()
     def __init__(self, auth_url,
                  trust_id=None,
                  tenant_id=None,
@@ -128,7 +126,6 @@
     :raises TypeError: if a user_id or username is not provided.
     """
 
-    @positional(4)
     def __init__(self, auth_url, username=_NOT_PASSED, password=None,
                  user_id=_NOT_PASSED, **kwargs):
         super(Password, self).__init__(auth_url, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/v3/base.py 
new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/v3/base.py
--- old/python-keystoneclient-3.13.0/keystoneclient/auth/identity/v3/base.py    
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/auth/identity/v3/base.py    
2017-12-09 05:02:58.000000000 +0100
@@ -15,7 +15,6 @@
 import logging
 
 from oslo_config import cfg
-from positional import positional
 import six
 
 from keystoneclient import access
@@ -47,7 +46,6 @@
                                  token. (optional) default True.
     """
 
-    @positional()
     def __init__(self, auth_url,
                  trust_id=None,
                  domain_id=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/contrib/auth/v3/oidc.py 
new/python-keystoneclient-3.14.0/keystoneclient/contrib/auth/v3/oidc.py
--- old/python-keystoneclient-3.13.0/keystoneclient/contrib/auth/v3/oidc.py     
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/contrib/auth/v3/oidc.py     
2017-12-09 05:02:58.000000000 +0100
@@ -11,7 +11,6 @@
 # under the License.
 
 from oslo_config import cfg
-from positional import positional
 
 from keystoneclient import access
 from keystoneclient.auth.identity.v3 import federated
@@ -42,7 +41,6 @@
         ])
         return options
 
-    @positional(4)
     def __init__(self, auth_url, identity_provider, protocol,
                  username, password, client_id, client_secret,
                  access_token_endpoint, scope='profile',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/discover.py 
new/python-keystoneclient-3.14.0/keystoneclient/discover.py
--- old/python-keystoneclient-3.13.0/keystoneclient/discover.py 2017-07-28 
16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/discover.py 2017-12-09 
05:02:58.000000000 +0100
@@ -14,7 +14,6 @@
 
 from debtcollector import removals
 from keystoneauth1 import plugin
-from positional import positional
 
 from keystoneclient import _discover
 from keystoneclient import exceptions
@@ -146,7 +145,6 @@
 
     """
 
-    @positional(2)
     def __init__(self, session=None, authenticated=None, **kwargs):
         if not session:
             warnings.warn(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/httpclient.py 
new/python-keystoneclient-3.14.0/keystoneclient/httpclient.py
--- old/python-keystoneclient-3.13.0/keystoneclient/httpclient.py       
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/httpclient.py       
2017-12-09 05:02:58.000000000 +0100
@@ -25,7 +25,6 @@
 from keystoneauth1 import adapter
 from oslo_serialization import jsonutils
 import pkg_resources
-from positional import positional
 import requests
 
 try:
@@ -241,7 +240,6 @@
                            removal_version='2.0.0')
     @renames.renamed_kwarg('tenant_id', 'project_id', version='1.7.0',
                            removal_version='2.0.0')
-    @positional(enforcement=positional.WARN)
     def __init__(self, username=None, tenant_id=None, tenant_name=None,
                  password=None, auth_url=None, region_name=None, endpoint=None,
                  token=None, auth_ref=None, use_keyring=False,
@@ -483,7 +481,6 @@
 
         return self.project_name
 
-    @positional(enforcement=positional.WARN)
     def authenticate(self, username=None, password=None, tenant_name=None,
                      tenant_id=None, auth_url=None, token=None,
                      user_id=None, domain_name=None, domain_id=None,
@@ -693,7 +690,6 @@
         # permanently setting _endpoint would better match that behaviour.
         self._endpoint = value
 
-    @positional(enforcement=positional.WARN)
     def get_raw_token_from_identity_service(self, auth_url, username=None,
                                             password=None, tenant_name=None,
                                             tenant_id=None, token=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/service_catalog.py 
new/python-keystoneclient-3.14.0/keystoneclient/service_catalog.py
--- old/python-keystoneclient-3.13.0/keystoneclient/service_catalog.py  
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/service_catalog.py  
2017-12-09 05:02:58.000000000 +0100
@@ -19,7 +19,6 @@
 import abc
 import warnings
 
-from positional import positional
 import six
 
 from keystoneclient import exceptions
@@ -209,7 +208,6 @@
         return endpoints
 
     @abc.abstractmethod
-    @positional(enforcement=positional.WARN)
     def get_urls(self, attr=None, filter_value=None,
                  service_type='identity', endpoint_type='publicURL',
                  region_name=None, service_name=None):
@@ -233,7 +231,6 @@
         """
         raise NotImplementedError()  # pragma: no cover
 
-    @positional(3, enforcement=positional.WARN)
     def url_for(self, attr=None, filter_value=None,
                 service_type='identity', endpoint_type='publicURL',
                 region_name=None, service_name=None):
@@ -348,7 +345,6 @@
             pass
         return token
 
-    @positional(enforcement=positional.WARN)
     def get_urls(self, attr=None, filter_value=None,
                  service_type='identity', endpoint_type='publicURL',
                  region_name=None, service_name=None):
@@ -415,7 +411,6 @@
             pass
         return token
 
-    @positional(enforcement=positional.WARN)
     def get_urls(self, attr=None, filter_value=None,
                  service_type='identity', endpoint_type='public',
                  region_name=None, service_name=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/session.py 
new/python-keystoneclient-3.14.0/keystoneclient/session.py
--- old/python-keystoneclient-3.13.0/keystoneclient/session.py  2017-07-28 
16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/session.py  2017-12-09 
05:02:58.000000000 +0100
@@ -25,7 +25,6 @@
 from oslo_utils import encodeutils
 from oslo_utils import importutils
 from oslo_utils import strutils
-from positional import positional
 import requests
 import six
 from six.moves import urllib
@@ -134,7 +133,6 @@
     """This property is deprecated as of the 1.7.0 release and may be removed
        in the 2.0.0 release."""
 
-    @positional(2, enforcement=positional.WARN)
     def __init__(self, auth=None, session=None, original_ip=None, verify=True,
                  cert=None, timeout=None, user_agent=None,
                  redirect=_DEFAULT_REDIRECT_LIMIT):
@@ -171,13 +169,14 @@
         secure_headers = ('authorization', 'x-auth-token',
                           'x-subject-token', 'x-service-token')
         if header[0].lower() in secure_headers:
-            token_hasher = hashlib.sha1()
+            # hashlib.sha1() bandit nosec, as it is HMAC-SHA1 in
+            # keystone, which is considered secure (unlike just sha1)
+            token_hasher = hashlib.sha1()  # nosec(lhinds)
             token_hasher.update(header[1].encode('utf-8'))
             token_hash = token_hasher.hexdigest()
             return (header[0], '{SHA1}%s' % token_hash)
         return header
 
-    @positional()
     def _http_log_request(self, url, method=None, data=None,
                           headers=None, logger=_logger):
         if not logger.isEnabledFor(logging.DEBUG):
@@ -256,7 +255,6 @@
         logger.debug(' '.join(string_parts))
 
     # NOTE(artmr): parameter 'original_ip' value is never used
-    @positional(enforcement=positional.WARN)
     def request(self, url, method, json=None, original_ip=None,
                 user_agent=None, redirect=None, authenticated=None,
                 endpoint_filter=None, auth=None, requests_auth=None,
@@ -806,7 +804,7 @@
         auth = self._auth_required(auth, msg)
         return auth.get_project_id(self)
 
-    @positional.classmethod()
+    @classmethod
     def get_conf_options(cls, deprecated_opts=None):
         """Get oslo_config options that are needed for a :py:class:`.Session`.
 
@@ -855,7 +853,7 @@
                            help='Timeout value for http requests'),
                 ]
 
-    @positional.classmethod()
+    @classmethod
     def register_conf_options(cls, conf, group, deprecated_opts=None):
         """Register the oslo_config options that are needed for a session.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/base.py 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/base.py
--- old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/base.py    
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/base.py    
2017-12-09 05:02:58.000000000 +0100
@@ -83,7 +83,3 @@
 
 class V3ClientTestCase(ClientTestCase):
     version = '3'
-
-
-class V2ClientTestCase(ClientTestCase):
-    version = '2.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/hooks/post_test_hook.sh
 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/hooks/post_test_hook.sh
--- 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/hooks/post_test_hook.sh
    2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/hooks/post_test_hook.sh
    2017-12-09 05:02:58.000000000 +0100
@@ -21,7 +21,7 @@
         sudo /usr/os-testr-env/bin/subunit2html 
$BASE/logs/testrepository.subunit $BASE/logs/testr_results.html
         sudo gzip -9 $BASE/logs/testrepository.subunit
         sudo gzip -9 $BASE/logs/testr_results.html
-        sudo chown jenkins:jenkins $BASE/logs/testrepository.subunit.gz 
$BASE/logs/testr_results.html.gz
+        sudo chown $USER:$USER $BASE/logs/testrepository.subunit.gz 
$BASE/logs/testr_results.html.gz
         sudo chmod a+r $BASE/logs/testrepository.subunit.gz 
$BASE/logs/testr_results.html.gz
     fi
 }
@@ -35,13 +35,13 @@
 # Go to the keystoneclient dir
 cd $KEYSTONECLIENT_DIR
 
-sudo chown -R jenkins:stack $KEYSTONECLIENT_DIR
+sudo chown -R $USER:stack $KEYSTONECLIENT_DIR
 
 # Run tests
 echo "Running keystoneclient functional test suite"
 set +e
 # Preserve env for OS_ credentials
-sudo -E -H -u jenkins tox -efunctional
+sudo -E -H -u $USER tox -efunctional
 EXIT_CODE=$?
 set -e
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/test_access.py 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/test_access.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/test_access.py 
    2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/test_access.py 
    1970-01-01 01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-# 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 os
-
-import testtools
-
-from keystoneclient.auth.identity import v2
-from keystoneclient import session
-from tempest.lib import base
-
-
-class TestV2AccessInfo(base.BaseTestCase):
-
-    def setUp(self):
-        super(TestV2AccessInfo, self).setUp()
-
-        self.session = session.Session()
-
-    @testtools.skip("likely race condition, being skipped")
-    def test_access_audit_id(self):
-        unscoped_plugin = v2.Password(auth_url=os.environ.get('OS_AUTH_URL'),
-                                      username=os.environ.get('OS_USERNAME'),
-                                      password=os.environ.get('OS_PASSWORD'))
-
-        unscoped_auth_ref = unscoped_plugin.get_access(self.session)
-
-        self.assertIsNotNone(unscoped_auth_ref.audit_id)
-        self.assertIsNone(unscoped_auth_ref.audit_chain_id)
-
-        scoped_plugin = v2.Token(auth_url=os.environ.get('OS_AUTH_URL'),
-                                 token=unscoped_auth_ref.auth_token,
-                                 tenant_name=os.environ.get('OS_TENANT_NAME'))
-
-        scoped_auth_ref = scoped_plugin.get_access(self.session)
-
-        self.assertIsNotNone(scoped_auth_ref.audit_id)
-        self.assertIsNotNone(scoped_auth_ref.audit_chain_id)
-
-        self.assertEqual(unscoped_auth_ref.audit_id,
-                         scoped_auth_ref.audit_chain_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/test_base.py 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/test_base.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/tests/functional/test_base.py   
    2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/tests/functional/test_base.py   
    2017-12-09 05:02:58.000000000 +0100
@@ -19,10 +19,3 @@
     def test_version(self):
         self.assertIsInstance(self.client,
                               keystoneclient.v3.client.Client)
-
-
-class V2ClientVersionTestCase(base.V2ClientTestCase):
-
-    def test_version(self):
-        self.assertIsInstance(self.client,
-                              keystoneclient.v2_0.client.Client)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/tests/unit/v3/test_tokens.py 
new/python-keystoneclient-3.14.0/keystoneclient/tests/unit/v3/test_tokens.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/tests/unit/v3/test_tokens.py    
    2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/tests/unit/v3/test_tokens.py    
    2017-12-09 05:02:58.000000000 +0100
@@ -64,11 +64,6 @@
         self.assertQueryStringIs('audit_id_only')
         self.assertEqual(sample_revoked_response, resp)
 
-    def test_get_revoked_audit_id_only_positional_exc(self):
-        # When get_revoked(True) an exception is raised because this must be
-        # called with named parameter.
-        self.assertRaises(TypeError, self.client.tokens.get_revoked, True)
-
     def test_validate_token_with_token_id(self):
         # Can validate a token passing a string token ID.
         token_id = uuid.uuid4().hex
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/keystoneclient/utils.py 
new/python-keystoneclient-3.14.0/keystoneclient/utils.py
--- old/python-keystoneclient-3.13.0/keystoneclient/utils.py    2017-07-28 
16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/utils.py    2017-12-09 
05:02:58.000000000 +0100
@@ -16,9 +16,6 @@
 
 from keystoneauth1 import exceptions as ksa_exceptions
 from oslo_utils import timeutils
-# NOTE(stevemar): do not remove positional. We need this to stay for a while
-# since versions of auth_token require it here.
-from positional import positional  # noqa
 import six
 
 from keystoneclient import exceptions as ksc_exceptions
@@ -117,7 +114,7 @@
                      if not subsecond
                      else _ISO8601_TIME_FORMAT_SUBSECOND)
     tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
-    st += ('Z' if tz == 'UTC' else tz)
+    st += ('Z' if (tz == 'UTC' or tz == 'UTC+00:00') else tz)
     return st
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v2_0/tokens.py 
new/python-keystoneclient-3.14.0/keystoneclient/v2_0/tokens.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v2_0/tokens.py      
2017-07-28 16:05:49.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v2_0/tokens.py      
2017-12-09 05:02:58.000000000 +0100
@@ -12,7 +12,6 @@
 
 from keystoneauth1 import exceptions
 from keystoneauth1 import plugin
-from positional import positional
 
 from keystoneclient import access
 from keystoneclient import base
@@ -40,7 +39,6 @@
 class TokenManager(base.Manager):
     resource_class = Token
 
-    @positional(enforcement=positional.WARN)
     def authenticate(self, username=None, tenant_id=None, tenant_name=None,
                      password=None, token=None, return_raw=False):
         if token:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/identity_providers.py
 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/identity_providers.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/identity_providers.py
 2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/identity_providers.py
 2017-12-09 05:02:58.000000000 +0100
@@ -10,8 +10,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -40,7 +38,6 @@
         return self._update(url, body=body, response_key=self.key,
                             method='PUT')
 
-    @positional.method(0)
     def create(self, id, **kwargs):
         """Create Identity Provider object.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/mappings.py
 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/mappings.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/mappings.py
   2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/mappings.py
   2017-12-09 05:02:58.000000000 +0100
@@ -10,8 +10,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -41,7 +39,6 @@
                             response_key=self.key,
                             method='PUT')
 
-    @positional.method(0)
     def create(self, mapping_id, **kwargs):
         """Create federation mapping.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/protocols.py
 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/protocols.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/protocols.py
  2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/protocols.py
  2017-12-09 05:02:58.000000000 +0100
@@ -10,8 +10,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -57,7 +55,6 @@
                             response_key=self.key,
                             method='PUT')
 
-    @positional.method(3)
     def create(self, protocol_id, identity_provider, mapping, **kwargs):
         """Create federation protocol object and tie to the Identity Provider.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/service_providers.py
 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/service_providers.py
--- 
old/python-keystoneclient-3.13.0/keystoneclient/v3/contrib/federation/service_providers.py
  2017-07-28 16:05:49.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/keystoneclient/v3/contrib/federation/service_providers.py
  2017-12-09 05:02:58.000000000 +0100
@@ -10,8 +10,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -42,7 +40,6 @@
         return self._update(url, body=body, response_key=self.key,
                             method='PUT')
 
-    @positional.method(0)
     def create(self, id, **kwargs):
         """Create Service Provider object.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/credentials.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/credentials.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/credentials.py   
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/credentials.py   
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -41,7 +39,6 @@
     collection_key = 'credentials'
     key = 'credential'
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, user, type, blob, project=None, **kwargs):
         """Create a credential.
 
@@ -95,7 +92,6 @@
         """
         return super(CredentialManager, self).list(**kwargs)
 
-    @positional(2, enforcement=positional.WARN)
     def update(self, credential, user, type=None, blob=None, project=None,
                **kwargs):
         """Update a credential.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/domains.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/domains.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/domains.py       
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/domains.py       
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -40,7 +38,6 @@
     collection_key = 'domains'
     key = 'domain'
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, name, description=None, enabled=True, **kwargs):
         """Create a domain.
 
@@ -89,7 +86,6 @@
             kwargs['enabled'] = 0
         return super(DomainManager, self).list(**kwargs)
 
-    @positional(enforcement=positional.WARN)
     def update(self, domain, name=None,
                description=None, enabled=None, **kwargs):
         """Update a domain.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/endpoints.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/endpoints.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/endpoints.py     
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/endpoints.py     
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
@@ -54,7 +52,6 @@
             msg %= ', '.join(VALID_INTERFACES)
             raise exceptions.ValidationError(msg)
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, service, url, interface=None, region=None, enabled=True,
                **kwargs):
         """Create an endpoint.
@@ -97,7 +94,6 @@
         return super(EndpointManager, self).get(
             endpoint_id=base.getid(endpoint))
 
-    @positional(enforcement=positional.WARN)
     def list(self, service=None, interface=None, region=None, enabled=None,
              region_id=None, **kwargs):
         """List endpoints.
@@ -128,7 +124,6 @@
             enabled=enabled,
             **kwargs)
 
-    @positional(enforcement=positional.WARN)
     def update(self, endpoint, service=None, url=None, interface=None,
                region=None, enabled=None, **kwargs):
         """Update an endpoint.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/groups.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/groups.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/groups.py        
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/groups.py        
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -29,7 +27,6 @@
 
     """
 
-    @positional(enforcement=positional.WARN)
     def update(self, name=None, description=None):
         kwargs = {
             'name': name if name is not None else self.name,
@@ -54,7 +51,6 @@
     collection_key = 'groups'
     key = 'group'
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, name, domain=None, description=None, **kwargs):
         """Create a group.
 
@@ -75,7 +71,6 @@
             description=description,
             **kwargs)
 
-    @positional(enforcement=positional.WARN)
     def list(self, user=None, domain=None, **kwargs):
         """List groups.
 
@@ -111,7 +106,6 @@
         return super(GroupManager, self).get(
             group_id=base.getid(group))
 
-    @positional(enforcement=positional.WARN)
     def update(self, group, name=None, description=None, **kwargs):
         """Update a group.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/policies.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/policies.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/policies.py      
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/policies.py      
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -29,7 +27,6 @@
 
     """
 
-    @positional(enforcement=positional.WARN)
     def update(self, blob=None, type=None):
         kwargs = {
             'blob': blob if blob is not None else self.blob,
@@ -52,7 +49,6 @@
     collection_key = 'policies'
     key = 'policy'
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, blob, type='application/json', **kwargs):
         """Create a policy.
 
@@ -95,7 +91,6 @@
         """
         return super(PolicyManager, self).list(**kwargs)
 
-    @positional(enforcement=positional.WARN)
     def update(self, policy, blob=None, type=None, **kwargs):
         """Update a policy.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/projects.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/projects.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/projects.py      
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/projects.py      
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
@@ -37,7 +35,6 @@
 
     """
 
-    @positional(enforcement=positional.WARN)
     def update(self, name=None, description=None, enabled=None):
         kwargs = {
             'name': name if name is not None else self.name,
@@ -63,7 +60,6 @@
     collection_key = 'projects'
     key = 'project'
 
-    @positional(3, enforcement=positional.WARN)
     def create(self, name, domain, description=None,
                enabled=True, parent=None, **kwargs):
         """Create a project.
@@ -96,7 +92,6 @@
             enabled=enabled,
             **kwargs)
 
-    @positional(enforcement=positional.WARN)
     def list(self, domain=None, user=None, **kwargs):
         """List projects.
 
@@ -132,7 +127,6 @@
                     'parameters, not both')
             raise exceptions.ValidationError(msg)
 
-    @positional()
     def get(self, project, subtree_as_list=False, parents_as_list=False,
             subtree_as_ids=False, parents_as_ids=False):
         """Retrieve a project.
@@ -182,7 +176,6 @@
         url = self.build_url(dict_args_in_out=dict_args)
         return self._get(url + query, self.key)
 
-    @positional(enforcement=positional.WARN)
     def update(self, project, name=None, domain=None, description=None,
                enabled=None, **kwargs):
         """Update a project.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/roles.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/roles.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/roles.py 2017-07-28 
16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/roles.py 2017-12-09 
05:02:58.000000000 +0100
@@ -15,7 +15,6 @@
 #    under the License.
 
 from debtcollector import removals
-from positional import positional
 
 from keystoneclient import base
 from keystoneclient import exceptions
@@ -96,7 +95,6 @@
             msg = _('Must specify either a user or group')
             raise exceptions.ValidationError(msg)
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, name, domain=None, **kwargs):
         """Create a role.
 
@@ -132,7 +130,6 @@
         """
         return super(RoleManager, self).get(role_id=base.getid(role))
 
-    @positional(enforcement=positional.WARN)
     def list(self, user=None, group=None, domain=None,
              project=None, os_inherit_extension_inherited=False, **kwargs):
         """List roles and role grants.
@@ -178,7 +175,6 @@
 
         return super(RoleManager, self).list(**kwargs)
 
-    @positional(enforcement=positional.WARN)
     def update(self, role, name=None, **kwargs):
         """Update a role.
 
@@ -212,7 +208,6 @@
         return super(RoleManager, self).delete(
             role_id=base.getid(role))
 
-    @positional(enforcement=positional.WARN)
     def grant(self, role, user=None, group=None, domain=None, project=None,
               os_inherit_extension_inherited=False, **kwargs):
         """Grant a role to a user or group on a domain or project.
@@ -259,7 +254,6 @@
                                             role_id=base.getid(role),
                                             **kwargs)
 
-    @positional(enforcement=positional.WARN)
     def check(self, role, user=None, group=None, domain=None, project=None,
               os_inherit_extension_inherited=False, **kwargs):
         """Check if a user or group has a role on a domain or project.
@@ -310,7 +304,6 @@
             os_inherit_extension_inherited=os_inherit_extension_inherited,
             **kwargs)
 
-    @positional(enforcement=positional.WARN)
     def revoke(self, role, user=None, group=None, domain=None, project=None,
                os_inherit_extension_inherited=False, **kwargs):
         """Revoke a role from a user or group on a domain or project.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/services.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/services.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/services.py      
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/services.py      
2017-12-09 05:02:58.000000000 +0100
@@ -14,8 +14,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from positional import positional
-
 from keystoneclient import base
 
 
@@ -41,7 +39,6 @@
     collection_key = 'services'
     key = 'service'
 
-    @positional(1, enforcement=positional.WARN)
     def create(self, name, type=None,
                enabled=True, description=None, **kwargs):
         """Create a service.
@@ -78,7 +75,6 @@
         return super(ServiceManager, self).get(
             service_id=base.getid(service))
 
-    @positional(enforcement=positional.WARN)
     def list(self, name=None, type=None, **kwargs):
         """List services.
 
@@ -96,7 +92,6 @@
             type=type_arg,
             **kwargs)
 
-    @positional(enforcement=positional.WARN)
     def update(self, service, name=None, type=None, enabled=None,
                description=None, **kwargs):
         """Update a service.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/tokens.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/tokens.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/tokens.py        
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/tokens.py        
2017-12-09 05:02:58.000000000 +0100
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from positional import positional
-
 from keystoneclient import access
 from keystoneclient import base
 
@@ -40,7 +38,6 @@
         headers = {'X-Subject-Token': token_id}
         return self._client.delete('/auth/tokens', headers=headers)
 
-    @positional.method(0)
     def get_revoked(self, audit_id_only=False):
         """Get revoked tokens list.
 
@@ -60,7 +57,6 @@
         resp, body = self._client.get(path)
         return body
 
-    @positional.method(1)
     def get_token_data(self, token, include_catalog=True, allow_expired=False):
         """Fetch the data about a token from the identity server.
 
@@ -89,7 +85,6 @@
         resp, body = self._client.get(url, headers=headers)
         return body
 
-    @positional.method(1)
     def validate(self, token, include_catalog=True, allow_expired=False):
         """Validate a token.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/keystoneclient/v3/users.py 
new/python-keystoneclient-3.14.0/keystoneclient/v3/users.py
--- old/python-keystoneclient-3.13.0/keystoneclient/v3/users.py 2017-07-28 
16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/keystoneclient/v3/users.py 2017-12-09 
05:02:58.000000000 +0100
@@ -15,7 +15,6 @@
 #    under the License.
 
 from debtcollector import renames
-from positional import positional
 
 from keystoneclient import base
 from keystoneclient import exceptions
@@ -47,7 +46,6 @@
 
     @renames.renamed_kwarg('project', 'default_project', version='1.7.0',
                            removal_version='2.0.0')
-    @positional(1, enforcement=positional.WARN)
     def create(self, name, domain=None, project=None, password=None,
                email=None, description=None, enabled=True,
                default_project=None, **kwargs):
@@ -96,7 +94,6 @@
 
     @renames.renamed_kwarg('project', 'default_project', version='1.7.0',
                            removal_version='2.0.0')
-    @positional(enforcement=positional.WARN)
     def list(self, project=None, domain=None, group=None, default_project=None,
              **kwargs):
         """List users.
@@ -153,7 +150,6 @@
 
     @renames.renamed_kwarg('project', 'default_project', version='1.7.0',
                            removal_version='2.0.0')
-    @positional(enforcement=positional.WARN)
     def update(self, user, name=None, domain=None, project=None, password=None,
                email=None, description=None, enabled=None,
                default_project=None, **kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/PKG-INFO 
new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/PKG-INFO
--- old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/PKG-INFO    
2017-07-28 16:07:53.000000000 +0200
+++ new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/PKG-INFO    
2017-12-09 05:06:22.000000000 +0100
@@ -1,11 +1,12 @@
 Metadata-Version: 1.1
 Name: python-keystoneclient
-Version: 3.13.0
+Version: 3.14.0
 Summary: Client Library for OpenStack Identity
 Home-page: https://docs.openstack.org/python-keystoneclient/latest/
 Author: OpenStack
 Author-email: [email protected]
 License: UNKNOWN
+Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/SOURCES.txt 
new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/SOURCES.txt
--- old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/SOURCES.txt 
2017-07-28 16:07:53.000000000 +0200
+++ new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/SOURCES.txt 
2017-12-09 05:06:23.000000000 +0100
@@ -106,10 +106,8 @@
 keystoneclient/tests/__init__.py
 keystoneclient/tests/functional/__init__.py
 keystoneclient/tests/functional/base.py
-keystoneclient/tests/functional/test_access.py
 keystoneclient/tests/functional/test_base.py
 keystoneclient/tests/functional/hooks/post_test_hook.sh
-keystoneclient/tests/functional/v2_0/__init__.py
 keystoneclient/tests/functional/v3/__init__.py
 keystoneclient/tests/functional/v3/client_fixtures.py
 keystoneclient/tests/functional/v3/test_credentials.py
@@ -293,7 +291,8 @@
 releasenotes/source/mitaka.rst
 releasenotes/source/newton.rst
 releasenotes/source/ocata.rst
+releasenotes/source/pike.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
-tools/tox_install.sh
\ No newline at end of file
+releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/pbr.json 
new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/pbr.json
--- old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/pbr.json    
2017-07-28 16:07:53.000000000 +0200
+++ new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/pbr.json    
2017-12-09 05:06:22.000000000 +0100
@@ -1 +1 @@
-{"git_version": "a8de72a", "is_release": true}
\ No newline at end of file
+{"git_version": "2bea645", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/requires.txt 
new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/requires.txt
--- 
old/python-keystoneclient-3.13.0/python_keystoneclient.egg-info/requires.txt    
    2017-07-28 16:07:53.000000000 +0200
+++ 
new/python-keystoneclient-3.14.0/python_keystoneclient.egg-info/requires.txt    
    2017-12-09 05:06:22.000000000 +0100
@@ -1,11 +1,10 @@
 pbr!=2.1.0,>=2.0.0
 debtcollector>=1.2.0
-keystoneauth1>=3.0.1
-oslo.config!=4.3.0,!=4.4.0,>=4.0.0
-oslo.i18n!=3.15.2,>=2.1.0
-oslo.serialization!=2.19.1,>=1.10.0
-oslo.utils>=3.20.0
-positional>=1.1.1
+keystoneauth1>=3.3.0
+oslo.config>=5.1.0
+oslo.i18n>=3.15.3
+oslo.serialization!=2.19.1,>=2.18.0
+oslo.utils>=3.31.0
 requests>=2.14.2
-six>=1.9.0
+six>=1.10.0
 stevedore>=1.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/releasenotes/source/conf.py 
new/python-keystoneclient-3.14.0/releasenotes/source/conf.py
--- old/python-keystoneclient-3.13.0/releasenotes/source/conf.py        
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/releasenotes/source/conf.py        
2017-12-09 05:02:58.000000000 +0100
@@ -57,17 +57,11 @@
 project = u'keystoneclient Release Notes'
 copyright = u'2015, Keystone 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.
-import pbr.version
-keystone_version = pbr.version.VersionInfo('keystoneclient')
+# Release notes are version independent.
 # The full version, including alpha/beta/rc tags.
-release = keystone_version.version_string_with_vcs()
+release = ''
 # The short X.Y version.
-version = keystone_version.canonical_version_string()
+version = ''
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/releasenotes/source/index.rst 
new/python-keystoneclient-3.14.0/releasenotes/source/index.rst
--- old/python-keystoneclient-3.13.0/releasenotes/source/index.rst      
2017-07-28 16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/releasenotes/source/index.rst      
2017-12-09 05:02:58.000000000 +0100
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   pike
    ocata
    newton
    mitaka
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
 
new/python-keystoneclient-3.14.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
--- 
old/python-keystoneclient-3.13.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/python-keystoneclient-3.14.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
  2017-12-09 05:02:58.000000000 +0100
@@ -0,0 +1,57 @@
+# Gérald LONLAS <[email protected]>, 2016. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: keystoneclient Release Notes 3.12.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-24 15:13+0000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2016-10-22 06:08+0000\n"
+"Last-Translator: Gérald LONLAS <[email protected]>\n"
+"Language-Team: French\n"
+"Language: fr\n"
+"X-Generator: Zanata 3.9.6\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+
+msgid "2.1.0"
+msgstr "2.1.0"
+
+msgid "2.2.0"
+msgstr "2.2.0"
+
+msgid "2.3.0"
+msgstr "2.3.0"
+
+msgid "3.0.0"
+msgstr "3.0.0"
+
+msgid "3.6.0"
+msgstr "3.6.0"
+
+msgid "Bug Fixes"
+msgstr "Corrections de bugs"
+
+msgid "Critical Issues"
+msgstr "Erreurs critiques"
+
+msgid "Current Series Release Notes"
+msgstr "Note de la release actuelle"
+
+msgid "Deprecation Notes"
+msgstr "Notes dépréciées "
+
+msgid "Mitaka Series Release Notes"
+msgstr "Note de release pour Mitaka"
+
+msgid "New Features"
+msgstr "Nouvelles fonctionnalités"
+
+msgid "Newton Series Release Notes"
+msgstr "Note de release pour Newton"
+
+msgid "Other Notes"
+msgstr "Autres notes"
+
+msgid "keystoneclient Release Notes"
+msgstr "Note de release pour keystoneclient"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.13.0/releasenotes/source/pike.rst 
new/python-keystoneclient-3.14.0/releasenotes/source/pike.rst
--- old/python-keystoneclient-3.13.0/releasenotes/source/pike.rst       
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-3.14.0/releasenotes/source/pike.rst       
2017-12-09 05:02:58.000000000 +0100
@@ -0,0 +1,6 @@
+===================================
+ Pike Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/pike
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/requirements.txt 
new/python-keystoneclient-3.14.0/requirements.txt
--- old/python-keystoneclient-3.13.0/requirements.txt   2017-07-28 
16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/requirements.txt   2017-12-09 
05:02:58.000000000 +0100
@@ -5,12 +5,11 @@
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
 
 debtcollector>=1.2.0 # Apache-2.0
-keystoneauth1>=3.0.1 # Apache-2.0
-oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0
-oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0
-oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0
-oslo.utils>=3.20.0 # Apache-2.0
-positional>=1.1.1 # Apache-2.0
+keystoneauth1>=3.3.0 # Apache-2.0
+oslo.config>=5.1.0 # Apache-2.0
+oslo.i18n>=3.15.3 # Apache-2.0
+oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
+oslo.utils>=3.31.0 # Apache-2.0
 requests>=2.14.2 # Apache-2.0
-six>=1.9.0 # MIT
+six>=1.10.0 # MIT
 stevedore>=1.20.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/test-requirements.txt 
new/python-keystoneclient-3.14.0/test-requirements.txt
--- old/python-keystoneclient-3.13.0/test-requirements.txt      2017-07-28 
16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/test-requirements.txt      2017-12-09 
05:02:58.000000000 +0100
@@ -8,19 +8,19 @@
 coverage!=4.4,>=4.0 # Apache-2.0
 fixtures>=3.0.0 # Apache-2.0/BSD
 keyring>=5.5.1 # MIT/PSF
-lxml!=3.7.0,>=2.3 # BSD
-mock>=2.0 # BSD
-oauthlib>=0.6 # BSD
-openstackdocstheme>=1.11.0 # Apache-2.0
+lxml!=3.7.0,>=3.4.1 # BSD
+mock>=2.0.0 # BSD
+oauthlib>=0.6.0 # BSD
+openstackdocstheme>=1.17.0 # Apache-2.0
 oslotest>=1.10.0 # Apache-2.0
-reno!=2.3.1,>=1.8.0 # Apache-2.0
-requests-mock>=1.1 # Apache-2.0
+reno>=2.5.0 # Apache-2.0
+requests-mock>=1.1.0 # Apache-2.0
 sphinx>=1.6.2 # BSD
-tempest>=16.1.0 # Apache-2.0
+tempest>=17.1.0 # Apache-2.0
 testrepository>=0.0.18 # Apache-2.0/BSD
-testresources>=0.2.4 # Apache-2.0/BSD
+testresources>=2.0.0 # Apache-2.0/BSD
 testscenarios>=0.4 # Apache-2.0/BSD
-testtools>=1.4.0 # MIT
+testtools>=2.2.0 # MIT
 
 # Bandit security code scanner
 bandit>=1.1.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/tools/tox_install.sh 
new/python-keystoneclient-3.14.0/tools/tox_install.sh
--- old/python-keystoneclient-3.13.0/tools/tox_install.sh       2017-07-28 
16:05:50.000000000 +0200
+++ new/python-keystoneclient-3.14.0/tools/tox_install.sh       1970-01-01 
01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-
-# Client constraint file contains this client version pin that is in conflict
-# with installing the client from source. We should remove the version pin in
-# the constraints file before applying it for from-source installation.
-
-CONSTRAINTS_FILE="$1"
-shift 1
-
-set -e
-
-# NOTE(tonyb): Place this in the tox enviroment's log dir so it will get
-# published to logs.openstack.org for easy debugging.
-localfile="$VIRTUAL_ENV/log/upper-constraints.txt"
-
-if [[ "$CONSTRAINTS_FILE" != http* ]]; then
-    CONSTRAINTS_FILE="file://$CONSTRAINTS_FILE"
-fi
-# NOTE(tonyb): need to add curl to bindep.txt if the project supports bindep
-curl "$CONSTRAINTS_FILE" --insecure --progress-bar --output "$localfile"
-
-pip install -c"$localfile" openstack-requirements
-
-# This is the main purpose of the script: Allow local installation of
-# the current repo. It is listed in constraints file and thus any
-# install will be constrained and we need to unconstrain it.
-edit-constraints "$localfile" -- "$CLIENT_NAME"
-
-pip install -c"$localfile" -U "$@"
-exit $?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.13.0/tox.ini 
new/python-keystoneclient-3.14.0/tox.ini
--- old/python-keystoneclient-3.13.0/tox.ini    2017-07-28 16:05:50.000000000 
+0200
+++ new/python-keystoneclient-3.14.0/tox.ini    2017-12-09 05:02:58.000000000 
+0100
@@ -5,14 +5,14 @@
 
 [testenv]
 usedevelop = True
-install_command = {toxinidir}/tools/tox_install.sh 
{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
 {opts} {packages}
+install_command = pip install {opts} {packages}
 setenv = VIRTUAL_ENV={envdir}
-         BRANCH_NAME=master
-         CLIENT_NAME=python-keystoneclient
          OS_STDOUT_NOCAPTURE=False
          OS_STDERR_NOCAPTURE=False
 
-deps = -r{toxinidir}/requirements.txt
+deps =
+       
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+       -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
 commands = find . -type f -name "*.pyc" -delete
            python setup.py testr --slowest --testr-args='{posargs}'


Reply via email to