##// END OF EJS Templates
Fix exception causes all over the codebase
Fix exception causes all over the codebase

File last commit:

r25833:e0ea7222
r25833:e0ea7222
Show More
importstring.py
39 lines | 1.0 KiB | text/x-python | PythonLexer
Brian Granger
A number of changes to how traitlets and components work....
r2229 # encoding: utf-8
"""
A simple utility to import something by its string name.
"""
Min RK
use getattr in import_item, shim_module...
r20859 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Brian Granger
A number of changes to how traitlets and components work....
r2229
def import_item(name):
Fernando Perez
Add proper docstring.
r11016 """Import and return ``bar`` given the string ``foo.bar``.
Calling ``bar = import_item("foo.bar")`` is the functional equivalent of
executing the code ``from foo import bar``.
Parameters
----------
name : string
The fully qualified name of the module/package being imported.
Returns
-------
mod : module object
The module that was imported.
"""
Fernando Perez
Add explicit comment about disabled code in importstring....
r3121
Fernando Perez
Restructure code to avoid unnecessary list slicing by using rsplit.
r11018 parts = name.rsplit('.', 1)
if len(parts) == 2:
# called with 'foo.bar....'
package, obj = parts
module = __import__(package, fromlist=[obj])
Fernando Perez
Fix error in test suite startup with dotted import names....
r6738 try:
Min RK
use getattr in import_item, shim_module...
r20859 pak = getattr(module, obj)
Ram Rachum
Fix exception causes all over the codebase
r25833 except AttributeError as e:
raise ImportError('No module named %s' % obj) from e
Fernando Perez
Fix error in test suite startup with dotted import names....
r6738 return pak
Thomas Kluyver
Cleaning up old code to simplify 2to3 conversion.
r3108 else:
Fernando Perez
Restructure code to avoid unnecessary list slicing by using rsplit.
r11018 # called with un-dotted string
return __import__(parts[0])