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

import types
import modulehacker

_modules
= {}
_decorators
= []
def register(decorator, modules=None):
   
"""Register a decorator for a list of module names."""
   
if not decorator:
       
return
   
if not modules and decorator in _decorators:
       
return
   
if not modules:
        _decorators
.append(decorator)
       
return

   
if isinstance(modules, str):
        modules
= (modules,)
   
for module in modules:
       
if module not in _modules:
            _modules
[module] = []
        _modules
[module].append(decorator)

class Hacker(modulehacker.Hacker):
   
def hack(self, module):
       
for decorator in _modules.get(module.__name__, ()):
           
self.decorate(module, decorator)
       
for decorator in _decorators:
           
self.decorate(module, decorator)
       
return module
   
def decorate(self, module, decorator):
       
for attr in module.__dict__:
            obj
= getattr(module, attr)
           
if isinstance(obj, types.FunctionType):
                setattr
(module, attr, decorator(obj))

modulehacker
.register(Hacker())

Diff to Previous Revision

--- revision 1 2011-06-08 04:55:02
+++ revision 2 2011-06-09 22:51:28
@@ -30,7 +30,7 @@
             
self.decorate(module, decorator)
         
return module
     
def decorate(self, module, decorator):
-        for attr in dir(module):
+        for attr in module.__dict__:
             obj
= getattr(module, attr)
             
if isinstance(obj, types.FunctionType):
                 setattr
(module, attr, decorator(obj))

History