diff --git a/pymodbus/client/async/__init__.py b/pymodbus/client/async/__init__.py index d14d0dd32..683984697 100644 --- a/pymodbus/client/async/__init__.py +++ b/pymodbus/client/async/__init__.py @@ -31,4 +31,14 @@ # For asyncio the actual client is returned and event loop is asyncio loop """ -from pymodbus.client.async.deprecated.async import * +from pymodbus.compat import is_installed + +installed = is_installed('twisted') +if installed: + # Import deprecated async client only if twisted is installed #338 + from pymodbus.client.async.deprecated.async import * +else: + import logging + logger = logging.getLogger(__name__) + logger.warning("Not Importing deprecated clients. " + "Dependency Twisted is not Installed") diff --git a/pymodbus/client/async/deprecated/__init__.py b/pymodbus/client/async/deprecated/__init__.py index 902761faf..02d241a44 100644 --- a/pymodbus/client/async/deprecated/__init__.py +++ b/pymodbus/client/async/deprecated/__init__.py @@ -43,5 +43,5 @@ """ -def deprecated(name): # pragma: no cover +def deprecated(name): # pragma: no cover warnings.warn(WARNING.format(name), DeprecationWarning) diff --git a/pymodbus/compat.py b/pymodbus/compat.py index cdb0a31fe..48920ba74 100644 --- a/pymodbus/compat.py +++ b/pymodbus/compat.py @@ -58,6 +58,16 @@ implements_to_string = lambda x: x byte2int = lambda b: b + if PYTHON_VERSION >= (3, 4): + def is_installed(module): + import importlib.util + found = importlib.util.find_spec(module) + return found + else: + def is_installed(module): + import importlib + found = importlib.find_loader(module) + return found # --------------------------------------------------------------------------- # # python > 2.5 compatability layer # --------------------------------------------------------------------------- # @@ -76,3 +86,11 @@ def implements_to_string(klass): klass.__unicode__ = klass.__str__ klass.__str__ = lambda x: x.__unicode__().encode('utf-8') return klass + + def is_installed(module): + import imp + try: + imp.find_module(module) + return True + except ImportError: + return False \ No newline at end of file