"""Cooperative pickle hooks for request mixins.""" from __future__ import annotations from typing import Any class ReqStateMixin: """Single pickle entrypoint for req classes composed from multiple mixins. Feature mixins should override `_customize_req_state()` and/or `_restore_req_runtime_state()` and always call `super()` to keep the chain intact. """ def __getstate__(self) -> dict[str, Any]: return self._customize_req_state(self.__dict__.copy()) def __setstate__(self, state: dict[str, Any]) -> None: self.__dict__.update(state) self._restore_req_runtime_state() def _customize_req_state(self, state: dict[str, Any]) -> dict[str, Any]: return state def _restore_req_runtime_state(self) -> None: pass