diff --git a/sqlalchemy_utils/functions/database.py b/sqlalchemy_utils/functions/database.py index ae25515a..48faf28d 100644 --- a/sqlalchemy_utils/functions/database.py +++ b/sqlalchemy_utils/functions/database.py @@ -1,4 +1,7 @@ -import collections +try: + from collections.abc import Mapping, Sequence +except ImportError: # For python 2.7 support + from collections import Mapping, Sequence import itertools import os from copy import copy @@ -167,7 +170,7 @@ def json_sql(value, scalars_to_json=True): def scalar_convert(a): return sa.func.to_json(sa.text(a)) - if isinstance(value, collections.Mapping): + if isinstance(value, Mapping): return sa.func.json_build_object( *( json_sql(v, scalars_to_json=False) @@ -176,7 +179,7 @@ def scalar_convert(a): ) elif isinstance(value, str): return scalar_convert("'{0}'".format(value)) - elif isinstance(value, collections.Sequence): + elif isinstance(value, Sequence): return sa.func.json_build_array( *( json_sql(v, scalars_to_json=False) diff --git a/tests/types/test_composite.py b/tests/types/test_composite.py index f1255223..95db7a44 100644 --- a/tests/types/test_composite.py +++ b/tests/types/test_composite.py @@ -2,6 +2,7 @@ import pytest import sqlalchemy as sa from sqlalchemy.orm import sessionmaker +from sqlalchemy.orm.session import close_all_sessions from sqlalchemy_utils import ( CompositeArray, @@ -324,7 +325,7 @@ def teardown(): session.execute('DROP TABLE account') session.execute('DROP TYPE money_type') session.commit() - session.close_all() + close_all_sessions() connection.close() remove_composite_listeners() engine.dispose() diff --git a/tests/types/test_password.py b/tests/types/test_password.py index eea3b324..f1888bea 100644 --- a/tests/types/test_password.py +++ b/tests/types/test_password.py @@ -109,7 +109,7 @@ def test_check_and_update(self, User): from passlib.hash import md5_crypt obj = User() - obj.password = Password(md5_crypt.encrypt('b')) + obj.password = Password(md5_crypt.hash('b')) assert obj.password.hash.decode('utf8').startswith('$1$') assert obj.password == 'b' @@ -139,10 +139,10 @@ def test_compare(self, User): from passlib.hash import md5_crypt obj = User() - obj.password = Password(md5_crypt.encrypt('b')) + obj.password = Password(md5_crypt.hash('b')) other = User() - other.password = Password(md5_crypt.encrypt('b')) + other.password = Password(md5_crypt.hash('b')) # Not sure what to assert here; the test raised an error before. assert obj.password != other.password @@ -203,7 +203,7 @@ def test_check_and_update_persist(self, session, User): from passlib.hash import md5_crypt obj = User() - obj.password = Password(md5_crypt.encrypt('b')) + obj.password = Password(md5_crypt.hash('b')) session.add(obj) session.commit()