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
"""
def __init__(self,*args,**kwargs):
self.__dict__.update(*args,**kwargs)
__init__ = lambda self,*args,**kwargs: self.__dict__.update(*args,**kwargs)
def __getitem__(self, key):
key=str(key)
def __getitem__(self, k):
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)
if key in self.get('_extra',{}):
return self._extra[key]
elif m:
if m:
try:
return ogetattr(self, m.group(1))[m.group(2)]
except (KeyError,AttributeError,TypeError):
key = m.group(2)
return ogetattr(self, key)
def __setitem__(self, key, value):
setattr(self, str(key), value)
__setitem__ = lambda self, key, value: setattr(self, str(key), value)
__delitem__ = object.__delattr__
@@ -6889,47 +6890,31 @@ class Row(object):
__call__ = __getitem__
def get(self,key,default=None):
return self.__dict__.get(key,default)
get = lambda self, key, default=None: 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):
return len(self.__dict__)>0
__nonzero__ = lambda self: len(self.__dict__)>0
def update(self, *args, **kwargs):
self.__dict__.update(*args, **kwargs)
update = lambda self, *args, **kwargs: self.__dict__.update(*args, **kwargs)
def keys(self):
return self.__dict__.keys()
keys = lambda self: self.__dict__.keys()
def items(self):
return self.__dict__.items()
items = lambda self: self.__dict__.items()
def values(self):
return self.__dict__.values()
values = lambda self: self.__dict__.values()
def __iter__(self):
return self.__dict__.__iter__()
__iter__ = lambda self: self.__dict__.__iter__()
def iteritems(self):
return self.__dict__.iteritems()
iteritems = lambda self: self.__dict__.iteritems()
def __str__(self):
### this could be made smarter
return '<Row %s>' % self.as_dict()
__str__ = __repr__ = lambda self: '<Row %s>' % self.as_dict()
def __repr__(self):
return '<Row %s>' % self.as_dict()
__int__ = lambda self: object.__getattribute__(self,'id')
def __int__(self):
return object.__getattribute__(self,'id')
__long__ = lambda self: long(object.__getattribute__(self,'id'))
def __long__(self):
return long(object.__getattribute__(self,'id'))
def __eq__(self,other):
try: