import sys import types import warnings class EncapsulationWarning(RuntimeWarning): pass class ModuleWrapper(types.ModuleType): def __init__(self, context): self.context = context super(ModuleWrapper, self).__init__( context.__name__, context.__doc__) def __getattribute__(self, key): context = object.__getattribute__(self, 'context') if key not in context.__all__: warnings.warn('%s not in %s.__all__' % (key, context.__name__), EncapsulationWarning, 2) return context.__getattribute__(key) import example sys.modules['example'] = ModuleWrapper(example)