Skip to content
Snippets Groups Projects
Commit 4ac969c8 authored by gpotter2's avatar gpotter2
Browse files

Fix iter functions in config

parent b36da963
No related branches found
No related tags found
No related merge requests found
...@@ -171,7 +171,8 @@ class CommandsList(list): ...@@ -171,7 +171,8 @@ class CommandsList(list):
def lsc(): def lsc():
print(repr(conf.commands)) print(repr(conf.commands))
class CacheInstance(dict): class CacheInstance(dict, object):
__slots__ = ["timeout", "name", "_timetable", "__dict__"]
def __init__(self, name="noname", timeout=None): def __init__(self, name="noname", timeout=None):
self.timeout = timeout self.timeout = timeout
self.name = name self.name = name
...@@ -179,6 +180,8 @@ class CacheInstance(dict): ...@@ -179,6 +180,8 @@ class CacheInstance(dict):
def flush(self): def flush(self):
self.__init__(name=self.name, timeout=self.timeout) self.__init__(name=self.name, timeout=self.timeout)
def __getitem__(self, item): def __getitem__(self, item):
if item in self.__slots__:
return object.__getattribute__(self, item)
val = dict.__getitem__(self,item) val = dict.__getitem__(self,item)
if self.timeout is not None: if self.timeout is not None:
t = self._timetable[item] t = self._timetable[item]
...@@ -193,6 +196,8 @@ class CacheInstance(dict): ...@@ -193,6 +196,8 @@ class CacheInstance(dict):
except KeyError: except KeyError:
return default return default
def __setitem__(self, item, v): def __setitem__(self, item, v):
if item in self.__slots__:
return object.__setattr__(self, item, v)
self._timetable[item] = time.time() self._timetable[item] = time.time()
dict.__setitem__(self, item,v) dict.__setitem__(self, item,v)
def update(self, other): def update(self, other):
...@@ -200,36 +205,36 @@ class CacheInstance(dict): ...@@ -200,36 +205,36 @@ class CacheInstance(dict):
self._timetable.update(other._timetable) self._timetable.update(other._timetable)
def iteritems(self): def iteritems(self):
if self.timeout is None: if self.timeout is None:
return dict.iteritems(self) return six.iteritems(self.__dict__)
t0=time.time() t0=time.time()
return ((k,v) for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout) return ((k,v) for (k,v) in six.iteritems(self.__dict__) if t0-self._timetable[k] < self.timeout)
def iterkeys(self): def iterkeys(self):
if self.timeout is None: if self.timeout is None:
return dict.iterkeys(self) return six.iterkeys(self.__dict__)
t0=time.time() t0=time.time()
return (k for k in dict.iterkeys(self) if t0-self._timetable[k] < self.timeout) return (k for k in six.iterkeys(self.__dict__) if t0-self._timetable[k] < self.timeout)
def __iter__(self): def __iter__(self):
return six.iterkeys(self) return six.iterkeys(self.__dict__)
def itervalues(self): def itervalues(self):
if self.timeout is None: if self.timeout is None:
return dict.itervalues(self) return six.itervalues(self.__dict__)
t0=time.time() t0=time.time()
return (v for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout) return (v for (k,v) in six.iteritems(self.__dict__) if t0-self._timetable[k] < self.timeout)
def items(self): def items(self):
if self.timeout is None: if self.timeout is None:
return dict.items(self) return dict.items(self)
t0=time.time() t0=time.time()
return [(k,v) for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout] return [(k,v) for (k,v) in six.iteritems(self.__dict__) if t0-self._timetable[k] < self.timeout]
def keys(self): def keys(self):
if self.timeout is None: if self.timeout is None:
return dict.keys(self) return dict.keys(self)
t0=time.time() t0=time.time()
return [k for k in dict.iterkeys(self) if t0-self._timetable[k] < self.timeout] return [k for k in six.iterkeys(self.__dict__) if t0-self._timetable[k] < self.timeout]
def values(self): def values(self):
if self.timeout is None: if self.timeout is None:
return dict.values(self) return six.values(self)
t0=time.time() t0=time.time()
return [v for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout] return [v for (k,v) in six.iteritems(self.__dict__) if t0-self._timetable[k] < self.timeout]
def __len__(self): def __len__(self):
if self.timeout is None: if self.timeout is None:
return dict.__len__(self) return dict.__len__(self)
...@@ -239,9 +244,9 @@ class CacheInstance(dict): ...@@ -239,9 +244,9 @@ class CacheInstance(dict):
def __repr__(self): def __repr__(self):
s = [] s = []
if self: if self:
mk = max(len(k) for k in six.iterkeys(self)) mk = max(len(k) for k in six.iterkeys(self.__dict__))
fmt = "%%-%is %%s" % (mk+1) fmt = "%%-%is %%s" % (mk+1)
for item in six.iteritems(self): for item in six.iteritems(self.__dict__):
s.append(fmt % item) s.append(fmt % item)
return "\n".join(s) return "\n".join(s)
...@@ -467,4 +472,3 @@ def crypto_validator(func): ...@@ -467,4 +472,3 @@ def crypto_validator(func):
"Please install python-cryptography v1.7 or later.") "Please install python-cryptography v1.7 or later.")
return func(*args, **kwargs) return func(*args, **kwargs)
return func_in return func_in
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment