Hello community,

here is the log from the commit of package python-keystoneclient for 
openSUSE:Factory checked in at 2020-06-05 20:10:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keystoneclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-keystoneclient.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-keystoneclient"

Fri Jun  5 20:10:32 2020 rev:33 rq:803567 version:4.0.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-keystoneclient/python-keystoneclient.changes  
    2020-03-24 22:32:38.705098237 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-keystoneclient.new.3606/python-keystoneclient.changes
    2020-06-05 20:13:46.710442686 +0200
@@ -1,0 +2,10 @@
+Tue May 12 09:57:17 UTC 2020 - [email protected]
+
+- update to version 4.0.0
+  - Update hacking for Python3
+  - [ussuri][goal] Drop python 2.7 support and testing
+  - Update master for stable/train
+  - Add support for app cred access rules
+  - Cleanup py27 support
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ python-keystoneclient.spec ++++++
--- /var/tmp/diff_new_pack.FPwgb8/_old  2020-06-05 20:13:47.566445836 +0200
+++ /var/tmp/diff_new_pack.FPwgb8/_new  2020-06-05 20:13:47.570445851 +0200
@@ -17,13 +17,13 @@
 
 
 Name:           python-keystoneclient
-Version:        3.21.0
+Version:        4.0.0
 Release:        0
 Summary:        Client library for OpenStack Identity API
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://launchpad.net/python-keystoneclient
-Source0:        
https://files.pythonhosted.org/packages/source/p/python-keystoneclient/python-keystoneclient-3.21.0.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/p/python-keystoneclient/python-keystoneclient-4.0.0.tar.gz
 BuildRequires:  openssl
 BuildRequires:  openstack-macros
 BuildRequires:  python3-debtcollector >= 1.2.0
@@ -73,7 +73,7 @@
 Identity API.
 
 %prep
-%autosetup -p1 -n python-keystoneclient-3.21.0
+%autosetup -p1 -n python-keystoneclient-4.0.0
 %py_req_cleanup
 # disable intersphinx - no network access during build
 echo "intersphinx_mapping = {}" >> doc/source/conf.py
@@ -83,13 +83,12 @@
 
 # Build HTML docs and man page
 PBR_VERSION=%{version} %sphinx_build -b html doc/source doc/build/html
+# remove the Sphinx-build leftovers
+rm -rf doc/build/html/.{doctrees,buildinfo}
 
 %install
 %{py3_install}
 
-# Fix hidden-file-or-dir warnings
-rm -fr html/.doctrees html/.buildinfo
-
 %check
 python3 -m stestr.cli run
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.FPwgb8/_old  2020-06-05 20:13:47.598445954 +0200
+++ /var/tmp/diff_new_pack.FPwgb8/_new  2020-06-05 20:13:47.602445968 +0200
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/train/openstack/python-keystoneclient/python-keystoneclient.spec.j2</param>
+    <param 
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/ussuri/openstack/python-keystoneclient/python-keystoneclient.spec.j2</param>
     <param name="output-name">python-keystoneclient.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/python-keystoneclient/stable/train/requirements.txt</param>
+    <param 
name="requirements">https://opendev.org/openstack/python-keystoneclient/raw/branch/stable/ussuri/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,python-keystoneclient</param>
   </service>

++++++ python-keystoneclient-3.21.0.tar.gz -> 
python-keystoneclient-4.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/.zuul.yaml 
new/python-keystoneclient-4.0.0/.zuul.yaml
--- old/python-keystoneclient-3.21.0/.zuul.yaml 2019-09-12 11:31:50.000000000 
+0200
+++ new/python-keystoneclient-4.0.0/.zuul.yaml  2020-04-11 20:36:29.000000000 
+0200
@@ -19,11 +19,9 @@
     templates:
       - openstack-cover-jobs
       - openstack-lower-constraints-jobs
-      - openstack-python-jobs
-      - openstack-python3-train-jobs
+      - openstack-python3-ussuri-jobs
       - publish-openstack-docs-pti
       - check-requirements
