mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-10 04:22:38 +02:00
caching can handle None
This commit is contained in:
parent
37d341cec4
commit
ebea658f5c
1 changed files with 7 additions and 6 deletions
|
|
@ -12,16 +12,17 @@ class Cacher(object):
|
||||||
def __call__(self, *args):
|
def __call__(self, *args):
|
||||||
if len(self.ignore_args) != 0:
|
if len(self.ignore_args) != 0:
|
||||||
ca = [a for i,a in enumerate(args) if i not in self.ignore_args]
|
ca = [a for i,a in enumerate(args) if i not in self.ignore_args]
|
||||||
|
else:
|
||||||
|
ca = args
|
||||||
|
# this makes sure we only add an observer once, and that None can be in args
|
||||||
cached_args = []
|
cached_args = []
|
||||||
for a in ca:
|
for a in ca:
|
||||||
if not any(a is ai for ai in cached_args):
|
if (not any(a is ai for ai in cached_args)) and a is not None:
|
||||||
cached_args.append(a)
|
cached_args.append(a)
|
||||||
else:
|
|
||||||
cached_args = args
|
|
||||||
|
|
||||||
|
|
||||||
if not all([isinstance(arg, Observable) for arg in cached_args]):
|
if not all([isinstance(arg, Observable) for arg in cached_args]):
|
||||||
return self.operation(*args)
|
return self.operation(*args)
|
||||||
|
|
||||||
if cached_args in self.cached_inputs:
|
if cached_args in self.cached_inputs:
|
||||||
i = self.cached_inputs.index(cached_args)
|
i = self.cached_inputs.index(cached_args)
|
||||||
if self.inputs_changed[i]:
|
if self.inputs_changed[i]:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue