"""DataContext: per-scenario state for the data module (variables + env)."""from__future__importannotationsimportosfromdataclassesimportdataclass,fieldfromtypingimportAny
[docs]@dataclassclassDataContext:"""Holds all data-module state for a scenario. Lives at ``context.steplib.data`` and is reset between scenarios. Attributes: variables: User-defined variables stored by steps. _env_backup: Snapshot of environment variables modified during the scenario, so they can be restored on reset/cleanup. """variables:dict[str,Any]=field(default_factory=dict)_env_backup:dict[str,str|None]=field(default_factory=dict)
[docs]defreset(self)->None:"""Reset per-scenario state, restoring any modified env vars."""self.variables={}forkey,originalinself._env_backup.items():iforiginalisNone:os.environ.pop(key,None)else:os.environ[key]=originalself._env_backup={}
[docs]defcleanup(self)->None:"""Restore any modified env vars after the scenario."""forkey,originalinself._env_backup.items():iforiginalisNone:os.environ.pop(key,None)else:os.environ[key]=originalself._env_backup={}