-      - lib-forward-testing
       - lib-forward-testing-python3
       - release-notes-jobs-python3
     check:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/ChangeLog 
new/python-keystoneclient-4.0.0/ChangeLog
--- old/python-keystoneclient-3.21.0/ChangeLog  2019-09-12 11:33:04.000000000 
+0200
+++ new/python-keystoneclient-4.0.0/ChangeLog   2020-04-11 20:37:23.000000000 
+0200
@@ -1,12 +1,25 @@
 CHANGES
 =======
 
+4.0.0
+-----
+
+* Cleanup py27 support
+* Update hacking for Python3
+* [ussuri][goal] Drop python 2.7 support and testing
+
+3.22.0
+------
+
+* Update master for stable/train
+
 3.21.0
 ------
 
 * Fix unit tests broken by requests-mock
 * Generate pdf documentation
 * Add parent project filter for listing projects
+* Add support for app cred access rules
 * Bump the openstackdocstheme extension to 1.20
 
 3.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/PKG-INFO 
new/python-keystoneclient-4.0.0/PKG-INFO
--- old/python-keystoneclient-3.21.0/PKG-INFO   2019-09-12 11:33:05.000000000 
+0200
+++ new/python-keystoneclient-4.0.0/PKG-INFO    2020-04-11 20:37:23.000000000 
+0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: python-keystoneclient
-Version: 3.21.0
+Version: 4.0.0
 Summary: Client Library for OpenStack Identity
 Home-page: https://docs.openstack.org/python-keystoneclient/latest/
 Author: OpenStack
@@ -77,8 +77,7 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/doc/requirements.txt 
new/python-keystoneclient-4.0.0/doc/requirements.txt
--- old/python-keystoneclient-3.21.0/doc/requirements.txt       2019-09-12 
11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/doc/requirements.txt        2020-04-11 
20:36:29.000000000 +0200
@@ -4,8 +4,7 @@
 
 # These are needed for docs generation
 openstackdocstheme>=1.20.0 # Apache-2.0
-sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7'  # BSD
-sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4'  # BSD
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
 reno>=2.5.0 # Apache-2.0
 lxml!=3.7.0,>=3.4.1 # BSD
 fixtures>=3.0.0 # Apache-2.0/BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/doc/source/conf.py 
new/python-keystoneclient-4.0.0/doc/source/conf.py
--- old/python-keystoneclient-3.21.0/doc/source/conf.py 2019-09-12 
11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/doc/source/conf.py  2020-04-11 
20:36:29.000000000 +0200
@@ -10,8 +10,6 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-from __future__ import unicode_literals
-
 import os
 import sys
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/examples/pki/gen_cmsz.py 
new/python-keystoneclient-4.0.0/examples/pki/gen_cmsz.py
--- old/python-keystoneclient-3.21.0/examples/pki/gen_cmsz.py   2019-09-12 
11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/examples/pki/gen_cmsz.py    2020-04-11 
20:36:29.000000000 +0200
@@ -84,6 +84,7 @@
                                     SIGNING_KEY_FILE_NAME, cms.PKIZ_CMS_FORM)
         f.write(derform)
 
+
 for name in EXAMPLE_TOKENS:
     json_file = make_filename('cms', name + '.json')
     pkiz_file = make_filename('cms', name + '.pkiz')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/auth/__init__.py 
new/python-keystoneclient-4.0.0/keystoneclient/auth/__init__.py
--- old/python-keystoneclient-3.21.0/keystoneclient/auth/__init__.py    
2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/keystoneclient/auth/__init__.py     
2020-04-11 20:36:29.000000000 +0200
@@ -10,6 +10,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+# flake8: noqa: F405
 
 from keystoneclient.auth.base import *  # noqa
 from keystoneclient.auth.cli import *  # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/auth/identity/v3/__init__.py 
new/python-keystoneclient-4.0.0/keystoneclient/auth/identity/v3/__init__.py
--- 
old/python-keystoneclient-3.21.0/keystoneclient/auth/identity/v3/__init__.py    
    2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/keystoneclient/auth/identity/v3/__init__.py 
