diff options
author | Chris Liechti <cliechti@gmx.net> | 2015-08-07 14:42:15 +0200 |
---|---|---|
committer | Chris Liechti <cliechti@gmx.net> | 2015-08-07 14:42:15 +0200 |
commit | baec2a303b12c471be135a4f6fa00b1567410c69 (patch) | |
tree | e506216a0a3aefe15e20fd5ef4dfd3dfcfd434a6 | |
parent | a1d5c6ded5e69d854e1e95ee35c027f7a6c7aa79 (diff) | |
download | pyserial-git-baec2a303b12c471be135a4f6fa00b1567410c69.tar.gz |
serial_for_url: use importlib instead of __import__
-rw-r--r-- | serial/__init__.py | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/serial/__init__.py b/serial/__init__.py index e9cce1e..d7dcde3 100644 --- a/serial/__init__.py +++ b/serial/__init__.py @@ -8,6 +8,7 @@ VERSION = '3.0a' +import importlib import sys if sys.platform == 'cli': @@ -51,21 +52,22 @@ def serial_for_url(url, *args, **kwargs): klass = Serial # 'native' implementation # check port type and get class try: - url_nocase = url.lower() + url_lowercase = url.lower() except AttributeError: # it's not a string, use default pass else: - if '://' in url_nocase: - protocol = url_nocase.split('://', 1)[0] + if '://' in url_lowercase: + protocol = url_lowercase.split('://', 1)[0] + module_name = '.protocol_%s' % (protocol,) for package_name in protocol_handler_packages: - module_name = '%s.protocol_%s' % (package_name, protocol,) + package = importlib.import_module(package_name) try: - handler_module = __import__(module_name) + handler_module = importlib.import_module(module_name, package_name) except ImportError: pass else: - klass = sys.modules[module_name].Serial + klass = handler_module.Serial break else: raise ValueError('invalid URL, protocol %r not known' % (protocol,)) |