Skip to content

Commit 150c133

Browse files
committed
fix convert_unicode deprecation warning
refs pallets-eco#681 refs pallets-eco#671
1 parent ead0dce commit 150c133

File tree

4 files changed

+53
-5
lines changed

4 files changed

+53
-5
lines changed

flask_sqlalchemy/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,8 @@ def get_engine(self):
567567
return rv
568568

569569
def get_options(self, sa_url, echo):
570-
options = {'convert_unicode': True}
570+
options = {}
571+
571572
self._sa.apply_pool_defaults(self._app, options)
572573
self._sa.apply_driver_hacks(self._app, sa_url, options)
573574
if echo:

flask_sqlalchemy/utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
from pkg_resources import parse_version
3+
import sqlalchemy
4+
5+
6+
def sqlalchemy_version(op, val):
7+
sa_ver = parse_version(sqlalchemy.__version__)
8+
target_ver = parse_version(val)
9+
10+
assert op in ('<', '>', '<=', '>=', '=='), 'op {} not supported'.format(op)
11+
12+
if op == '<':
13+
return sa_ver < target_ver
14+
if op == '>':
15+
return sa_ver > target_ver
16+
if op == '<=':
17+
return sa_ver <= target_ver
18+
if op == '>=':
19+
return sa_ver >= target_ver
20+
return sa_ver == target_ver

tests/test_config.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,12 @@ def test_uri_binds_warning(self, app, recwarn):
6666
' "sqlite:///:memory:".'
6767
assert recwarn[0].message.args[0] == expect
6868

69-
def test_engine_creation_ok(self, app):
69+
def test_engine_creation_ok(self, app, recwarn):
7070
""" create_engine() isn't called until needed. Let's make sure we can do that without
71-
errors.
71+
errors or warnings.
7272
"""
7373
assert fsa.SQLAlchemy(app).get_engine()
74+
assert len(recwarn) == 0
7475

7576

7677
@pytest.fixture
@@ -103,11 +104,13 @@ def test_engine_echo_true(self, m_create_engine, app_nr):
103104
args, options = m_create_engine.call_args
104105
assert options['echo'] is True
105106

106-
def test_convert_unicode_default(self, m_create_engine, app_nr):
107+
@mock.patch.object(fsa.utils, 'sqlalchemy')
108+
def test_convert_unicode_default_sa_13(self, m_sqlalchemy, m_create_engine, app_nr):
109+
m_sqlalchemy.__version__ = '1.3'
107110
fsa.SQLAlchemy(app_nr).get_engine()
108111

109112
args, options = m_create_engine.call_args
110-
assert options['convert_unicode'] is True
113+
assert 'convert_unicode' not in options
111114

112115
def test_config_from_engine_options(self, m_create_engine, app_nr):
113116
app_nr.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'foo': 'bar'}

tests/test_utils.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import mock
2+
3+
from flask_sqlalchemy import utils
4+
5+
6+
class TestSQLAlchemyVersion:
7+
8+
@mock.patch.object(utils, 'sqlalchemy')
9+
def test_sqlalchemy_version(self, m_sqlalchemy):
10+
m_sqlalchemy.__version__ = '1.3'
11+
12+
assert not utils.sqlalchemy_version('<', '1.3')
13+
assert not utils.sqlalchemy_version('>', '1.3')
14+
assert utils.sqlalchemy_version('<=', '1.3')
15+
assert utils.sqlalchemy_version('==', '1.3')
16+
assert utils.sqlalchemy_version('>=', '1.3')
17+
18+
m_sqlalchemy.__version__ = '1.2.99'
19+
20+
assert utils.sqlalchemy_version('<', '1.3')
21+
assert not utils.sqlalchemy_version('>', '1.3')
22+
assert utils.sqlalchemy_version('<=', '1.3')
23+
assert not utils.sqlalchemy_version('==', '1.3')
24+
assert not utils.sqlalchemy_version('>=', '1.3')

0 commit comments

Comments
 (0)