Source code for tape.utils.utils

[docs] class IndexCallable: """Provide getitem syntax for functions >>> def inc(x): ... return x + 1 >>> I = IndexCallable(inc) >>> I[3] 4 """
[docs] __slots__ = ("fn", "dirty", "ensemble", "label")
def __init__(self, fn, dirty, ensemble, label):
[docs] self.fn = fn
[docs] self.dirty = dirty # propagate metadata
[docs] self.ensemble = ensemble # propagate ensemble metadata
[docs] self.label = label # propagate label
[docs] def __getitem__(self, key): result = self.fn(key) result.dirty = self.dirty # propagate metadata result.ensemble = self.ensemble # propagate ensemble metadata result.label = self.label # propagate label return result