| """ | |
| This module adds several functions for interactive source code inspection. | |
| """ | |
| def get_class(lookup_view): | |
| """ | |
| Convert a string version of a class name to the object. | |
| For example, get_class('sympy.core.Basic') will return | |
| class Basic located in module sympy.core | |
| """ | |
| if isinstance(lookup_view, str): | |
| mod_name, func_name = get_mod_func(lookup_view) | |
| if func_name != '': | |
| lookup_view = getattr( | |
| __import__(mod_name, {}, {}, ['*']), func_name) | |
| if not callable(lookup_view): | |
| raise AttributeError( | |
| "'%s.%s' is not a callable." % (mod_name, func_name)) | |
| return lookup_view | |
| def get_mod_func(callback): | |
| """ | |
| splits the string path to a class into a string path to the module | |
| and the name of the class. | |
| Examples | |
| ======== | |
| >>> from sympy.utilities.source import get_mod_func | |
| >>> get_mod_func('sympy.core.basic.Basic') | |
| ('sympy.core.basic', 'Basic') | |
| """ | |
| dot = callback.rfind('.') | |
| if dot == -1: | |
| return callback, '' | |
| return callback[:dot], callback[dot + 1:] | |