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.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