selectors.py
changeset 5302 dfd147de06b2
parent 5244 5467674ad101
parent 5281 d01a02d07a57
child 5328 c51e8f62652a
equal deleted inserted replaced
5298:66b0987716f9 5302:dfd147de06b2
   200 
   200 
   201 # helpers for debugging selectors
   201 # helpers for debugging selectors
   202 SELECTOR_LOGGER = logging.getLogger('cubicweb.selectors')
   202 SELECTOR_LOGGER = logging.getLogger('cubicweb.selectors')
   203 TRACED_OIDS = None
   203 TRACED_OIDS = None
   204 
   204 
   205 def _trace_selector(cls, ret):
   205 def _trace_selector(cls, selector, args, ret):
   206     # /!\ lltrace decorates pure function or __call__ method, this
   206     # /!\ lltrace decorates pure function or __call__ method, this
   207     #     means argument order may be different
   207     #     means argument order may be different
   208     if isinstance(cls, Selector):
   208     if isinstance(cls, Selector):
   209         selname = str(cls)
   209         selname = str(cls)
   210         vobj = args[0]
   210         vobj = args[0]
   223     if CubicWebConfiguration.mode == 'system': # XXX config.debug
   223     if CubicWebConfiguration.mode == 'system': # XXX config.debug
   224         return selector
   224         return selector
   225     def traced(cls, *args, **kwargs):
   225     def traced(cls, *args, **kwargs):
   226         ret = selector(cls, *args, **kwargs)
   226         ret = selector(cls, *args, **kwargs)
   227         if TRACED_OIDS is not None:
   227         if TRACED_OIDS is not None:
   228             _trace_selector(cls, ret)
   228             _trace_selector(cls, selector, args, ret)
   229         return ret
   229         return ret
   230     traced.__name__ = selector.__name__
   230     traced.__name__ = selector.__name__
   231     traced.__doc__ = selector.__doc__
   231     traced.__doc__ = selector.__doc__
   232     return traced
   232     return traced
   233 
   233