Hello community, here is the log from the commit of package python-passlib for openSUSE:Factory checked in at 2019-10-09 15:17:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-passlib (Old) and /work/SRC/openSUSE:Factory/.python-passlib.new.2352 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-passlib" Wed Oct 9 15:17:27 2019 rev:19 rq:734915 version:1.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-passlib/python-passlib.changes 2019-03-19 10:00:25.587942976 +0100 +++ /work/SRC/openSUSE:Factory/.python-passlib.new.2352/python-passlib.changes 2019-10-09 15:17:27.740806670 +0200 @@ -1,0 +2,6 @@ +Thu Oct 3 15:09:46 UTC 2019 - John Vandenberg <[email protected]> + +- Add two patches to fix Python 3.8 compatibility + * pr_9_1.patch and pr_9_2.patch + +------------------------------------------------------------------- New: ---- pr_9_1.patch pr_9_2.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-passlib.spec ++++++ --- /var/tmp/diff_new_pack.MyNBJB/_old 2019-10-09 15:17:28.452804836 +0200 +++ /var/tmp/diff_new_pack.MyNBJB/_new 2019-10-09 15:17:28.472804785 +0200 @@ -26,6 +26,9 @@ URL: https://bitbucket.org/ecollins/passlib Source: https://files.pythonhosted.org/packages/source/p/passlib/passlib-%{version}.tar.gz Patch0: python-passlib-1.7.1-libxcrypt-compat.patch +# Python 3.8 compatibility patches +Patch1: pr_9_1.patch +Patch2: pr_9_2.patch # test requirements BuildRequires: %{python_module nose} BuildRequires: %{python_module setuptools} @@ -44,6 +47,8 @@ %prep %setup -q -n passlib-%{version} %patch0 -p1 +%patch1 -p1 +%patch2 -p1 %build %python_build ++++++ pr_9_1.patch ++++++ # HG changeset patch # User Alan Pevec <[email protected]> # Date 1562888158 -7200 # Branch stable # Node ID 98c08467d15759acc3b0f88d2661f6e530147c33 # Parent 27866c441d18c7ce42e3f7afe824f89da4f8d21b Fix for Python 3.8 This was a deprecation when running in Python 3.7: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working if isinstance(source, collections.Sequence): diff --git a/passlib/utils/__init__.py b/passlib/utils/__init__.py --- a/passlib/utils/__init__.py +++ b/passlib/utils/__init__.py @@ -6,7 +6,12 @@ # core from binascii import b2a_base64, a2b_base64, Error as _BinAsciiError from base64 import b64encode, b64decode -import collections +try: + from collections.abc import Sequence + from collections.abc import Iterable +except ImportError: + from collections import Sequence + from collections import Iterable from codecs import lookup as _lookup_codec from functools import update_wrapper import itertools @@ -276,14 +281,14 @@ """ if size < 1: raise ValueError("size must be positive integer") - if isinstance(source, collections.Sequence): + if isinstance(source, Sequence): end = len(source) i = 0 while i < end: n = i + size yield source[i:n] i = n - elif isinstance(source, collections.Iterable): + elif isinstance(source, Iterable): itr = iter(source) while True: chunk_itr = itertools.islice(itr, size) ++++++ pr_9_2.patch ++++++ # HG changeset patch # User Alan Pevec <[email protected]> # Date 1562844713 -7200 # Branch stable # Node ID 58f3efd111e930baf39ff50df27ed7f2d24f759d # Parent 4801587cebf01f5037ddc9cd52fc94708559bbfb Remove time.clock(), deprecated in 3.8 The function time.clock(), used in passlib/utils/__init__.py has been removed. It was deprecated since Python 3.3. More info: https://docs.python.org/3.8/whatsnew/3.8.html#api-and-feature-removals To make the code both Python 2 and 3 compatible, use timeit.default_timer diff --git a/passlib/utils/__init__.py b/passlib/utils/__init__.py --- a/passlib/utils/__init__.py +++ b/passlib/utils/__init__.py @@ -30,6 +30,7 @@ import time if stringprep: import unicodedata +import timeit import types from warnings import warn # site @@ -839,14 +840,7 @@ assert secret and hash return safe_crypt(secret, hash) == hash -# pick best timer function to expose as "tick" - lifted from timeit module. -if sys.platform == "win32": - # On Windows, the best timer is time.clock() - from time import clock as timer -else: - # On most other platforms the best timer is time.time() - from time import time as timer - +timer = timeit.default_timer # legacy alias, will be removed in passlib 2.0 tick = timer @@ -903,7 +897,7 @@ # the current time, to whatever precision os uses time.time(), - time.clock(), + tick(), # if urandom available, might as well mix some bytes in. os.urandom(32).decode("latin-1") if has_urandom else 0,
