def log_exception(cls, self, method, error): if self: method_name = '{cls}.{method}'.format(cls=type(self), method=nameof(method)) else: method_name = nameof(method) message = '\t' * cls.get_padding() message = 'An exception occurred when calling {0}'.format(method_name) cls.log_for(self, message)
def log_exception(cls, self, method, error): if self: method_name = '{cls}.{method}'.format(cls=type(self), method=nameof(method)) else: method_name = nameof(method) message = '\t' * cls.get_padding() message = 'An exception occurred when calling {0}'.format( method_name) cls.log_for(self, message)
def log_for(cls, self, message): clsname = nameof(type(self)) if self else None logger = logging.getLogger(clsname) logger.setLevel(logging.DEBUG) if output and not logger.handlers: logger.addHandler(logging.StreamHandler(output)) logger.debug(message)
def log_signature(cls, self, method, *args, **kwargs): if self: # Since many of our objects implement __getattribute__, we get # into an infinite recursion, so let's avoid calling str and # repr. args = (('<{0} at {1:#x}>'.format(nameof(type(self)), id(self)), ) + args) arguments = ', '.join('%r' % a for a in args) if args else '' if kwargs: arguments += ', '.join('%s=%r' % (k, v) for k, v in iteritems_(kwargs)) if self: method_name = '{cls}.{method}'.format(cls=type(self), method=nameof(method)) else: method_name = nameof(method) message = '\t' * cls.get_padding() message += ('Calling {method}({arguments}) ...'.format( method=method_name, arguments=arguments)) cls.log_for(type(self) if self else None, message)
def log_signature(cls, self, method, *args, **kwargs): if self: # Since many of our objects implement __getattribute__, we get # into an infinite recursion, so let's avoid calling str and # repr. args = (('<{0} at {1:#x}>'.format(nameof(type(self)), id(self)), ) + args) arguments = ', '.join('%r' % a for a in args) if args else '' if kwargs: arguments += ', '.join('%s=%r' % (k, v) for k, v in iteritems_(kwargs)) if self: method_name = '{cls}.{method}'.format(cls=type(self), method=nameof(method)) else: method_name = nameof(method) message = '\t' * cls.get_padding() message += ('Calling {method}({arguments}) ...'. format(method=method_name, arguments=arguments)) cls.log_for(type(self) if self else None, message)
def __iter__(self): from xoutil.objects import nameof return iter(this(nameof(self)))
def __new__(cls, name, bases, attrs): return super(new_meta, cls).__new__(cls, nameof(target), bases, attrs)