MCPcopy Create free account
hub / github.com/ipython/ipython / ShimModule

Class ShimModule

IPython/utils/shimmodule.py:53–94  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51
52
53class ShimModule(types.ModuleType):
54
55 def __init__(self, *args, **kwargs):
56 self._mirror = kwargs.pop("mirror")
57 src = kwargs.pop("src", None)
58 if src:
59 kwargs['name'] = src.rsplit('.', 1)[-1]
60 super(ShimModule, self).__init__(*args, **kwargs)
61 # add import hook for descendent modules
62 if src:
63 sys.meta_path.append(
64 ShimImporter(src=src, mirror=self._mirror)
65 )
66
67 @property
68 def __path__(self):
69 return []
70
71 @property
72 def __spec__(self):
73 """Don't produce __spec__ until requested"""
74 return import_module(self._mirror).__spec__
75
76 def __dir__(self):
77 return dir(import_module(self._mirror))
78
79 @property
80 def __all__(self):
81 """Ensure __all__ is always defined"""
82 mod = import_module(self._mirror)
83 try:
84 return mod.__all__
85 except AttributeError:
86 return [name for name in dir(mod) if not name.startswith('_')]
87
88 def __getattr__(self, key):
89 # Use the equivalent of import_item(name), see below
90 name = "%s.%s" % (self._mirror, key)
91 try:
92 return import_item(name)
93 except ImportError:
94 raise AttributeError(key)

Callers 9

frontend.pyFile · 0.90
parallel.pyFile · 0.90
nbformat.pyFile · 0.90
nbconvert.pyFile · 0.90
html.pyFile · 0.90
qt.pyFile · 0.90
console.pyFile · 0.90
__init__.pyFile · 0.90
config.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected