Hello community,

here is the log from the commit of package python-python3-openid for 
openSUSE:Factory checked in at 2020-08-06 10:41:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python3-openid (Old)
 and      /work/SRC/openSUSE:Factory/.python-python3-openid.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python3-openid"

Thu Aug  6 10:41:30 2020 rev:4 rq:824574 version:3.2.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python3-openid/python-python3-openid.changes  
    2020-06-09 00:05:34.905485978 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-python3-openid.new.3399/python-python3-openid.changes
    2020-08-06 10:42:03.514118187 +0200
@@ -1,0 +2,8 @@
+Wed Aug  5 08:00:09 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- update to 3.2.0
+  * Import randomString from cryptutil rather than reimplementing
+  * Use non-root logger
+  * Update supported Python versions
+
+-------------------------------------------------------------------

Old:
----
  python3-openid-3.1.0.tar.gz

New:
----
  python3-openid-3.2.0.tar.gz

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

Other differences:
------------------
++++++ python-python3-openid.spec ++++++
--- /var/tmp/diff_new_pack.gcU2jD/_old  2020-08-06 10:42:04.798118829 +0200
+++ /var/tmp/diff_new_pack.gcU2jD/_new  2020-08-06 10:42:04.802118832 +0200
@@ -21,7 +21,7 @@
 # tests are partly broken
 %bcond_without     test
 Name:           python-python3-openid
-Version:        3.1.0
+Version:        3.2.0
 Release:        0
 Summary:        OpenID support for Python
 License:        Apache-2.0

++++++ python3-openid-3.1.0.tar.gz -> python3-openid-3.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/PKG-INFO 
new/python3-openid-3.2.0/PKG-INFO
--- old/python3-openid-3.1.0/PKG-INFO   2017-02-22 17:03:46.000000000 +0100
+++ new/python3-openid-3.2.0/PKG-INFO   2020-06-29 14:15:41.878536200 +0200
@@ -1,12 +1,14 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: python3-openid
-Version: 3.1.0
+Version: 3.2.0
 Summary: OpenID support for modern servers and consumers.
 Home-page: http://github.com/necaris/python3-openid
 Author: Rami Chowdhury
 Author-email: [email protected]
+Maintainer: Rami Chowdhury
+Maintainer-email: [email protected]
 License: UNKNOWN
-Download-URL: http://github.com/necaris/python3-openid/tarball/v3.1.0
+Download-URL: http://github.com/necaris/python3-openid/tarball/v3.2.0
 Description: This is a set of Python packages to support use of
         the OpenID decentralized identity system in your application, update 
to Python
         3.  Want to enable single sign-on for your web site?  Use the 
