diff options
author | Federico Caselli <cfederico87@gmail.com> | 2023-05-08 23:05:40 +0200 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2023-05-09 18:11:13 -0400 |
commit | 2866272251637c0dd246c275cf04947849ea88b8 (patch) | |
tree | 061f9310693d04387c56d61438901591c35faaec /alembic/testing | |
parent | e17e59ee2be160fff35b38b08d68766a971b3069 (diff) | |
download | alembic-2866272251637c0dd246c275cf04947849ea88b8.tar.gz |
Fix compat issue with older SQLAlchemy versions.
Added placeholder classes for ``Computed`` and ``Identity`` when older 1.x
SQLAlchemy versions are in use, namely prior to SQLAlchemy 1.3.11 when the
``Computed`` construct was introduced. Previously these were set to None,
however this could cause issues with certain codepaths that were using
``isinstance()`` such as one within "batch mode".
Fixes: #1237
Change-Id: I033712158baa68cca6a56bd41d0636109e156b86
Diffstat (limited to 'alembic/testing')
-rw-r--r-- | alembic/testing/fixtures.py | 7 | ||||
-rw-r--r-- | alembic/testing/requirements.py | 2 | ||||
-rw-r--r-- | alembic/testing/util.py | 11 |
3 files changed, 6 insertions, 14 deletions
diff --git a/alembic/testing/fixtures.py b/alembic/testing/fixtures.py index ef1c3bb..65f3a0a 100644 --- a/alembic/testing/fixtures.py +++ b/alembic/testing/fixtures.py @@ -28,7 +28,7 @@ from ..operations import Operations from ..util import sqla_compat from ..util.sqla_compat import create_mock_engine from ..util.sqla_compat import sqla_14 -from ..util.sqla_compat import sqla_1x +from ..util.sqla_compat import sqla_2 testing_config = configparser.ConfigParser() @@ -36,10 +36,7 @@ testing_config.read(["test.cfg"]) class TestBase(SQLAlchemyTestBase): - if sqla_1x: - is_sqlalchemy_future = False - else: - is_sqlalchemy_future = True + is_sqlalchemy_future = sqla_2 @testing.fixture() def ops_context(self, migration_context): diff --git a/alembic/testing/requirements.py b/alembic/testing/requirements.py index a4a6045..40de4cd 100644 --- a/alembic/testing/requirements.py +++ b/alembic/testing/requirements.py @@ -84,7 +84,7 @@ class SuiteRequirements(Requirements): @property def sqlalchemy_1x(self): return exclusions.skip_if( - lambda config: not util.sqla_1x, + lambda config: util.sqla_2, "SQLAlchemy 1.x test", ) diff --git a/alembic/testing/util.py b/alembic/testing/util.py index e65597d..4517a69 100644 --- a/alembic/testing/util.py +++ b/alembic/testing/util.py @@ -6,12 +6,13 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php from __future__ import annotations -import re import types from typing import Union from sqlalchemy.util import inspect_getfullargspec +from ..util import sqla_2 + def flag_combinations(*combinations): """A facade around @testing.combinations() oriented towards boolean @@ -114,17 +115,11 @@ def _safe_int(value: str) -> Union[int, str]: def testing_engine(url=None, options=None, future=False): from sqlalchemy.testing import config from sqlalchemy.testing.engines import testing_engine - from sqlalchemy import __version__ - - _vers = tuple( - [_safe_int(x) for x in re.findall(r"(\d+|[abc]\d)", __version__)] - ) - sqla_1x = _vers < (2,) if not future: future = getattr(config._current.options, "future_engine", False) - if sqla_1x: + if not sqla_2: kw = {"future": future} if future else {} else: kw = {} |