summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util/concurrency.py
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2020-11-04 16:06:53 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2020-11-04 16:06:53 +0000
commite87fd72324e824d069351157b41485b0589cb41d (patch)
tree9c653ce778d95c83dc5302a41029b7cc6736630a /lib/sqlalchemy/util/concurrency.py
parentb0e6dccfb60cb900e327ae8ff6632e8c3339c53d (diff)
parentf016c1ac7f93d2f759aff53ec1494658efd7b496 (diff)
downloadsqlalchemy-e87fd72324e824d069351157b41485b0589cb41d.tar.gz
Merge "Reduce import time overhead"
Diffstat (limited to 'lib/sqlalchemy/util/concurrency.py')
-rw-r--r--lib/sqlalchemy/util/concurrency.py47
1 files changed, 31 insertions, 16 deletions
diff --git a/lib/sqlalchemy/util/concurrency.py b/lib/sqlalchemy/util/concurrency.py
index e0883aa68..f78c0971c 100644
--- a/lib/sqlalchemy/util/concurrency.py
+++ b/lib/sqlalchemy/util/concurrency.py
@@ -1,25 +1,40 @@
from . import compat
+have_greenlet = False
if compat.py3k:
- import asyncio
- from ._concurrency_py3k import await_only
- from ._concurrency_py3k import await_fallback
- from ._concurrency_py3k import greenlet
- from ._concurrency_py3k import greenlet_spawn
- from ._concurrency_py3k import AsyncAdaptedLock
-else:
- asyncio = None
- greenlet = None
-
- def await_only(thing):
+ try:
+ import greenlet # noqa F401
+ except ImportError:
+ pass
+ else:
+ have_greenlet = True
+ from ._concurrency_py3k import await_only
+ from ._concurrency_py3k import await_fallback
+ from ._concurrency_py3k import greenlet_spawn
+ from ._concurrency_py3k import AsyncAdaptedLock
+ from ._concurrency_py3k import asyncio # noqa F401
+
+if not have_greenlet:
+
+ asyncio = None # noqa F811
+
+ def _not_implemented():
+ if not compat.py3k:
+ raise ValueError("Cannot use this function in py2.")
+ else:
+ raise ValueError(
+ "the greenlet library is required to use this function."
+ )
+
+ def await_only(thing): # noqa F811
return thing
- def await_fallback(thing):
+ def await_fallback(thing): # noqa F81
return thing
- def greenlet_spawn(fn, *args, **kw):
- raise ValueError("Cannot use this function in py2.")
+ def greenlet_spawn(fn, *args, **kw): # noqa F81
+ _not_implemented()
- def AsyncAdaptedLock(*args, **kw):
- raise ValueError("Cannot use this function in py2.")
+ def AsyncAdaptedLock(*args, **kw): # noqa F81
+ _not_implemented()