2020-04-11 20:36:29.000000000 +0200
@@ -10,6 +10,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+# flake8: noqa: F405
+
 from keystoneclient.auth.identity.v3.base import *  # noqa
 from keystoneclient.auth.identity.v3.federated import *  # noqa
 from keystoneclient.auth.identity.v3.password import *  # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/contrib/ec2/utils.py 
new/python-keystoneclient-4.0.0/keystoneclient/contrib/ec2/utils.py
--- old/python-keystoneclient-3.21.0/keystoneclient/contrib/ec2/utils.py        
2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/keystoneclient/contrib/ec2/utils.py 
2020-04-11 20:36:29.000000000 +0200
@@ -225,7 +225,7 @@
             # port if we detect an old boto version.  FIXME: remove when all
             # distros package boto >= 2.9.3, this is a transitional workaround
             user_agent = headers_lower.get('user-agent', '')
-            strip_port = re.match('Boto/2\.[0-9]\.[0-2]', user_agent)
+            strip_port = re.match(r'Boto/2\.[0-9]\.[0-2]', user_agent)
 
             header_list = []
             sh_str = auth_param('SignedHeaders')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/exceptions.py 
new/python-keystoneclient-4.0.0/keystoneclient/exceptions.py
--- old/python-keystoneclient-3.21.0/keystoneclient/exceptions.py       
2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/keystoneclient/exceptions.py        
2020-04-11 20:36:29.000000000 +0200
@@ -376,6 +376,7 @@
         msg = _('Unable to sign or verify data.')
         super(CMSError, self).__init__(msg)
 
+
 EmptyCatalog = _exc.EmptyCatalog
 """The service catalog is empty.
 
@@ -398,6 +399,7 @@
 class MethodNotImplemented(ClientException):
     """Method not implemented by the keystoneclient API."""
 
+
 MissingAuthPlugin = _exc.MissingAuthPlugin
 """An authenticated request is required but no plugin available.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/fixture/__init__.py 
new/python-keystoneclient-4.0.0/keystoneclient/fixture/__init__.py
--- old/python-keystoneclient-3.21.0/keystoneclient/fixture/__init__.py 
2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/keystoneclient/fixture/__init__.py  
2020-04-11 20:36:29.000000000 +0200
@@ -28,6 +28,8 @@
 
 """
 
+# flake8: noqa: F405
+
 import warnings
 
 from keystoneclient.fixture.discovery import *  # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/tests/unit/v3/test_access_rules.py
 
new/python-keystoneclient-4.0.0/keystoneclient/tests/unit/v3/test_access_rules.py
--- 
old/python-keystoneclient-3.21.0/keystoneclient/tests/unit/v3/test_access_rules.py
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/python-keystoneclient-4.0.0/keystoneclient/tests/unit/v3/test_access_rules.py
   2020-04-11 20:36:29.000000000 +0200
@@ -0,0 +1,41 @@
+# 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 uuid
+
+from keystoneclient import exceptions
+from keystoneclient.tests.unit.v3 import utils
+from keystoneclient.v3 import access_rules
+
+
+class AccessRuleTests(utils.ClientTestCase, utils.CrudTests):
+    def setUp(self):
+        super(AccessRuleTests, self).setUp()
+        self.key = 'access_rule'
+        self.collection_key = 'access_rules'
+        self.model = access_rules.AccessRule
+        self.manager = self.client.access_rules
+        self.path_prefix = 'users/%s' % self.TEST_USER_ID
+
+    def new_ref(self, **kwargs):
+        kwargs = super(AccessRuleTests, self).new_ref(**kwargs)
+        kwargs.setdefault('path', uuid.uuid4().hex)
+        kwargs.setdefault('method', uuid.uuid4().hex)
+        kwargs.setdefault('service', uuid.uuid4().hex)
+        return kwargs
+
+    def test_update(self):
+        self.assertRaises(exceptions.MethodNotImplemented, self.manager.update)
+
+    def test_create(self):
+        self.assertRaises(exceptions.MethodNotImplemented, self.manager.create)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/tests/unit/v3/test_application_credentials.py
 
new/python-keystoneclient-4.0.0/keystoneclient/tests/unit/v3/test_application_credentials.py
--- 
old/python-keystoneclient-3.21.0/keystoneclient/tests/unit/v3/test_application_credentials.py
       2019-09-12 11:31:50.000000000 +0200
+++ 
new/python-keystoneclient-4.0.0/keystoneclient/tests/unit/v3/test_application_credentials.py
        2020-04-11 20:36:29.000000000 +0200
@@ -98,6 +98,27 @@
         super(ApplicationCredentialTests, self).test_create(ref=ref,
                                                             req_ref=req_ref)
 
+    def test_create_with_access_rules(self):
+        ref = self.new_ref(user=uuid.uuid4().hex)
+        access_rules = [
+            {
+                'method': 'GET',
+                'path': '/v3/projects',
+                'service': 'identity'
+            }
+        ]
+        ref['access_rules'] = access_rules
+        req_ref = ref.copy()
+        req_ref.pop('id')
+        user = req_ref.pop('user')
+
+        self.stub_entity('POST',
+                         ['users', user, self.collection_key],
+                         status_code=201, entity=req_ref)
+
+        super(ApplicationCredentialTests, self).test_create(ref=ref,
+                                                            req_ref=req_ref)
+
     def test_get(self):
         ref = self.new_ref(user=uuid.uuid4().hex)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/v3/access_rules.py 
new/python-keystoneclient-4.0.0/keystoneclient/v3/access_rules.py
--- old/python-keystoneclient-3.21.0/keystoneclient/v3/access_rules.py  
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-4.0.0/keystoneclient/v3/access_rules.py   
2020-04-11 20:36:29.000000000 +0200
@@ -0,0 +1,118 @@
+# Copyright 2019 SUSE LLC
+#
+# 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.
+
+from keystoneclient import base
+from keystoneclient import exceptions
+from keystoneclient.i18n import _
+
+
+class AccessRule(base.Resource):
+    """Represents an Identity access rule for application credentials.
+
+    Attributes:
+        * id: a uuid that identifies the access rule
+        * method: The request method that the application credential is
+             permitted to use for a given API endpoint
+        * path: The API path that the application credential is permitted to
+            access
+        * service: The service type identifier for the service that the
+             application credential is permitted to access
+
+    """
+
+    pass
+
+
+class AccessRuleManager(base.CrudManager):
+    """Manager class for manipulating Identity access rules."""
+
+    resource_class = AccessRule
+    collection_key = 'access_rules'
+    key = 'access_rule'
+
+    def get(self, access_rule, user=None):
+        """Retrieve an access rule.
+
+        :param access_rule: the access rule to be retrieved from the
+            server
+        :type access_rule: str or
+            :class:`keystoneclient.v3.access_rules.AccessRule`
+        :param string user: User ID
+
+        :returns: the specified access rule
+        :rtype:
+            :class:`keystoneclient.v3.access_rules.AccessRule`
+
+        """
+        user = user or self.client.user_id
+        self.base_url = '/users/%(user)s' % {'user': user}
+
+        return super(AccessRuleManager, self).get(
+            access_rule_id=base.getid(access_rule))
+
+    def list(self, user=None, **kwargs):
+        """List access rules.
+
+        :param string user: User ID
+
+        :returns: a list of access rules
+        :rtype: list of
+            :class:`keystoneclient.v3.access_rules.AccessRule`
+        """
+        user = user or self.client.user_id
+        self.base_url = '/users/%(user)s' % {'user': user}
+
+        return super(AccessRuleManager, self).list(**kwargs)
+
+    def find(self, user=None, **kwargs):
+        """Find an access rule with attributes matching ``**kwargs``.
+
+        :param string user: User ID
+
+        :returns: a list of matching access rules
+        :rtype: list of
+            :class:`keystoneclient.v3.access_rules.AccessRule`
+        """
+        user = user or self.client.user_id
+        self.base_url = '/users/%(user)s' % {'user': user}
+
+        return super(AccessRuleManager, self).find(**kwargs)
+
+    def delete(self, access_rule, user=None):
+        """Delete an access rule.
+
+        :param access_rule: the access rule to be deleted
+        :type access_rule: str or
+            :class:`keystoneclient.v3.access_rules.AccessRule`
+        :param string user: User ID
+
+        :returns: response object with 204 status
+        :rtype: :class:`requests.models.Response`
+
+        """
+        user = user or self.client.user_id
+        self.base_url = '/users/%(user)s' % {'user': user}
+
+        return super(AccessRuleManager, self).delete(
+            access_rule_id=base.getid(access_rule))
+
+    def update(self):
+        raise exceptions.MethodNotImplemented(
+            _('Access rules are immutable, updating is not'
+              ' supported.'))
+
+    def create(self):
+        raise exceptions.MethodNotImplemented(
+            _('Access rules can only be created as attributes of application '
+              'credentials.'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/v3/application_credentials.py 
new/python-keystoneclient-4.0.0/keystoneclient/v3/application_credentials.py
--- 
old/python-keystoneclient-3.21.0/keystoneclient/v3/application_credentials.py   
    2019-09-12 11:31:50.000000000 +0200
+++ 
new/python-keystoneclient-4.0.0/keystoneclient/v3/application_credentials.py    
    2020-04-11 20:36:29.000000000 +0200
@@ -33,6 +33,8 @@
         * roles: role assignments on the project
         * unrestricted: whether the application credential has restrictions
             applied
+        * access_rules: a list of access rules defining what API requests the
+            application credential may be used for
 
     """
 
@@ -48,7 +50,7 @@
 
     def create(self, name, user=None, secret=None, description=None,
                expires_at=None, roles=None,
-               unrestricted=False, **kwargs):
+               unrestricted=False, access_rules=None, **kwargs):
         """Create a credential.
 
         :param string name: application credential name
@@ -60,6 +62,7 @@
             or a list of dicts specifying role name and domain
         :param bool unrestricted: whether the application credential has
             restrictions applied
+        :param List access_rules: a list of dicts representing access rules
 
         :returns: the created application credential
         :rtype:
@@ -99,6 +102,7 @@
             expires_at=expires_str,
             roles=role_list,
             unrestricted=unrestricted,
+            access_rules=access_rules,
             **kwargs)
 
     def get(self, application_credential, user=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/keystoneclient/v3/client.py 
new/python-keystoneclient-4.0.0/keystoneclient/v3/client.py
--- old/python-keystoneclient-3.21.0/keystoneclient/v3/client.py        
2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/keystoneclient/v3/client.py 2020-04-11 
20:36:29.000000000 +0200
@@ -22,6 +22,7 @@
 from keystoneclient import exceptions
 from keystoneclient import httpclient
 from keystoneclient.i18n import _
+from keystoneclient.v3 import access_rules
 from keystoneclient.v3 import application_credentials
 from keystoneclient.v3 import auth
 from keystoneclient.v3.contrib import endpoint_filter
@@ -223,6 +224,9 @@
                 'deprecated as of the 1.7.0 release and may be removed in '
                 'the 2.0.0 release.', DeprecationWarning)
 
+        self.access_rules = (
+            access_rules.AccessRuleManager(self._adapter)
+        )
         self.application_credentials = (
             application_credentials.ApplicationCredentialManager(self._adapter)
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/python_keystoneclient.egg-info/PKG-INFO 
new/python-keystoneclient-4.0.0/python_keystoneclient.egg-info/PKG-INFO
--- old/python-keystoneclient-3.21.0/python_keystoneclient.egg-info/PKG-INFO    
2019-09-12 11:33:05.000000000 +0200
+++ new/python-keystoneclient-4.0.0/python_keystoneclient.egg-info/PKG-INFO     
2020-04-11 20:37:23.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: python-keystoneclient
-Version: 3.21.0
+Version: 4.0.0
 Summary: Client Library for OpenStack Identity
 Home-page: https://docs.openstack.org/python-keystoneclient/latest/
 Author: OpenStack
@@ -77,8 +77,7 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/python_keystoneclient.egg-info/SOURCES.txt 
new/python-keystoneclient-4.0.0/python_keystoneclient.egg-info/SOURCES.txt
--- old/python-keystoneclient-3.21.0/python_keystoneclient.egg-info/SOURCES.txt 
2019-09-12 11:33:05.000000000 +0200
+++ new/python-keystoneclient-4.0.0/python_keystoneclient.egg-info/SOURCES.txt  
2020-04-11 20:37:23.000000000 +0200
@@ -181,6 +181,7 @@
 keystoneclient/tests/unit/v3/client_fixtures.py
 keystoneclient/tests/unit/v3/saml2_fixtures.py
 keystoneclient/tests/unit/v3/test_access.py
+keystoneclient/tests/unit/v3/test_access_rules.py
 keystoneclient/tests/unit/v3/test_application_credentials.py
 keystoneclient/tests/unit/v3/test_auth.py
 keystoneclient/tests/unit/v3/test_auth_manager.py
@@ -227,6 +228,7 @@
 keystoneclient/v2_0/tokens.py
 keystoneclient/v2_0/users.py
 keystoneclient/v3/__init__.py
+keystoneclient/v3/access_rules.py
 keystoneclient/v3/application_credentials.py
 keystoneclient/v3/auth.py
 keystoneclient/v3/client.py
@@ -286,11 +288,13 @@
 releasenotes/notes/bp-application-credentials-27728ded876d7d5a.yaml
 releasenotes/notes/bp-domain-config-9566e672a98f4e7f.yaml
 
releasenotes/notes/bp-pci-dss-query-password-expired-users-b0c4b1bbdcf33f16.yaml
+releasenotes/notes/bp-whitelist-extension-for-app-creds-d03526e52e3edcce.yaml
 releasenotes/notes/bug-1615076-26962c85aeaf288c.yaml
 releasenotes/notes/bug-1616105-cc8b85eb056e99e2.yaml
 releasenotes/notes/bug-1641674-4862454115265e76.yaml
 releasenotes/notes/bug-1654847-d2e9df994c7b617f.yaml
 releasenotes/notes/deprecated_auth-d2a2bf537bdb88d3.yaml
+releasenotes/notes/drop-py-2-7-5ac18e82de83fcfa.yaml
 releasenotes/notes/implied_roles-ea39d3c3d998d482.yaml
 releasenotes/notes/ksc_2.1.0-739ded9c4c3f8aaa.yaml
 
releasenotes/notes/list_projects_filtered_by_the_parent_project-a873974f197c1e37.yaml
@@ -312,6 +316,7 @@
 releasenotes/source/queens.rst
 releasenotes/source/rocky.rst
 releasenotes/source/stein.rst
+releasenotes/source/train.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/python_keystoneclient.egg-info/pbr.json 
new/python-keystoneclient-4.0.0/python_keystoneclient.egg-info/pbr.json
--- old/python-keystoneclient-3.21.0/python_keystoneclient.egg-info/pbr.json    
2019-09-12 11:33:05.000000000 +0200
+++ new/python-keystoneclient-4.0.0/python_keystoneclient.egg-info/pbr.json     
2020-04-11 20:37:23.000000000 +0200
@@ -1 +1 @@
-{"git_version": "79f150f", "is_release": true}
\ No newline at end of file
+{"git_version": "b58ebe2", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/releasenotes/notes/bp-whitelist-extension-for-app-creds-d03526e52e3edcce.yaml
 
new/python-keystoneclient-4.0.0/releasenotes/notes/bp-whitelist-extension-for-app-creds-d03526e52e3edcce.yaml
--- 
old/python-keystoneclient-3.21.0/releasenotes/notes/bp-whitelist-extension-for-app-creds-d03526e52e3edcce.yaml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/python-keystoneclient-4.0.0/releasenotes/notes/bp-whitelist-extension-for-app-creds-d03526e52e3edcce.yaml
       2020-04-11 20:36:29.000000000 +0200
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for creating access rules as an attribute of application
+    credentials as well as for retrieving and deleting them.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/releasenotes/notes/drop-py-2-7-5ac18e82de83fcfa.yaml
 
new/python-keystoneclient-4.0.0/releasenotes/notes/drop-py-2-7-5ac18e82de83fcfa.yaml
--- 
old/python-keystoneclient-3.21.0/releasenotes/notes/drop-py-2-7-5ac18e82de83fcfa.yaml
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/python-keystoneclient-4.0.0/releasenotes/notes/drop-py-2-7-5ac18e82de83fcfa.yaml
        2020-04-11 20:36:29.000000000 +0200
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Python 2.7 support has been dropped. Last release of python-keystoneclient
+    to support python 2.7 is OpenStack Train. The minimum version of Python now
+    supported is Python 3.6.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/releasenotes/source/index.rst 
new/python-keystoneclient-4.0.0/releasenotes/source/index.rst
--- old/python-keystoneclient-3.21.0/releasenotes/source/index.rst      
2019-09-12 11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/releasenotes/source/index.rst       
2020-04-11 20:36:29.000000000 +0200
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   train
    stein
    rocky
    queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-3.21.0/releasenotes/source/train.rst 
new/python-keystoneclient-4.0.0/releasenotes/source/train.rst
--- old/python-keystoneclient-3.21.0/releasenotes/source/train.rst      
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-4.0.0/releasenotes/source/train.rst       
2020-04-11 20:36:29.000000000 +0200
@@ -0,0 +1,6 @@
+===================================
+ Train Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/train
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/setup.cfg 
new/python-keystoneclient-4.0.0/setup.cfg
--- old/python-keystoneclient-3.21.0/setup.cfg  2019-09-12 11:33:05.000000000 
+0200
+++ new/python-keystoneclient-4.0.0/setup.cfg   2020-04-11 20:37:23.000000000 
+0200
@@ -6,6 +6,7 @@
 author = OpenStack
 author-email = [email protected]
 home-page = https://docs.openstack.org/python-keystoneclient/latest/
+python-requires = >=3.6
 classifier = 
        Environment :: OpenStack
        Intended Audience :: Information Technology
@@ -13,8 +14,6 @@
        License :: OSI Approved :: Apache Software License
        Operating System :: POSIX :: Linux
        Programming Language :: Python
-       Programming Language :: Python :: 2
-       Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.6
        Programming Language :: Python :: 3.7
@@ -37,21 +36,12 @@
        v3scopedsaml = keystoneclient.contrib.auth.v3.saml2:Saml2ScopedToken
        v3unscopedadfs = keystoneclient.contrib.auth.v3.saml2:ADFSUnscopedToken
 
-[build_sphinx]
-source-dir = doc/source
-build-dir = doc/build
-all_files = 1
-warning-is-error = 1
-
 [pbr]
 autodoc_tree_index_modules = True
 autodoc_tree_excludes = 
        setup.py
        keystoneclient/tests/
 
-[upload_sphinx]
-upload-dir = doc/build/html
-
 [compile_catalog]
 directory = keystoneclient/locale
 domain = keystoneclient
@@ -66,9 +56,6 @@
 mapping_file = babel.cfg
 output_file = keystoneclient/locale/keystoneclient.pot
 
-[wheel]
-universal = 1
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/setup.py 
new/python-keystoneclient-4.0.0/setup.py
--- old/python-keystoneclient-3.21.0/setup.py   2019-09-12 11:31:50.000000000 
+0200
+++ new/python-keystoneclient-4.0.0/setup.py    2020-04-11 20:36:29.000000000 
+0200
@@ -13,17 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
 import setuptools
 
-# In python < 2.7.4, a lazy loading of package `pbr` will break
-# setuptools if some other modules registered functions in `atexit`.
-# solution from: http://bugs.python.org/issue15881#msg170215
-try:
-    import multiprocessing  # noqa
-except ImportError:
-    pass
-
 setuptools.setup(
     setup_requires=['pbr>=2.0.0'],
     pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/test-requirements.txt 
new/python-keystoneclient-4.0.0/test-requirements.txt
--- old/python-keystoneclient-3.21.0/test-requirements.txt      2019-09-12 
11:31:50.000000000 +0200
+++ new/python-keystoneclient-4.0.0/test-requirements.txt       2020-04-11 
20:36:29.000000000 +0200
@@ -2,7 +2,7 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-hacking>=1.1.0,<1.2.0 # Apache-2.0
+hacking>=3.0,<3.1.0 # Apache-2.0
 flake8-docstrings==0.2.1.post1 # MIT
 
 coverage!=4.4,>=4.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-3.21.0/tox.ini 
new/python-keystoneclient-4.0.0/tox.ini
--- old/python-keystoneclient-3.21.0/tox.ini    2019-09-12 11:31:50.000000000 
+0200
+++ new/python-keystoneclient-4.0.0/tox.ini     2020-04-11 20:36:29.000000000 
+0200
@@ -1,7 +1,8 @@
 [tox]
-minversion = 2.5.0
+minversion = 3.1.1
 skipsdist = True
-envlist = py27,py37,pep8,releasenotes
+envlist = py37,pep8,releasenotes
+ignore_basepython_conflict = True
 
 [testenv]
 usedevelop = True
@@ -17,25 +18,22 @@
 commands = find . -type f -name "*.pyc" -delete
            stestr run --slowest {posargs}
 whitelist_externals = find
+basepython = python3
 
 [testenv:pep8]
-basepython = python3
 commands =
   flake8
   bandit -r keystoneclient -x tests -n5
 
 [testenv:bandit]
-basepython = python3
 # NOTE(browne): This is required for the integration test job of the bandit
 # project. Please do not remove.
 commands = bandit -r keystoneclient -x tests -n5
 
 [testenv:venv]
-basepython = python3
 commands = {posargs}
 
 [testenv:cover]
-basepython = python3
 setenv =
     PYTHON=coverage run --source keystoneclient --parallel-mode
 commands =
@@ -46,11 +44,9 @@
     coverage report
 
 [testenv:debug]
-basepython = python3
 commands = oslo_debug_helper -t keystoneclient/tests {posargs}
 
 [testenv:functional]
-basepython = python3
 setenv = {[testenv]setenv}
          OS_TEST_PATH=./keystoneclient/tests/functional
 passenv = OS_*
@@ -62,17 +58,17 @@
 # D103: Missing docstring in public function
 # D104: Missing docstring in public package
 # D203: 1 blank line required before class docstring (deprecated in pep257)
-ignore = D100,D101,D102,D103,D104,D203
+# W504 line break after binary operator
+# F601 dictionary key repeated with different value
+ignore = D100,D101,D102,D103,D104,D203,W504,F601
 show-source = True
 exclude = .venv,.tox,dist,doc,*egg,build
 
 [testenv:docs]
-basepython = python3
 commands = python setup.py build_sphinx
 deps = -r{toxinidir}/doc/requirements.txt
 
 [testenv:pdf-docs]
-basepython = python3
 envdir = {toxworkdir}/docs
 deps = {[testenv:docs]deps}
 whitelist_externals =
@@ -84,7 +80,6 @@
   make -C doc/build/pdf
 
 [testenv:releasenotes]
-basepython = python3
 commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html 
releasenotes/source releasenotes/build/html
 deps = -r{toxinidir}/doc/requirements.txt
 
@@ -93,7 +88,6 @@
     keystoneclient.i18n
 
 [testenv:bindep]
-basepython = python3
 # Do not install any requirements. We want this to be fast and work even if
 # system dependencies are missing, since it's used to tell you what system
 # dependencies are missing! This also means that bindep must be installed
@@ -102,7 +96,6 @@
 commands = bindep test
 
 [testenv:lower-constraints]
-basepython = python3
 deps =
   -c{toxinidir}/lower-constraints.txt
   -r{toxinidir}/test-requirements.txt


Reply via email to