openid.consumer
@@ -24,3 +26,5 @@
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI 
Tools/Libraries
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: System :: Systems Administration :: 
Authentication/Directory
+Provides-Extra: mysql
+Provides-Extra: postgresql
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/README.md 
new/python3-openid-3.2.0/README.md
--- old/python3-openid-3.1.0/README.md  1970-01-01 01:00:00.000000000 +0100
+++ new/python3-openid-3.2.0/README.md  2020-04-12 20:41:50.000000000 +0200
@@ -0,0 +1,66 @@
+_NOTE_: This started out as a fork of the Python OpenID library, with changes
+to make it Python 3 compatible. It's now a port of that library, including
+cleanups and updates to the code in general.
+
+[![Build 
Status](https://travis-ci.org/necaris/python3-openid.svg?branch=master)](https://travis-ci.org/necaris/python3-openid)
+[![Coverage 
Status](https://coveralls.io/repos/necaris/python3-openid/badge.svg?branch=master&service=github)](https://coveralls.io/github/necaris/python3-openid?branch=master)
+
+# requirements
+
+- Python 3.5+ (tested on CPython 3.5-3.8, and PyPy3 (although some tests may 
fail on PyPy))
+
+# installation
+
+The recommended way is to install from PyPI with `pip`:
+
+    pip install python3-openid
+
+Alternatively, you can run the following command from a source checkout:
+
+    python setup.py install
+
+If you want to use MySQL or PostgreSQL storage options, be sure to install
+the relevant "extra":
+
+    pip install python3-openid[mysql]
+
+# getting started
+
+The library should follow the existing `python-openid` API as closely as 
possible.
+
+_NOTE_: documentation will be auto-generated as soon as I can figure out how to
+update the documentation tools.
+
+_NOTE_: The examples directory includes an example server and consumer
+implementation. See the README file in that directory for more
+information on running the examples.
+
+# logging
+
+This library offers a logging hook that will record unexpected
+conditions that occur in library code. If a condition is recoverable,
+the library will recover and issue a log message. If it is not
+recoverable, the library will raise an exception. See the
+documentation for the `openid.oidutil` module for more on the logging
+hook.
+
+# documentation
+
+The documentation in this library is in Epydoc format, which is
+detailed at:
+
+http://epydoc.sourceforge.net/
+
+# contact
+
+Bug reports, suggestions, and feature requests are [very welcome](issues)!
+
+There are also the `#python-openid` and `#openid` channels on FreeNode IRC.
+
+# contributors
+
+- @necaris
+- @moreati
+- @vstoykov
+- @earthday
+- @bkmgit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/admin/build_discover_data.py 
new/python3-openid-3.2.0/admin/build_discover_data.py
--- old/python3-openid-3.1.0/admin/build_discover_data.py       2017-02-22 
16:32:14.000000000 +0100
+++ new/python3-openid-3.2.0/admin/build_discover_data.py       2020-04-12 
19:26:16.000000000 +0200
@@ -53,8 +53,8 @@
                                          discoverdata.example_xrds)
 
         out_file_name = os.path.join(out_dir, test_name)
-        out_file = open(out_file_name, 'w', encoding="utf-8")
-        out_file.write(data)
+        with open(out_file_name, 'w', encoding="utf-8") as out_file:
+            out_file.write(data)
 
     manifest = [manifest_header]
     for success, input_name, id_name, result_name in discoverdata.testlist:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/background-associations.txt 
new/python3-openid-3.2.0/background-associations.txt
--- old/python3-openid-3.1.0/background-associations.txt        2017-01-15 
04:10:11.000000000 +0100
+++ new/python3-openid-3.2.0/background-associations.txt        2020-04-12 
19:48:01.000000000 +0200
@@ -73,19 +73,19 @@
 
   def refresh(consumer, endpoint):
       if consumer.store.getAssociation(endpoint.server_url):
-          logging.info("We don't need to associate with %r", 
endpoint.server_url)
+          logger.info("We don't need to associate with %r", 
endpoint.server_url)
           return
 
-      logging.info("Associating with %r", endpoint.server_url)
+      logger.info("Associating with %r", endpoint.server_url)
       now = time.time()
       assoc = consumer._negotiateAssociation(endpoint)
       if assoc:
           elapsed = time.time() - now
-          logging.info('(%0.2f seconds) Associated with %r', elapsed,
+          logger.info('(%0.2f seconds) Associated with %r', elapsed,
                        endpoint.server_url)
           consumer.store.storeAssociation(endpoint.server_url, assoc)
       else:
-          logging.error('Failed to make an association with %r',
+          logger.error('Failed to make an association with %r',
                         endpoint.server_url)
 
 The code in this example logs the amount of time that the association
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/examples/consumer.py 
new/python3-openid-3.2.0/examples/consumer.py
--- old/python3-openid-3.1.0/examples/consumer.py       2017-02-22 
16:32:14.000000000 +0100
+++ new/python3-openid-3.2.0/examples/consumer.py       2020-04-12 
20:41:50.000000000 +0200
@@ -9,14 +9,14 @@
 __copyright__ = 'Copyright 2005-2008, Janrain, Inc.'
 
 from http.cookies import SimpleCookie
-import cgi
+import html
 import urllib.parse
 import cgitb
 import sys
 
 
 def quoteattr(s):
-    qs = cgi.escape(s, 1)
+    qs = html.escape(s, 1)
     return '"%s"' % (qs, )
 
 
@@ -42,6 +42,7 @@
 from openid.cryptutil import randomString
 from openid.fetchers import setDefaultFetcher, Urllib2Fetcher
 from openid.extensions import pape, sreg
+from random import randrange
 
 # Used with an OpenID provider affiliate program.
 OPENID_PROVIDER_NAME = 'MyOpenID'
@@ -132,7 +133,7 @@
         try:
             self.parsed_uri = urllib.parse.urlparse(self.path)
             self.query = {}
-            for k, v in cgi.parse_qsl(self.parsed_uri[4]):
+            for k, v in urllib.parse.parse_qsl(self.parsed_uri[4]):
                 self.query[k] = v
 
             path = self.parsed_uri[2]
@@ -179,7 +180,7 @@
             request = oidconsumer.begin(openid_url)
         except consumer.DiscoveryFailure as exc:
             fetch_error_string = 'Error in discovery: %s' % (
-                cgi.escape(str(exc)))
+                html.escape(str(exc)))
             self.render(
                 fetch_error_string,
                 css_class='error',
@@ -187,7 +188,7 @@
         else:
             if request is None:
                 msg = 'No OpenID services found for <code>%s</code>' % (
-                    cgi.escape(openid_url), )
+                    html.escape(openid_url), )
                 self.render(msg, css_class='error', form_contents=openid_url)
             else:
                 # Then, ask the library to begin the authorization.
@@ -249,7 +250,7 @@
             # URL that we were verifying. We include it in the error
             # message to help the user figure out what happened.
             fmt = "Verification of %s failed: %s"
-            message = fmt % (cgi.escape(display_identifier), info.message)
+            message = fmt % (html.escape(display_identifier), info.message)
         elif info.status == consumer.SUCCESS:
             # Success means that the transaction completed without
             # error. If info is None, it means that the user cancelled
@@ -260,7 +261,7 @@
             # was a real application, we would do our login,
             # comment posting, etc. here.
             fmt = "You have successfully verified %s as your identity."
-            message = fmt % (cgi.escape(display_identifier), )
+            message = fmt % (html.escape(display_identifier), )
             sreg_resp = sreg.SRegResponse.fromSuccessResponse(info)
             pape_resp = pape.Response.fromSuccessResponse(info)
             if info.endpoint.canonicalID:
@@ -269,7 +270,7 @@
                 # way their account with you is not compromised if their
                 # i-name registration expires and is bought by someone else.
                 message += ("  This is an i-name, and its persistent ID is %s"
-                            % (cgi.escape(info.endpoint.canonicalID), ))
+                            % (html.escape(info.endpoint.canonicalID), ))
         elif info.status == consumer.CANCEL:
             # cancelled
             message = 'Verification cancelled'
@@ -322,7 +323,7 @@
             odd = ' class="odd"'
             for k, v in sreg_list:
                 field_name = sreg.data_fields.get(k, k)
-                value = cgi.escape(v.encode('UTF-8'))
+                value = html.escape(v.encode('UTF-8'))
                 self.wfile.write(
                     bytes('<tr%s><td>%s</td><td>%s</td></tr>' % (
                         odd, field_name, value), 'utf-8'))
@@ -345,7 +346,7 @@
 
             for policy_uri in pape_data.auth_policies:
                 self.wfile.write(
-                    bytes('<li><tt>%s</tt></li>' % (cgi.escape(policy_uri), ),
+                    bytes('<li><tt>%s</tt></li>' % (html.escape(policy_uri), ),
                           'utf-8'))
 
             if not pape_data.auth_policies:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/examples/server.py 
new/python3-openid-3.2.0/examples/server.py
--- old/python3-openid-3.1.0/examples/server.py 2017-02-22 16:32:14.000000000 
+0100
+++ new/python3-openid-3.2.0/examples/server.py 2020-04-12 20:41:50.000000000 
+0200
@@ -4,16 +4,17 @@
 
 from http.server import HTTPServer, BaseHTTPRequestHandler
 from urllib.parse import urlparse
+from urllib.parse import parse_qsl
 
 import time
 import http.cookies
-import cgi
+import html
 import cgitb
 import sys
 
 
 def quoteattr(s):
-    qs = cgi.escape(s, 1)
+    qs = html.escape(s, 1)
     return '"%s"' % (qs, )
 
 
@@ -68,7 +69,7 @@
         try:
             self.parsed_uri = urlparse(self.path)
             self.query = {}
-            for k, v in cgi.parse_qsl(self.parsed_uri[4]):
+            for k, v in parse_qsl(self.parsed_uri[4]):
                 self.query[k] = v
 
             self.setUser()
@@ -112,7 +113,7 @@
             post_data = self.rfile.read(content_length)
 
             self.query = {}
-            for k, v in cgi.parse_qsl(post_data):
+            for k, v in parse_qsl(post_data):
                 self.query[k] = v
 
             path = self.parsed_uri[2]
@@ -231,7 +232,7 @@
             webresponse = self.server.openid.encodeResponse(response)
         except server.EncodingError as why:
             text = why.response.encodeToKVForm()
-            self.showErrorPage('<pre>%s</pre>' % cgi.escape(text))
+            self.showErrorPage('<pre>%s</pre>' % html.escape(text))
             return
 
         self.send_response(webresponse.code)
@@ -275,7 +276,7 @@
 
         def link(url):
             url_attr = quoteattr(url)
-            url_text = cgi.escape(url)
+            url_text = html.escape(url)
             return '<a href=%s><code>%s</code></a>' % (url_attr, url_text)
 
         def term(url, text):
@@ -446,7 +447,7 @@
         approved_trust_roots = []
         for (aident, trust_root) in list(self.server.approved.keys()):
             if aident == ident:
-                trs = '<li><tt>%s</tt></li>\n' % cgi.escape(trust_root)
+                trs = '<li><tt>%s</tt></li>\n' % html.escape(trust_root)
                 approved_trust_roots.append(trs)
 
         if approved_trust_roots:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/__init__.py 
new/python3-openid-3.2.0/openid/__init__.py
--- old/python3-openid-3.1.0/openid/__init__.py 2017-02-22 16:43:07.000000000 
+0100
+++ new/python3-openid-3.2.0/openid/__init__.py 2020-06-29 14:10:18.000000000 
+0200
@@ -23,7 +23,8 @@
     and limitations under the License.
 """
 
-version_info = (3, 1, 0)
+version_info = (3, 2, 0)
+
 
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/consumer/consumer.py 
new/python3-openid-3.2.0/openid/consumer/consumer.py
--- old/python3-openid-3.1.0/openid/consumer/consumer.py        2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/consumer/consumer.py        2020-04-12 
19:48:01.000000000 +0200
@@ -219,6 +219,7 @@
     'SETUP_NEEDED',
 ]
 
+logger = logging.getLogger(__name__)
 
 def makeKVPost(request_message, server_url):
     """Make a Direct Request to an OpenID Provider and return the
@@ -672,7 +673,7 @@
         try:
             self._verifyReturnToArgs(message.toPostArgs())
         except ProtocolError as why:
-            logging.exception("Verifying return_to arguments: %s" % (why, ))
+            logger.exception("Verifying return_to arguments: %s" % (why, ))
             return False
 
         # Check the return_to base URL against the one in the message.
@@ -737,7 +738,7 @@
 
         # Verify discovery information:
         endpoint = self._verifyDiscoveryResults(message, endpoint)
-        logging.info("Received id_res response from %s using association %s" %
+        logger.info("Received id_res response from %s using association %s" %
                      (endpoint.server_url,
                       message.getArg(OPENID_NS, 'assoc_handle')))
 
@@ -933,10 +934,10 @@
         # endpoints and responses that didn't match the original
         # request.
         if not endpoint:
-            logging.info('No pre-discovered information supplied.')
+            logger.info('No pre-discovered information supplied.')
             endpoint = self._discoverAndVerify(to_match.claimed_id, [to_match])
         elif endpoint.isOPIdentifier():
-            logging.info(
+            logger.info(
                 'Pre-discovered information based on OP-ID; need to 
rediscover.'
             )
             endpoint = self._discoverAndVerify(to_match.claimed_id, [to_match])
@@ -947,10 +948,10 @@
             try:
                 self._verifyDiscoverySingle(endpoint, to_match)
             except ProtocolError as e:
-                logging.exception(
+                logger.exception(
                     "Error attempting to use stored discovery information: " +
                     str(e))
-                logging.info("Attempting discovery to verify endpoint")
+                logger.info("Attempting discovery to verify endpoint")
                 endpoint = self._discoverAndVerify(to_match.claimed_id,
                                                    [to_match])
 
@@ -993,10 +994,10 @@
                 except TypeURIMismatch:
                     self._verifyDiscoverySingle(endpoint, to_match_1_0)
             except ProtocolError as e:
-                logging.exception(
+                logger.exception(
                     "Error attempting to use stored discovery information: " +
                     str(e))
-                logging.info("Attempting discovery to verify endpoint")
+                logger.info("Attempting discovery to verify endpoint")
             else:
                 return endpoint
 
@@ -1066,7 +1067,7 @@
 
         @raises DiscoveryFailure: when discovery fails.
         """
-        logging.info('Performing discovery on %s' % (claimed_id, ))
+        logger.info('Performing discovery on %s' % (claimed_id, ))
         _, services = self._discover(claimed_id)
         if not services:
             raise DiscoveryFailure('No OpenID information found at %s' %
@@ -1092,10 +1093,10 @@
                     # succeeded. Return this endpoint.
                     return endpoint
         else:
-            logging.error('Discovery verification failure for %s' %
+            logger.error('Discovery verification failure for %s' %
                           (claimed_id, ))
             for failure_message in failure_messages:
-                logging.error(' * Endpoint mismatch: ' + failure_message)
+                logger.error(' * Endpoint mismatch: ' + failure_message)
 
             raise DiscoveryFailure(
                 'No matching endpoint found after discovering %s' %
@@ -1107,7 +1108,7 @@
         @returns: True if the request is valid.
         @rtype: bool
         """
-        logging.info('Using OpenID check_authentication')
+        logger.info('Using OpenID check_authentication')
         request = self._createCheckAuthRequest(message)
         if request is None:
             return False
@@ -1115,7 +1116,7 @@
             response = self._makeKVPost(request, server_url)
         except (fetchers.HTTPFetchingError, ServerError) as e:
             e0 = e.args[0]
-            logging.exception('check_authentication failed: %s' % e0)
+            logger.exception('check_authentication failed: %s' % e0)
             return False
         else:
             return self._processCheckAuthResponse(response, server_url)
@@ -1129,12 +1130,12 @@
             if isinstance(signed, bytes):
                 signed = str(signed, encoding="utf-8")
             for k in signed.split(','):
-                logging.info(k)
+                logger.info(k)
                 val = message.getAliasedArg(k)
 
                 # Signed value is missing
                 if val is None:
-                    logging.info('Missing signed field %r' % (k, ))
+                    logger.info('Missing signed field %r' % (k, ))
                     return None
 
         check_auth_message = message.copy()
@@ -1149,10 +1150,10 @@
 
         invalidate_handle = response.getArg(OPENID_NS, 'invalidate_handle')
         if invalidate_handle is not None:
-            logging.info('Received "invalidate_handle" from server %s' %
+            logger.info('Received "invalidate_handle" from server %s' %
                          (server_url, ))
             if self.store is None:
-                logging.error('Unexpectedly got invalidate_handle without '
+                logger.error('Unexpectedly got invalidate_handle without '
                               'a store!')
             else:
                 self.store.removeAssociation(server_url, invalidate_handle)
@@ -1160,7 +1161,7 @@
         if is_valid == 'true':
             return True
         else:
-            logging.error('Server responds that checkAuth call is not valid')
+            logger.error('Server responds that checkAuth call is not valid')
             return False
 
     def _getAssociation(self, endpoint):
@@ -1212,7 +1213,7 @@
                 except ServerError as why:
                     # Do not keep trying, since it rejected the
                     # association type that it told us to use.
-                    logging.error(
+                    logger.error(
                         'Server %s refused its suggested association '
                         'type: session_type=%s, assoc_type=%s' % (
                             endpoint.server_url, session_type, assoc_type))
@@ -1235,7 +1236,7 @@
         # should be considered a total failure.
         if server_error.error_code != 'unsupported-type' or \
                server_error.message.isOpenID1():
-            logging.error(
+            logger.error(
                 'Server error when requesting an association from %r: %s' %
                 (endpoint.server_url, server_error.error_text))
             return None
@@ -1243,7 +1244,7 @@
         # The server didn't like the association/session type
         # that we sent, and it sent us back a message that
         # might tell us how to handle it.
-        logging.error('Unsupported association type %s: %s' %
+        logger.error('Unsupported association type %s: %s' %
                       (assoc_type, server_error.error_text, ))
 
         # Extract the session_type and assoc_type from the
@@ -1252,13 +1253,13 @@
         session_type = server_error.message.getArg(OPENID_NS, 'session_type')
 
         if assoc_type is None or session_type is None:
-            logging.error('Server responded with unsupported association '
+            logger.error('Server responded with unsupported association '
                           'session but did not supply a fallback.')
             return None
         elif not self.negotiator.isAllowed(assoc_type, session_type):
             fmt = ('Server sent unsupported session/association type: '
                    'session_type=%s, assoc_type=%s')
-            logging.error(fmt % (session_type, assoc_type))
+            logger.error(fmt % (session_type, assoc_type))
             return None
         else:
             return assoc_type, session_type
@@ -1278,18 +1279,18 @@
         try:
             response = self._makeKVPost(args, endpoint.server_url)
         except fetchers.HTTPFetchingError as why:
-            logging.exception('openid.associate request failed: %s' % (why, ))
+            logger.exception('openid.associate request failed: %s' % (why, ))
             return None
 
         try:
             assoc = self._extractAssociation(response, assoc_session)
         except KeyError as why:
-            logging.exception(
+            logger.exception(
                 'Missing required parameter in response from %s: %s' %
                 (endpoint.server_url, why))
             return None
         except ProtocolError as why:
-            logging.exception('Protocol error parsing response from %s: %s' %
+            logger.exception('Protocol error parsing response from %s: %s' %
                               (endpoint.server_url, why))
             return None
         else:
@@ -1366,7 +1367,7 @@
         # OpenID 1, but we'll accept it anyway, while issuing a
         # warning.
         if session_type == 'no-encryption':
-            logging.warning('OpenID server sent "no-encryption"'
+            logger.warning('OpenID server sent "no-encryption"'
                             'for OpenID 1.X')
 
         # Missing or empty session type is the way to flag a
@@ -1616,7 +1617,7 @@
         else:
             assoc_log_msg = 'using stateless mode.'
 
-        logging.info("Generated %s request to %s %s" %
+        logger.info("Generated %s request to %s %s" %
                      (mode, self.endpoint.server_url, assoc_log_msg))
 
         return message
@@ -1804,7 +1805,7 @@
 
         for key in msg_args.keys():
             if not self.isSigned(ns_uri, key):
-                logging.info(
+                logger.info(
                     "SuccessResponse.getSignedNS: (%s, %s) not signed." %
                     (ns_uri, key))
                 return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/consumer/discover.py 
new/python3-openid-3.2.0/openid/consumer/discover.py
--- old/python3-openid-3.1.0/openid/consumer/discover.py        2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/consumer/discover.py        2020-04-12 
19:48:01.000000000 +0200
@@ -37,6 +37,8 @@
 from openid.message import OPENID1_NS as OPENID_1_0_MESSAGE_NS
 from openid.message import OPENID2_NS as OPENID_2_0_MESSAGE_NS
 
+logger = logging.getLogger(__name__)
+
 
 class OpenIDServiceEndpoint(object):
     """Object representing an OpenID service endpoint.
@@ -418,7 +420,7 @@
         for service_element in services:
             endpoints.extend(flt.getServiceEndpoints(iname, service_element))
     except XRDSError:
-        logging.exception('xrds error on ' + iname)
+        logger.exception('xrds error on ' + iname)
 
     for endpoint in endpoints:
         # Is there a way to pass this through the filter to the endpoint
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python3-openid-3.1.0/openid/extensions/draft/pape5.py 
new/python3-openid-3.2.0/openid/extensions/draft/pape5.py
--- old/python3-openid-3.1.0/openid/extensions/draft/pape5.py   2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/extensions/draft/pape5.py   2020-04-12 
19:26:16.000000000 +0200
@@ -32,7 +32,7 @@
 AUTH_NONE = \
     'http://schemas.openid.net/pape/policies/2007/06/none'
 
-TIME_VALIDATOR = re.compile('^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$')
+TIME_VALIDATOR = re.compile(r'^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$')
 
 LEVELS_NIST = 
'http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf'
 LEVELS_JISA = 'http://www.jisa.or.jp/spec/auth_level.html'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/extensions/sreg.py 
new/python3-openid-3.2.0/openid/extensions/sreg.py
--- old/python3-openid-3.1.0/openid/extensions/sreg.py  2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/extensions/sreg.py  2020-04-12 
19:48:01.000000000 +0200
@@ -40,6 +40,8 @@
 from openid.extension import Extension
 import logging
 
+logger = logging.getLogger(__name__)
+
 try:
     str  #pylint:disable-msg=W0104
 except NameError:
@@ -97,7 +99,7 @@
 try:
     registerNamespaceAlias(ns_uri_1_1, 'sreg')
 except NamespaceAliasRegistrationError as e:
-    logging.exception('registerNamespaceAlias(%r, %r) failed: %s' %
+    logger.exception('registerNamespaceAlias(%r, %r) failed: %s' %
                       (ns_uri_1_1, 'sreg', str(e), ))
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/kvform.py 
new/python3-openid-3.2.0/openid/kvform.py
--- old/python3-openid-3.1.0/openid/kvform.py   2017-02-22 16:32:14.000000000 
+0100
+++ new/python3-openid-3.2.0/openid/kvform.py   2020-04-12 19:48:01.000000000 
+0200
@@ -1,5 +1,7 @@
 import logging
 
+logger = logging.getLogger(__name__)
+
 __all__ = ['seqToKV', 'kvToSeq', 'dictToKV', 'kvToDict']
 
 
@@ -23,7 +25,7 @@
         if strict:
             raise KVFormError(formatted)
         else:
-            logging.warning(formatted)
+            logger.warning(formatted)
 
     lines = []
     for k, v in seq:
@@ -79,7 +81,7 @@
         if strict:
             raise KVFormError(formatted)
         else:
-            logging.warning(formatted)
+            logger.warning(formatted)
 
     if isinstance(data, bytes):
         data = data.decode("utf-8")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/oidutil.py 
new/python3-openid-3.2.0/openid/oidutil.py
--- old/python3-openid-3.1.0/openid/oidutil.py  2017-02-22 16:32:14.000000000 
+0100
+++ new/python3-openid-3.2.0/openid/oidutil.py  2020-04-12 21:15:02.000000000 
+0200
@@ -1,8 +1,5 @@
 """This module contains general utility code that is used throughout
 the library.
-
-For users of this library, the C{L{log}} function is probably the most
-interesting.
 """
 
 __all__ = [
@@ -16,6 +13,8 @@
 # import urllib.parse as urlparse
 from urllib.parse import urlencode
 
+logger = logging.getLogger(__name__)
+
 xxe_safe_elementtree_modules = [
     'defusedxml.cElementTree',
     'defusedxml.ElementTree',
@@ -113,7 +112,7 @@
             except (SystemExit, MemoryError, AssertionError):
                 raise
             except:
-                logging.exception(
+                logger.exception(
                     'Not using ElementTree library %r because it failed to '
                     'parse a trivial document: %s' % mod_name)
             else:
@@ -127,7 +126,7 @@
 def log(message, level=0):
     """Handle a log message from the OpenID library.
 
-    This is a legacy function which redirects to logging.error.
+    This is a legacy function which redirects to logger.error.
     The logging module should be used instead of this
 
     @param message: A string containing a debugging message from the
@@ -142,7 +141,7 @@
     @returns: Nothing.
     """
 
-    logging.error("This is a legacy log message, please use the "
+    logger.error("This is a legacy log message, please use the "
                   "logging module. Message: %s", message)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/server/server.py 
new/python3-openid-3.2.0/openid/server/server.py
--- old/python3-openid-3.1.0/openid/server/server.py    2017-02-22 
16:32:16.000000000 +0100
+++ new/python3-openid-3.2.0/openid/server/server.py    2020-04-12 
19:48:01.000000000 +0200
@@ -132,6 +132,8 @@
      OPENID_NS, OPENID2_NS, IDENTIFIER_SELECT, OPENID1_URL_LIMIT
 from openid.urinorm import urinorm
 
+logger = logging.getLogger(__name__)
+
 HTTP_OK = 200
 HTTP_REDIRECT = 302
 HTTP_ERROR = 400
@@ -418,7 +420,7 @@
         if message.isOpenID1():
             session_type = message.getArg(OPENID_NS, 'session_type')
             if session_type == 'no-encryption':
-                logging.warning(
+                logger.warning(
                     'Received OpenID 1 request with a no-encryption '
                     'assocaition session type. Continuing anyway.')
             elif not session_type:
@@ -1170,14 +1172,14 @@
         """
         assoc = self.getAssociation(assoc_handle, dumb=True)
         if not assoc:
-            logging.error("failed to get assoc with handle %r to verify "
+            logger.error("failed to get assoc with handle %r to verify "
                           "message %r" % (assoc_handle, message))
             return False
 
         try:
             valid = assoc.checkMessageSignature(message)
         except ValueError as ex:
-            logging.exception("Error in verifying %s with %s: %s" %
+            logger.exception("Error in verifying %s with %s: %s" %
                               (message, assoc, ex))
             return False
         return valid
@@ -1281,7 +1283,7 @@
             key = self._normal_key
         assoc = self.store.getAssociation(key, assoc_handle)
         if assoc is not None and assoc.expiresIn <= 0:
-            logging.info("requested %sdumb key %r is expired (by %s seconds)" %
+            logger.info("requested %sdumb key %r is expired (by %s seconds)" %
                          ((not dumb) and 'not-' or '', assoc_handle,
                           assoc.expiresIn))
             if checkExpiration:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/server/trustroot.py 
new/python3-openid-3.2.0/openid/server/trustroot.py
--- old/python3-openid-3.1.0/openid/server/trustroot.py 2017-02-22 
16:32:16.000000000 +0100
+++ new/python3-openid-3.2.0/openid/server/trustroot.py 2020-04-12 
19:48:01.000000000 +0200
@@ -24,6 +24,8 @@
 import re
 import logging
 
+logger = logging.getLogger(__name__)
+
 ############################################
 _protocols = ['http', 'https']
 _top_level_domains = [
@@ -443,12 +445,12 @@
     try:
         allowable_urls = _vrfy(realm.buildDiscoveryURL())
     except RealmVerificationRedirected as err:
-        logging.exception(str(err))
+        logger.exception(str(err))
         return False
 
     if returnToMatches(allowable_urls, return_to):
         return True
     else:
-        logging.error("Failed to validate return_to %r for realm %r, was not "
+        logger.error("Failed to validate return_to %r for realm %r, was not "
                       "in %s" % (return_to, realm_str, allowable_urls))
         return False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/store/filestore.py 
new/python3-openid-3.2.0/openid/store/filestore.py
--- old/python3-openid-3.1.0/openid/store/filestore.py  2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/store/filestore.py  2020-04-12 
19:48:01.000000000 +0200
@@ -18,6 +18,8 @@
 from openid.store import nonce
 from openid import cryptutil, oidutil
 
+logger = logging.getLogger(__name__)
+
 _filename_allowed = string.ascii_letters + string.digits + '.'
 _isFilenameSafe = set(_filename_allowed).__contains__
 
@@ -342,7 +344,7 @@
                 association_file = open(association_filename, 'rb')
             except IOError as why:
                 if why.errno == ENOENT:
-                    logging.exception("%s disappeared during %s._allAssocs" % (
+                    logger.exception("%s disappeared during %s._allAssocs" % (
                         association_filename, self.__class__.__name__))
                 else:
                     raise
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/store/sqlstore.py 
new/python3-openid-3.2.0/openid/store/sqlstore.py
--- old/python3-openid-3.1.0/openid/store/sqlstore.py   2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/store/sqlstore.py   2020-04-12 
19:26:16.000000000 +0200
@@ -10,12 +10,6 @@
 import re
 import time
 
-try:
-    import psycopg2
-except ImportError:
-    from psycopg2cffi import compat
-    compat.register()
-
 from openid.association import Association
 from openid.store.interface import OpenIDStore
 from openid.store import nonce
@@ -433,6 +427,13 @@
 
     All other methods are implementation details.
     """
+
+    try:
+        import psycopg2
+    except ImportError:
+        from psycopg2cffi import compat
+        compat.register()
+
     exceptions = None
 
     create_nonce_sql = """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/test/support.py 
new/python3-openid-3.2.0/openid/test/support.py
--- old/python3-openid-3.1.0/openid/test/support.py     2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/test/support.py     2020-04-12 
19:48:01.000000000 +0200
@@ -3,6 +3,7 @@
 import logging
 
 
+
 class TestHandler(BufferingHandler):
     def __init__(self, messages):
         BufferingHandler.__init__(self, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/test/test_accept.py 
new/python3-openid-3.2.0/openid/test/test_accept.py
--- old/python3-openid-3.1.0/openid/test/test_accept.py 2017-02-22 
16:32:15.000000000 +0100
+++ new/python3-openid-3.2.0/openid/test/test_accept.py 2020-04-12 
19:26:16.000000000 +0200
@@ -9,11 +9,8 @@
     () -> [(int, str)]
     """
     filename = os.path.join(os.path.dirname(__file__), 'data', 'accept.txt')
-    i = 1
-    lines = []
-    for line in open(filename):
-        lines.append((i, line))
-        i += 1
+    with open(filename, 'rt') as data_file:
+        lines = list(enumerate(data_file, 1))
     return lines
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/test/test_parsehtml.py 
new/python3-openid-3.2.0/openid/test/test_parsehtml.py
--- old/python3-openid-3.1.0/openid/test/test_parsehtml.py      2017-02-22 
16:32:17.000000000 +0100
+++ new/python3-openid-3.2.0/openid/test/test_parsehtml.py      2020-04-12 
19:26:16.000000000 +0200
@@ -74,7 +74,8 @@
     cases = []
     for filename in test_files:
         test_num = 0
-        data = open(filename).read()
+        with open(filename) as data_file:
+            data = data_file.read()
         for expected, case in parseCases(data):
             test_num += 1
             cases.append((filename, test_num, expected, case))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/urinorm.py 
new/python3-openid-3.2.0/openid/urinorm.py
--- old/python3-openid-3.1.0/openid/urinorm.py  2017-02-22 16:32:14.000000000 
+0100
+++ new/python3-openid-3.2.0/openid/urinorm.py  2020-04-12 19:26:16.000000000 
+0200
@@ -13,7 +13,7 @@
 #
 # unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
 
-uri_illegal_char_re = re.compile("[^-A-Za-z0-9:/?#[\]@!$&'()*+,;=._~%]",
+uri_illegal_char_re = re.compile(r"[^-A-Za-z0-9:/?#[\]@!$&'()*+,;=._~%]",
                                  re.UNICODE)
 
 authority_pattern = r'^([^@]*@)?([^:]*)(:.*)?'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/yadis/filters.py 
new/python3-openid-3.2.0/openid/yadis/filters.py
--- old/python3-openid-3.1.0/openid/yadis/filters.py    2017-02-22 
16:32:18.000000000 +0100
+++ new/python3-openid-3.2.0/openid/yadis/filters.py    2020-04-12 
19:26:16.000000000 +0200
@@ -12,7 +12,10 @@
 ]
 
 from openid.yadis.etxrd import expandService
-import collections
+try:
+    from collections.abc import Callable
+except ImportError:
+    from collections import Callable
 
 
 class BasicServiceEndpoint(object):
@@ -192,7 +195,7 @@
                 # conversion attribute into the list of endpoint
                 # transformers
                 transformers.append(subfilter.fromBasicServiceEndpoint)
-            elif isinstance(subfilter, collections.Callable):
+            elif isinstance(subfilter, Callable):
                 # It's a simple callable, so add it to the list of
                 # endpoint transformers
                 transformers.append(subfilter)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/openid/yadis/xri.py 
new/python3-openid-3.2.0/openid/yadis/xri.py
--- old/python3-openid-3.1.0/openid/yadis/xri.py        2017-02-22 
16:32:18.000000000 +0100
+++ new/python3-openid-3.2.0/openid/yadis/xri.py        2020-04-12 
19:26:16.000000000 +0200
@@ -31,7 +31,7 @@
     return escapeForIRI(xri)
 
 
-_xref_re = re.compile('\((.*?)\)')
+_xref_re = re.compile(r'\((.*?)\)')
 
 
 def _escape_xref(xref_match):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python3-openid-3.1.0/python3_openid.egg-info/PKG-INFO 
new/python3-openid-3.2.0/python3_openid.egg-info/PKG-INFO
--- old/python3-openid-3.1.0/python3_openid.egg-info/PKG-INFO   2017-02-22 
17:03:45.000000000 +0100
+++ new/python3-openid-3.2.0/python3_openid.egg-info/PKG-INFO   2020-06-29 
14:15:41.000000000 +0200
@@ -1,12 +1,14 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: python3-openid
-Version: 3.1.0
+Version: 3.2.0
 Summary: OpenID support for modern servers and consumers.
 Home-page: http://github.com/necaris/python3-openid
 Author: Rami Chowdhury
 Author-email: [email protected]
+Maintainer: Rami Chowdhury
+Maintainer-email: [email protected]
 License: UNKNOWN
-Download-URL: http://github.com/necaris/python3-openid/tarball/v3.1.0
+Download-URL: http://github.com/necaris/python3-openid/tarball/v3.2.0
 Description: This is a set of Python packages to support use of
         the OpenID decentralized identity system in your application, update 
to Python
         3.  Want to enable single sign-on for your web site?  Use the 
openid.consumer
@@ -24,3 +26,5 @@
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI 
Tools/Libraries
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: System :: Systems Administration :: 
Authentication/Directory
+Provides-Extra: mysql
+Provides-Extra: postgresql
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python3-openid-3.1.0/python3_openid.egg-info/SOURCES.txt 
new/python3-openid-3.2.0/python3_openid.egg-info/SOURCES.txt
--- old/python3-openid-3.1.0/python3_openid.egg-info/SOURCES.txt        
2017-02-22 17:03:46.000000000 +0100
+++ new/python3-openid-3.2.0/python3_openid.egg-info/SOURCES.txt        
2020-06-29 14:15:41.000000000 +0200
@@ -1,6 +1,7 @@
 LICENSE
 MANIFEST.in
 NEWS.md
+README.md
 background-associations.txt
 setup.cfg
 setup.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python3-openid-3.1.0/python3_openid.egg-info/requires.txt 
new/python3-openid-3.2.0/python3_openid.egg-info/requires.txt
--- old/python3-openid-3.1.0/python3_openid.egg-info/requires.txt       
2017-02-22 17:03:45.000000000 +0100
+++ new/python3-openid-3.2.0/python3_openid.egg-info/requires.txt       
2020-06-29 14:15:41.000000000 +0200
@@ -1 +1,7 @@
 defusedxml
+
+[mysql]
+mysql-connector-python
+
+[postgresql]
+psycopg2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/setup.cfg 
new/python3-openid-3.2.0/setup.cfg
--- old/python3-openid-3.1.0/setup.cfg  2017-02-22 17:03:46.000000000 +0100
+++ new/python3-openid-3.2.0/setup.cfg  2020-06-29 14:15:41.881869600 +0200
@@ -1,6 +1,6 @@
 [sdist]
 force_manifest = 1
-formats = gztar, zip
+formats = gztar
 
 [bdist_wheel]
 universal = 0
@@ -8,5 +8,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python3-openid-3.1.0/setup.py 
new/python3-openid-3.2.0/setup.py
--- old/python3-openid-3.1.0/setup.py   2017-02-22 16:39:30.000000000 +0100
+++ new/python3-openid-3.2.0/setup.py   2020-04-12 19:26:16.000000000 +0200
@@ -38,6 +38,10 @@
     download_url=('http://github.com/necaris/python3-openid/tarball'
                   '/v{}'.format(version)),
     install_requires=install_requires,
+    extras_require={
+        'mysql': ['mysql-connector-python'],
+        'postgresql': ['psycopg2'],
+    },
     classifiers=[
         "Development Status :: 5 - Production/Stable",
         "Environment :: Web Environment",


Reply via email to