Merge pull request #117 from michele-comitini/row_speedup2

Some speedups
This commit is contained in:
mdipierro
2013-06-29 09:17:37 -07:00
+22 -37
View File
@@ -6865,23 +6865,24 @@ class Row(object):
this is only used to store a Row this is only used to store a Row
""" """
def __init__(self,*args,**kwargs): __init__ = lambda self,*args,**kwargs: self.__dict__.update(*args,**kwargs)
self.__dict__.update(*args,**kwargs)
def __getitem__(self, key): def __getitem__(self, k):
key=str(key) key=str(k)
_extra = getattr(self, '_extra', None)
if _extra:
return _extra.get(key)
if v:
return v
m = REGEX_TABLE_DOT_FIELD.match(key) m = REGEX_TABLE_DOT_FIELD.match(key)
if key in self.get('_extra',{}): if m:
return self._extra[key]
elif m:
try: try:
return ogetattr(self, m.group(1))[m.group(2)] return ogetattr(self, m.group(1))[m.group(2)]
except (KeyError,AttributeError,TypeError): except (KeyError,AttributeError,TypeError):
key = m.group(2) key = m.group(2)
return ogetattr(self, key) return ogetattr(self, key)
def __setitem__(self, key, value): __setitem__ = lambda self, key, value: setattr(self, str(key), value)
setattr(self, str(key), value)
__delitem__ = object.__delattr__ __delitem__ = object.__delattr__
@@ -6889,47 +6890,31 @@ class Row(object):
__call__ = __getitem__ __call__ = __getitem__
def get(self,key,default=None): get = lambda self, key, default=None: self.__dict__.get(key,default)
return self.__dict__.get(key,default)
def __contains__(self,key):
return key in self.__dict__
has_key = __contains__ has_key = __contains__ = lambda self, key: key in self.__dict__
def __nonzero__(self): __nonzero__ = lambda self: len(self.__dict__)>0
return len(self.__dict__)>0
def update(self, *args, **kwargs): update = lambda self, *args, **kwargs: self.__dict__.update(*args, **kwargs)
self.__dict__.update(*args, **kwargs)
def keys(self): keys = lambda self: self.__dict__.keys()
return self.__dict__.keys()
def items(self): items = lambda self: self.__dict__.items()
return self.__dict__.items()
def values(self): values = lambda self: self.__dict__.values()
return self.__dict__.values()
def __iter__(self): __iter__ = lambda self: self.__dict__.__iter__()
return self.__dict__.__iter__()
def iteritems(self): iteritems = lambda self: self.__dict__.iteritems()
return self.__dict__.iteritems()
def __str__(self): __str__ = __repr__ = lambda self: '<Row %s>' % self.as_dict()
### this could be made smarter
return '<Row %s>' % self.as_dict()
def __repr__(self): __int__ = lambda self: object.__getattribute__(self,'id')
return '<Row %s>' % self.as_dict()
def __int__(self): __long__ = lambda self: long(object.__getattribute__(self,'id'))
return object.__getattribute__(self,'id')
def __long__(self):
return long(object.__getattribute__(self,'id'))
def __eq__(self,other): def __eq__(self,other):
try: try: