diff --git a/ibm_db_sa/base.py b/ibm_db_sa/base.py index 53c9bd7..50668f7 100644 --- a/ibm_db_sa/base.py +++ b/ibm_db_sa/base.py @@ -29,13 +29,13 @@ from sqlalchemy.sql import compiler from sqlalchemy.sql import operators from sqlalchemy.engine import default -from sqlalchemy import __version__ as SA_Version +from sqlalchemy import __version__ as SA_VERSION_STR from . import reflection as ibm_reflection -from packaging import version -SQLALCHEMY_VERSION = version.parse(sqlalchemy.__version__) +m = re.match(r"^\s*(\d+)\.(\d+)", SA_VERSION_STR) +SA_VERSION_MM = (int(m.group(1)), int(m.group(2))) if m else (0, 0) -if SQLALCHEMY_VERSION >= version.parse("2.0"): +if SA_VERSION_MM >= (2, 0): from sqlalchemy.sql.sqltypes import NullType, NULLTYPE, _Binary from sqlalchemy.sql.sqltypes import ( ARRAY, BIGINT, BigInteger, BINARY, BLOB, BOOLEAN, Boolean, @@ -68,8 +68,6 @@ UserDefinedType, Variant ) -SA_Version = [int(ver_token) for ver_token in SA_Version.split('.')[0:2]] - # as documented from: # http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0001095.htm RESERVED_WORDS = set( @@ -373,7 +371,7 @@ def visit_large_binary(self, type_, **kw): class DB2Compiler(compiler.SQLCompiler): - if SA_Version < [0, 9]: + if SA_VERSION_MM < (0, 9): def visit_false(self, expr, **kw): return '0' @@ -550,7 +548,7 @@ def visit_function(self, func, result_map=None, **kwargs): def visit_cast(self, cast, **kw): type_ = cast.typeclause.type - if SQLALCHEMY_VERSION >= version.parse("2.0"): + if SA_VERSION_MM >= (2, 0): valid_types = ( CHAR, VARCHAR, CLOB, String, Text, Unicode, UnicodeText, BLOB, LargeBinary, VARBINARY, @@ -718,7 +716,7 @@ def create_table_constraints(self, table, **kw): return result def visit_create_index(self, create, include_schema=True, include_table_schema=True, **kw): - if SA_Version < [0, 8]: + if SA_VERSION_MM < (0, 8): sql = super(DB2DDLCompiler, self).visit_create_index(create, **kw) else: sql = super(DB2DDLCompiler, self).visit_create_index(create, include_schema, include_table_schema, **kw) @@ -798,9 +796,9 @@ class DB2Dialect(default.DefaultDialect): supports_char_length = False supports_unicode_statements = False supports_unicode_binds = False - if SA_Version < [1, 4]: + if SA_VERSION_MM < (1, 4): returns_unicode_strings = False - elif SA_Version < [2, 0]: + elif SA_VERSION_MM < (2, 0): returns_unicode_strings = sa_types.String.RETURNS_CONDITIONAL else: returns_unicode_strings = True diff --git a/ibm_db_sa/ibm_db.py b/ibm_db_sa/ibm_db.py index 7352cc2..37e5c6f 100644 --- a/ibm_db_sa/ibm_db.py +++ b/ibm_db_sa/ibm_db.py @@ -17,12 +17,14 @@ # | Contributors: Jaimy Azle, Mike Bayer,Hemlata Bhatt | # +--------------------------------------------------------------------------+ -from sqlalchemy import __version__ as SA_Version -SA_Version = [int(ver_token) for ver_token in SA_Version.split('.')[0:2]] +import re +from sqlalchemy import __version__ as SA_VERSION_STR +m = re.match(r"^\s*(\d+)\.(\d+)", SA_VERSION_STR) +SA_VERSION_MM = (int(m.group(1)), int(m.group(2))) if m else (0, 0) from .base import DB2ExecutionContext, DB2Dialect -if SA_Version < [2,0]: +if SA_VERSION_MM < (2, 0): from sqlalchemy import processors, types as sa_types, util else: from sqlalchemy import types as sa_types, util @@ -36,7 +38,7 @@ SQL_TXN_SERIALIZABLE = 8 SQL_ATTR_TXN_ISOLATION = 108 -if SA_Version < [0, 8]: +if SA_VERSION_MM < (0, 8): from sqlalchemy.engine import base else: from sqlalchemy.engine import result as _result @@ -76,7 +78,7 @@ def pre_exec(self): def get_result_proxy(self): if self._callproc_result and self._out_parameters: - if SA_Version < [0, 8]: + if SA_VERSION_MM < (0, 8): result = base.ResultProxy(self) else: result = _result.ResultProxy(self) @@ -89,7 +91,7 @@ def get_result_proxy(self): return result else: - if SA_Version < [0, 8]: + if SA_VERSION_MM < (0, 8): result = base.ResultProxy(self) else: result = _result.ResultProxy(self) @@ -115,7 +117,7 @@ class DB2Dialect_ibm_db(DB2Dialect): } ) - if SA_Version < [2, 0]: + if SA_VERSION_MM < (2, 0): @classmethod def dbapi(cls): """ Returns: the underlying DBAPI driver module diff --git a/ibm_db_sa/ibm_db_as400.py b/ibm_db_sa/ibm_db_as400.py index 5a5e101..d008046 100644 --- a/ibm_db_sa/ibm_db_as400.py +++ b/ibm_db_sa/ibm_db_as400.py @@ -1,7 +1,9 @@ -from sqlalchemy import __version__ as SA_Version -SA_Version = [int(ver_token) for ver_token in SA_Version.split('.')[0:2]] +import re +from sqlalchemy import __version__ as SA_VERSION_STR +m = re.match(r"^\s*(\d+)\.(\d+)", SA_VERSION_STR) +SA_VERSION_MM = (int(m.group(1)), int(m.group(2))) if m else (0, 0) from .base import DB2ExecutionContext, DB2Dialect -if SA_Version < [2,0]: +if SA_VERSION_MM < (2, 0): from sqlalchemy import processors, types as sa_types, util else: from sqlalchemy import types as sa_types, util diff --git a/pyproject.toml b/pyproject.toml index 20de75d..1b68d94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools>=42", "wheel", "packaging>=20.0"] +requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/setup.py b/setup.py index b954e07..d44a02c 100644 --- a/setup.py +++ b/setup.py @@ -11,9 +11,9 @@ readme = os.path.join(os.path.dirname(__file__), 'README.md') if 'USE_PYODBC' in os.environ and os.environ['USE_PYODBC'] == '1': - require = ['sqlalchemy>=0.7.3', 'packaging>=20.0'] + require = ['sqlalchemy>=0.7.3'] else: - require = ['sqlalchemy>=0.7.3','ibm_db>=2.0.0', 'packaging>=20.0'] + require = ['sqlalchemy>=0.7.3','ibm_db>=2.0.0'] setup(