diff options
| -rw-r--r-- | passlib/apps.py | 2 | ||||
| -rw-r--r-- | passlib/context.py | 6 | ||||
| -rw-r--r-- | passlib/tests/test_utils.py | 2 | ||||
| -rw-r--r-- | passlib/tests/utils.py | 5 | ||||
| -rw-r--r-- | passlib/utils/__init__.py | 10 | ||||
| -rw-r--r-- | passlib/utils/compat.py | 25 |
6 files changed, 29 insertions, 21 deletions
diff --git a/passlib/apps.py b/passlib/apps.py index 02e9f8b..ecdb834 100644 --- a/passlib/apps.py +++ b/passlib/apps.py @@ -9,7 +9,7 @@ from itertools import chain #libs from passlib import hash from passlib.context import LazyCryptContext -from passlib.utils import sys_bits +from passlib.utils.compat import sys_bits #pkg #local __all__ = [ diff --git a/passlib/context.py b/passlib/context.py index 96e9661..e944480 100644 --- a/passlib/context.py +++ b/passlib/context.py @@ -3,10 +3,10 @@ #imports #========================================================= from __future__ import with_statement -from passlib.utils import py32_lang +from passlib.utils.compat import PY3, PY_MIN_32 #core from cStringIO import StringIO -if py32_lang: +if PY_MIN_32: #Py3.2 removed old ConfigParser, put SafeConfigParser in it's place from ConfigParser import ConfigParser as SafeConfigParser else: @@ -223,7 +223,7 @@ class CryptPolicy(object): def _from_stream(cls, stream, section, filename=None): "helper for from_string / from_path" p = SafeConfigParser() - if py32_lang: + if PY_MIN_32: # Py3.2 deprecated readfp p.read_file(stream, filename or "<???>") else: diff --git a/passlib/tests/test_utils.py b/passlib/tests/test_utils.py index 753ee69..c851943 100644 --- a/passlib/tests/test_utils.py +++ b/passlib/tests/test_utils.py @@ -13,7 +13,7 @@ import warnings #module from passlib.context import CryptContext from passlib import utils -from passlib.utils import h64, des, Undef, sys_bits, bytes, b, \ +from passlib.utils import h64, des, Undef, bytes, b, \ native_str, to_bytes, to_unicode, to_native_str, to_hash_str, \ is_same_codec, is_ascii_safe, safe_os_crypt, md4 as md4_mod from passlib.tests.utils import TestCase, Params as ak, \ diff --git a/passlib/tests/utils.py b/passlib/tests/utils.py index 06aea3c..ae43f61 100644 --- a/passlib/tests/utils.py +++ b/passlib/tests/utils.py @@ -37,7 +37,7 @@ from passlib import registry, utils from passlib.utils import classproperty, handlers as uh, \ has_rounds_info, has_salt_info, MissingBackendError, \ rounds_cost_values, b, bytes, native_str, NoneType -from passlib.utils.compat import iteritems, irange, callable, sb_types +from passlib.utils.compat import iteritems, irange, callable, sb_types, exc_err #local __all__ = [ #util funcs @@ -218,7 +218,8 @@ class TestCase(unittest.TestCase): msg = kwds.pop("__msg__", None) try: result = func(*args, **kwds) - except Exception, err: + except Exception: + err = exc_err() # NOTE: done to avoid 2/3 exception-syntax issue if isinstance(err, type): return True ##import traceback, sys diff --git a/passlib/utils/__init__.py b/passlib/utils/__init__.py index 72ec62f..40a53b9 100644 --- a/passlib/utils/__init__.py +++ b/passlib/utils/__init__.py @@ -17,7 +17,7 @@ import time from warnings import warn #site #pkg -from passlib.utils.compat import irange, b, PY3 +from passlib.utils.compat import irange, b, PY3, sys_bits #local __all__ = [ #decorators @@ -52,8 +52,6 @@ __all__ = [ #constants 'pypy_vm', 'jython_vm', - 'py32_lang', 'py3k_lang', - 'sys_bits', 'unix_crypt_schemes', ] @@ -64,12 +62,6 @@ __all__ = [ #: detect what we're running on pypy_vm = hasattr(sys, "pypy_version_info") jython_vm = sys.platform.startswith('java') -py3k_lang = sys.version_info >= (3,0) -py32_lang = sys.version_info >= (3,2) - -#: number of bits in system architecture -sys_bits = int(logb(sys.maxint,2)+1.5) -assert sys_bits in (32,64), "unexpected sys_bits value: %r" % (sys_bits,) #: list of names of hashes found in unix crypt implementations... unix_crypt_schemes = [ diff --git a/passlib/utils/compat.py b/passlib/utils/compat.py index c98f8d4..d57262e 100644 --- a/passlib/utils/compat.py +++ b/passlib/utils/compat.py @@ -2,10 +2,10 @@ #============================================================================= # figure out what version we're running #============================================================================= -from sys import version as pyver -PY3 = pyver >= (3,0) -PY_MAX_25 = pyver < (2,6) # py 2.5 or earlier -PY_MIN_32 = pyver >= (3,2) # py 3.2 or later +import sys +PY3 = sys.version >= (3,0) +PY_MAX_25 = sys.version < (2,6) # py 2.5 or earlier +PY_MIN_32 = sys.version >= (3,2) # py 3.2 or later #============================================================================= # the default exported vars @@ -18,13 +18,24 @@ __all__ = [ ] #============================================================================= +# host/vm configuration info +#============================================================================= +from math import log as logb +if PY3: + sys_bits = int(logb(sys.maxsize,2)+1.5) +else: + sys_bits = int(logb(sys.maxint,2)+1.5) +del logb +assert sys_bits in (32,64), "unexpected system bitsize: %r" % (sys_bits,) + +#============================================================================= # typing #============================================================================= def is_mapping(obj): # non-exhaustive check, enough to distinguish from lists, etc return hasattr(obj, "items") -if (3,0) <= pyver < (3,2): +if (3,0) <= sys.version < (3,2): # callable isn't dead, it's just resting from collections import Callable def callable(obj): @@ -102,6 +113,10 @@ else: #============================================================================= # introspection #============================================================================= +def exc_err(): + "return current error object (to avoid try/except syntax change)" + return sys.exc_info()[1] + if PY3: def get_method_function(method): return method.__func__ |
