summaryrefslogtreecommitdiff
path: root/alembic/testing
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2023-05-08 23:05:40 +0200
committerMike Bayer <mike_mp@zzzcomputing.com>2023-05-09 18:11:13 -0400
commit2866272251637c0dd246c275cf04947849ea88b8 (patch)
tree061f9310693d04387c56d61438901591c35faaec /alembic/testing
parente17e59ee2be160fff35b38b08d68766a971b3069 (diff)
downloadalembic-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.py7
-rw-r--r--alembic/testing/requirements.py2
-rw-r--r--alembic/testing/util.py11
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 = {}