summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util/_has_cy.py
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2022-09-04 21:44:46 +0200
committerFederico Caselli <cfederico87@gmail.com>2022-09-05 22:32:14 +0200
commit741534d840daeeba73aad1703b5bdeb3a0b86db9 (patch)
tree93137388403c76735852bd66a214030a30c75269 /lib/sqlalchemy/util/_has_cy.py
parent5caf49ef11aca75541691b7a6fe67b78fa673f93 (diff)
downloadsqlalchemy-741534d840daeeba73aad1703b5bdeb3a0b86db9.tar.gz
Improve compiled extension detection
Ensure that all cython extension are imported by the compied detection logic. This is required since cython extensions moduels are marked as optional in the install, so it's possible that only some of them are compiled. The extensions are enabled only if all of them are correctly compiled Change-Id: I355cbac06f5c7a47d35661f42ebab3b0156c1965
Diffstat (limited to 'lib/sqlalchemy/util/_has_cy.py')
-rw-r--r--lib/sqlalchemy/util/_has_cy.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/sqlalchemy/util/_has_cy.py b/lib/sqlalchemy/util/_has_cy.py
index cf68c1933..072c78d2c 100644
--- a/lib/sqlalchemy/util/_has_cy.py
+++ b/lib/sqlalchemy/util/_has_cy.py
@@ -1,14 +1,32 @@
-# mypy: allow-untyped-defs, allow-untyped-calls
+# Copyright (C) 2005-2022 the SQLAlchemy authors and contributors
+# <see AUTHORS file>
+#
+# This module is part of SQLAlchemy and is released under
+# the MIT License: https://www.opensource.org/licenses/mit-license.php
+# mypy: ignore-errors
import os
import typing
+
+def _import_cy_extensions():
+ # all cython extension extension modules are treated as optional by the
+ # setup, so to ensure that all are compiled, all should be imported here
+ from ..cyextension import collections
+ from ..cyextension import immutabledict
+ from ..cyextension import processors
+ from ..cyextension import resultproxy
+ from ..cyextension import util
+
+ return (collections, immutabledict, processors, resultproxy, util)
+
+
if not typing.TYPE_CHECKING:
if os.environ.get("DISABLE_SQLALCHEMY_CEXT_RUNTIME"):
HAS_CYEXTENSION = False
else:
try:
- from ..cyextension import util # noqa
+ _import_cy_extensions()
except ImportError:
HAS_CYEXTENSION = False
else: