diff options
-rw-r--r-- | Changelog | 5 | ||||
-rw-r--r-- | docs/reference/index.rst | 1 | ||||
-rw-r--r-- | docs/reference/kombu.syn.rst | 11 | ||||
-rw-r--r-- | kombu/syn.py | 49 | ||||
-rw-r--r-- | kombu/transport/__init__.py | 2 | ||||
-rw-r--r-- | kombu/transport/mongodb.py | 2 | ||||
-rw-r--r-- | kombu/utils/compat.py | 33 | ||||
-rw-r--r-- | kombu/utils/eventio.py | 3 | ||||
-rw-r--r-- | t/unit/test_syn.py | 65 | ||||
-rw-r--r-- | t/unit/utils/test_compat.py | 57 |
10 files changed, 98 insertions, 130 deletions
@@ -99,6 +99,11 @@ Contributed by Joshua Harlow. +- Removed module ``kombu.syn`` + + ``detect_environment`` has been moved to kombu.utils.compat + + .. _version-3.0.35: 3.0.35 diff --git a/docs/reference/index.rst b/docs/reference/index.rst index 5e963c9b..249bd050 100644 --- a/docs/reference/index.rst +++ b/docs/reference/index.rst @@ -23,7 +23,6 @@ kombu.pools kombu.abstract kombu.resource - kombu.syn kombu.async kombu.async.hub kombu.async.semaphore diff --git a/docs/reference/kombu.syn.rst b/docs/reference/kombu.syn.rst deleted file mode 100644 index f5043b68..00000000 --- a/docs/reference/kombu.syn.rst +++ /dev/null @@ -1,11 +0,0 @@ -========================================================== - Eventlet/Gevent Detection - ``kombu.syn`` -========================================================== - -.. contents:: - :local: -.. currentmodule:: kombu.syn - -.. automodule:: kombu.syn - - .. autofunction:: detect_environment diff --git a/kombu/syn.py b/kombu/syn.py deleted file mode 100644 index f1f851b9..00000000 --- a/kombu/syn.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Detect gevent/eventlet environment.""" -from __future__ import absolute_import, unicode_literals - -import sys - -__all__ = ['detect_environment'] - -_environment = None - - -def blocking(fun, *args, **kwargs): - return fun(*args, **kwargs) - - -def select_blocking_method(type): - pass - - -def _detect_environment(): - # ## -eventlet- - if 'eventlet' in sys.modules: - try: - from eventlet.patcher import is_monkey_patched as is_eventlet - import socket - - if is_eventlet(socket): - return 'eventlet' - except ImportError: - pass - - # ## -gevent- - if 'gevent' in sys.modules: - try: - from gevent import socket as _gsocket - import socket - - if socket.socket is _gsocket.socket: - return 'gevent' - except ImportError: - pass - - return 'default' - - -def detect_environment(): - global _environment - if _environment is None: - _environment = _detect_environment() - return _environment diff --git a/kombu/transport/__init__.py b/kombu/transport/__init__.py index 5d247798..2bfc9f5d 100644 --- a/kombu/transport/__init__.py +++ b/kombu/transport/__init__.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals from kombu.five import string_t -from kombu.syn import _detect_environment +from kombu.utils.compat import _detect_environment from kombu.utils.imports import symbol_by_name diff --git a/kombu/transport/mongodb.py b/kombu/transport/mongodb.py index 1c1e0280..7620a2e6 100644 --- a/kombu/transport/mongodb.py +++ b/kombu/transport/mongodb.py @@ -14,7 +14,7 @@ from pymongo.cursor import CursorType from kombu.exceptions import VersionMismatch from kombu.five import Empty -from kombu.syn import _detect_environment +from kombu.utils.compat import _detect_environment from kombu.utils.encoding import bytes_to_str from kombu.utils.json import loads, dumps from kombu.utils.objects import cached_property diff --git a/kombu/utils/compat.py b/kombu/utils/compat.py index b4ee763e..acd438b8 100644 --- a/kombu/utils/compat.py +++ b/kombu/utils/compat.py @@ -24,6 +24,7 @@ except ImportError: # pragma: no cover except ImportError: register_after_fork = None # noqa +_environment = None def coro(gen): @@ -35,6 +36,38 @@ def coro(gen): return wind_up +def _detect_environment(): + # ## -eventlet- + if 'eventlet' in sys.modules: + try: + from eventlet.patcher import is_monkey_patched as is_eventlet + import socket + + if is_eventlet(socket): + return 'eventlet' + except ImportError: + pass + + # ## -gevent- + if 'gevent' in sys.modules: + try: + from gevent import socket as _gsocket + import socket + + if socket.socket is _gsocket.socket: + return 'gevent' + except ImportError: + pass + + return 'default' + + +def detect_environment(): + global _environment + if _environment is None: + _environment = _detect_environment() + return _environment + def entrypoints(namespace): try: from pkg_resources import iter_entry_points diff --git a/kombu/utils/eventio.py b/kombu/utils/eventio.py index 6ab93678..f5454c5c 100644 --- a/kombu/utils/eventio.py +++ b/kombu/utils/eventio.py @@ -15,9 +15,8 @@ import sys from numbers import Integral -from kombu.syn import detect_environment - from . import fileno +from .compat import detect_environment __all__ = ['poll'] diff --git a/t/unit/test_syn.py b/t/unit/test_syn.py deleted file mode 100644 index eaa80f90..00000000 --- a/t/unit/test_syn.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -import socket -import sys -import types - -from case import mock, patch - -from kombu import syn -from kombu.five import bytes_if_py2 - - -class test_syn: - - def test_compat(self): - assert syn.blocking(lambda: 10) == 10 - syn.select_blocking_method('foo') - - def test_detect_environment(self): - try: - syn._environment = None - X = syn.detect_environment() - assert syn._environment == X - Y = syn.detect_environment() - assert Y == X - finally: - syn._environment = None - - @mock.module_exists('eventlet', 'eventlet.patcher') - def test_detect_environment_eventlet(self): - with patch('eventlet.patcher.is_monkey_patched', create=True) as m: - assert sys.modules['eventlet'] - m.return_value = True - env = syn._detect_environment() - m.assert_called_with(socket) - assert env == 'eventlet' - - @mock.module_exists('gevent') - def test_detect_environment_gevent(self): - with patch('gevent.socket', create=True) as m: - prev, socket.socket = socket.socket, m.socket - try: - assert sys.modules['gevent'] - env = syn._detect_environment() - assert env == 'gevent' - finally: - socket.socket = prev - - def test_detect_environment_no_eventlet_or_gevent(self): - try: - sys.modules['eventlet'] = types.ModuleType( - bytes_if_py2('eventlet')) - sys.modules['eventlet.patcher'] = types.ModuleType( - bytes_if_py2('patcher')) - assert syn._detect_environment() == 'default' - finally: - sys.modules.pop('eventlet.patcher', None) - sys.modules.pop('eventlet', None) - syn._detect_environment() - try: - sys.modules['gevent'] = types.ModuleType(bytes_if_py2('gevent')) - assert syn._detect_environment() == 'default' - finally: - sys.modules.pop('gevent', None) - syn._detect_environment() diff --git a/t/unit/utils/test_compat.py b/t/unit/utils/test_compat.py index 963c50b6..c79b3202 100644 --- a/t/unit/utils/test_compat.py +++ b/t/unit/utils/test_compat.py @@ -1,7 +1,13 @@ from __future__ import absolute_import, unicode_literals +import socket +import sys +import types + from case import Mock, mock, patch +from kombu.five import bytes_if_py2 +from kombu.utils import compat from kombu.utils.compat import entrypoints, maybe_fileno @@ -28,3 +34,54 @@ def test_maybe_fileno(): assert maybe_fileno(f) is f.fileno() f.fileno.side_effect = ValueError() assert maybe_fileno(f) is None + + +class test_detect_environment: + + def test_detect_environment(self): + try: + compat._environment = None + X = compat.detect_environment() + assert compat._environment == X + Y = compat.detect_environment() + assert Y == X + finally: + compat._environment = None + + @mock.module_exists('eventlet', 'eventlet.patcher') + def test_detect_environment_eventlet(self): + with patch('eventlet.patcher.is_monkey_patched', create=True) as m: + assert sys.modules['eventlet'] + m.return_value = True + env = compat._detect_environment() + m.assert_called_with(socket) + assert env == 'eventlet' + + @mock.module_exists('gevent') + def test_detect_environment_gevent(self): + with patch('gevent.socket', create=True) as m: + prev, socket.socket = socket.socket, m.socket + try: + assert sys.modules['gevent'] + env = compat._detect_environment() + assert env == 'gevent' + finally: + socket.socket = prev + + def test_detect_environment_no_eventlet_or_gevent(self): + try: + sys.modules['eventlet'] = types.ModuleType( + bytes_if_py2('eventlet')) + sys.modules['eventlet.patcher'] = types.ModuleType( + bytes_if_py2('patcher')) + assert compat._detect_environment() == 'default' + finally: + sys.modules.pop('eventlet.patcher', None) + sys.modules.pop('eventlet', None) + compat._detect_environment() + try: + sys.modules['gevent'] = types.ModuleType(bytes_if_py2('gevent')) + assert compat._detect_environment() == 'default' + finally: + sys.modules.pop('gevent', None) + compat._detect_environment() |