Changeset 62374 for grass/trunk


Ignore:
Timestamp:
Oct 24, 2014, 2:50:38 AM (10 years ago)
Author:
zarch
Message:

pygrass: back to a pickable Module instance

File:
1 edited

Legend:

Unmodified
Added
Removed
  • grass/trunk/lib/python/pygrass/modules/interface/module.py

    r62352 r62374  
    44import sys
    55from multiprocessing import cpu_count
     6from functools import wraps
    67
    78if sys.version_info[0] == 2:
     
    2021from grass.pygrass.modules.interface.typedict import TypeDict
    2122from grass.pygrass.modules.interface.read import GETFROMTAG, DOC
    22 from grass.pygrass.messages import Messenger
     23from grass.pygrass.messages import get_msgr
     24
     25
     26def mdebug(level, msg='', extra=None):
     27    """Debug decorators for class methods.
     28
     29    :param level: the debug level
     30    :type level: int
     31    :param msg: Debug message
     32    :type msg: str
     33    :param extra: Function that return a string
     34    :type msg: func
     35    """
     36    msgr = get_msgr()
     37
     38    def decorator(method):
     39
     40        @wraps(method)
     41        def wrapper(self, *args, **kargs):
     42            sargs = ', ' + ' , '.join([repr(a) for a in args]) if args else ''
     43            skargs = (' , '.join(['%s=%r' % (k, v) for k, v in kargs.items()])
     44                      if kargs else '')
     45            opts = "%s%s%s" % (sargs, ',' if sargs and skargs else '', skargs)
     46            dmsg = "%s.%s(self%s): %s %s" % (self.__class__.__name__,
     47                                             method.__name__,
     48                                             opts, msg,
     49                                             extra(self, *args, **kargs)
     50                                             if extra else '')
     51            msgr.debug(level, dmsg)
     52            return method(self, *args, **kargs)
     53        return wrapper
     54    return decorator
     55
     56
     57def _get_bash(self, *args, **kargs):
     58    return self.get_bash()
     59
    2360
    2461class ParallelModuleQueue(object):
     
    338375    """
    339376    def __init__(self, cmd, *args, **kargs):
    340         self._msgr = Messenger()
    341        
    342377        if isinstance(cmd, unicode):
    343378            self.name = str(cmd)
     
    422457            self.run()
    423458            return self
    424        
     459
    425460        #
    426461        # check for extra kargs, set attribute and remove from dictionary
     
    457492            else:
    458493                raise ParameterError('%s is not a valid parameter.' % key)
    459 
    460         #
    461         # print debug message
    462         #
    463         self._msgr.debug(1, "Module.__call__(): %s" % (self.get_bash()))
    464494
    465495        #
     
    559589        return args
    560590
    561     def run(self, node=None):
     591    @mdebug(1, extra=_get_bash)
     592    def run(self):
    562593        """Run the module
    563594
Note: See TracChangeset for help on using the changeset viewer.