Source code for steplib.modules.data.context
"""DataContext: per-scenario state for the data module (variables + env)."""
from __future__ import annotations
import os
from dataclasses import dataclass, field
from typing import Any
[docs]
@dataclass
class DataContext:
"""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]
def reset(self) -> None:
"""Reset per-scenario state, restoring any modified env vars."""
self.variables = {}
for key, original in self._env_backup.items():
if original is None:
os.environ.pop(key, None)
else:
os.environ[key] = original
self._env_backup = {}
[docs]
def cleanup(self) -> None:
"""Restore any modified env vars after the scenario."""
for key, original in self._env_backup.items():
if original is None:
os.environ.pop(key, None)
else:
os.environ[key] = original
self._env_backup = {}