|
@@ -122,19 +122,20 @@ class MagicModule(ModuleType):
|
|
|
return list(set(self.__all__) | DEFAULT_ATTRS)
|
|
|
|
|
|
|
|
|
-def create_module(name, attrs, cls_attrs=None, pkg=None,
|
|
|
- bases=(MagicModule, ), prepare_attr=None):
|
|
|
+def create_module(name, attrs, cls_attrs=None, pkg=None, base=MagicModule,
|
|
|
+ prepare_attr=None):
|
|
|
fqdn = '.'.join([pkg.__name__, name]) if pkg else name
|
|
|
cls_attrs = {} if cls_attrs is None else cls_attrs
|
|
|
|
|
|
attrs = dict((attr_name, prepare_attr(attr) if prepare_attr else attr)
|
|
|
for attr_name, attr in attrs.iteritems())
|
|
|
- module = sys.modules[fqdn] = type(name, bases, cls_attrs)(fqdn)
|
|
|
+ module = sys.modules[fqdn] = type(name, (base, ), cls_attrs)(fqdn)
|
|
|
module.__dict__.update(attrs)
|
|
|
return module
|
|
|
|
|
|
|
|
|
-def recreate_module(name, compat_modules=(), by_module={}, direct={}, **attrs):
|
|
|
+def recreate_module(name, compat_modules=(), by_module={}, direct={},
|
|
|
+ base=MagicModule, **attrs):
|
|
|
old_module = sys.modules[name]
|
|
|
origins = get_origins(by_module)
|
|
|
compat_modules = COMPAT_MODULES.get(name, ())
|
|
@@ -144,7 +145,7 @@ def recreate_module(name, compat_modules=(), by_module={}, direct={}, **attrs):
|
|
|
_object_origins=origins,
|
|
|
__all__=tuple(set(reduce(operator.add, map(tuple, [
|
|
|
compat_modules, origins, direct, attrs])))))
|
|
|
- new_module = create_module(name, attrs, cls_attrs=cattrs)
|
|
|
+ new_module = create_module(name, attrs, cls_attrs=cattrs, base=base)
|
|
|
new_module.__dict__.update(dict((mod, get_compat_module(new_module, mod))
|
|
|
for mod in compat_modules))
|
|
|
return old_module, new_module
|