#4 Fixes for Python 3.8
Merged 3 months ago by apevec. Opened 3 months ago by apevec.
rpms/ apevec/python-passlib master  into  master

Fixes for Python 3.8
Alan Pevec • 3 months ago  

@@ -0,0 +1,52 @@ 

+ # HG changeset patch

+ # User Alan Pevec <apevec@redhat.com>

+ # Date 1562844713 -7200

+ #      Thu Jul 11 13:31:53 2019 +0200

+ # 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,

@@ -0,0 +1,48 @@ 

+ # HG changeset patch

+ # User Alan Pevec <apevec@redhat.com>

+ # Date 1562888158 -7200

+ #      Fri Jul 12 01:35:58 2019 +0200

+ # 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)

file modified
+2

@@ -17,6 +17,8 @@ 

  Source0:	https://pypi.io/packages/source/p/passlib/passlib-%{version}.tar.gz

  

  Patch0:		%{name}-1.7.1-libxcrypt-compat.patch

+ Patch0001:	0001-Remove-time-clock.patch

+ Patch0002:	0002-Fix-for-Python-3-8.patch

  

  BuildArch:	noarch