@contextmanager
def add_to_builtins(new_globals: dict[str, Any]) -> Iterator[None]:
old_globals = {key: getattr(builtins, key, None) for key in new_globals}
try:
for key, value in new_globals.items():
setattr(builtins, key, value) # Inject new global
yield
finally:
for key, value in old_globals.items():
if value is None:
delattr(builtins, key) # Remove added globals
else:
setattr(builtins, key, value) # Restore original value