Source code for requests_cache.serializers.pipeline

from typing import Any, List, Union

from ..models import CachedResponse


[docs]class Stage: """Generic class to wrap serialization steps with consistent ``dumps()`` and ``loads()`` methods""" def __init__(self, obj: Any, dumps: str = "dumps", loads: str = "loads"): self.obj = obj self.dumps = getattr(obj, dumps) self.loads = getattr(obj, loads)
[docs]class SerializerPipeline: """A sequence of steps used to serialize and deserialize response objects""" def __init__(self, steps: List): self.steps = steps self.dump_steps = [step.dumps for step in steps] self.load_steps = [step.loads for step in reversed(steps)]
[docs] def dumps(self, value) -> Union[str, bytes]: for step in self.dump_steps: value = step(value) return value
[docs] def loads(self, value) -> CachedResponse: for step in self.load_steps: value = step(value) return value