Welcome, guest | Sign In | My Account | Store | Cart
"""moduleclass module"""

import modulehacker # from ActiveState recipe #577740

class Module:
    def __init__(self, module):
        attrs = dir(self)
        for attr in dir(module):
            if attr in attrs:
                continue
            setattr(self, attr, getattr(module, attr))

_moduleclasses = {}
def register(cls):
    _moduleclasses[cls.__name__] = cls
    return cls

class Hacker(modulehacker.Hacker):
    def hack(self, module):
        name = getattr(module, "__moduleclass__", None)
        if not name:
            return module # untouched
        cls = _moduleclasses.get(name)
        if not cls:
            raise ImportError("Cannot use an unregistered module class")
        newmodule = cls(module)
        newmodule.__moduleclass__ = cls
        return newmodule

modulehacker.register(Hacker())

History