Commit 37c975ea authored by Valentin Samir's avatar Valentin Samir

Allow both unicode and bytes dotted string in utils.import_attr

parent 75b3fe4d
Pipeline #601 failed with stage
in 10 minutes and 19 seconds
......@@ -13,6 +13,10 @@ Added
* Add a test for login with missing parameter (username or password or both)
* Allow both unicode and bytes dotted string in utils.import_attr
v0.7.4 - 2016-09-07
......@@ -117,14 +117,18 @@ def import_attr(path):
transform a python dotted path to the attr
:param path: A dotted path to a python object or a python object
:type path: :obj:`unicode` or anything
:type path: :obj:`unicode` or :obj:`str` or anything
:return: The python object pointed by the dotted path or the python object unchanged
if not isinstance(path, str):
# if we got a str, decode it to unicode (normally it should only contain ascii)
if isinstance(path, six.binary_type):
path = path.decode("utf-8")
# if path is not an unicode, return it unchanged (may be it is already the attribute to import)
if not isinstance(path, six.text_type):
return path
if "." not in path:
if u"." not in path:
ValueError("%r should be of the form `module.attr` and we just got `attr`" % path)
module, attr = path.rsplit('.', 1)
module, attr = path.rsplit(u'.', 1)
return getattr(import_module(module), attr)
except ImportError:
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment