Row code speedups

This commit is contained in:
Michele Comitini
2013-06-27 16:57:37 +02:00
parent 7564f5f671
commit c25f337ffe

View File

@@ -6857,23 +6857,26 @@ 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)
m = REGEX_TABLE_DOT_FIELD.match(key)
if key in self.get('_extra',{}):
return self._extra[key]
elif m:
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)
idot = key.find('.')
if idot != -1:
m = (key[:idot],key[idot+1:])
try:
return ogetattr(self, m.group(1))[m.group(2)]
return ogetattr(self, m[0])[m[1]]
except (KeyError,AttributeError,TypeError):
key = m.group(2)
key = m[1]
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__
@@ -6881,47 +6884,31 @@ class Row(object):
__call__ = __getitem__
def get(self,key,default=None):
return self.__dict__.get(key,default)
get = lambda self, key, default: 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: