1 from functools
import wraps
6 def wrapper(*args
, **kwargs
):
8 key
= fun
.__name
__, args
# add support for kwargs
9 if key
not in self
.buffered_vals
:
10 self
.buffered_vals
[key
] = fun(*args
, **kwargs
)
11 return self
.buffered_vals
[key
]
15 def once_a_frame(fun
):
17 def wrapper(*args
, **kwargs
):
19 key
= fun
.__name
__, args
# add support for kwargs
20 if key
not in self
.buffered_vals_frm
:
21 self
.buffered_vals_frm
[key
] = fun(*args
, **kwargs
)
22 return self
.buffered_vals_frm
[key
]
29 self
.eng
.attach_obs(self
.on_start_frame
)
30 # there are issues if the object has another on_start_frame
31 self
.buffered_vals
, self
.buffered_vals_frm
= {}, {}
33 def on_start_frame(self
):
34 self
.buffered_vals_frm
= {}
37 self
.eng
.detach_obs(self
.on_start_frame
)
38 self
.buffered_vals
= self
.buffered_vals_frm
= None