CustomSerializer Class — langchain Architecture
Architecture documentation for the CustomSerializer class in conftest.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 17687182_d87a_b111_7eee_20c37ea4b07e["CustomSerializer"] 4159e649_0289_4167_86d9_2e12affd22da["conftest.py"] 17687182_d87a_b111_7eee_20c37ea4b07e -->|defined in| 4159e649_0289_4167_86d9_2e12affd22da 79c6c778_6ee3_aaad_4348_5461dfcad35d["serialize()"] 17687182_d87a_b111_7eee_20c37ea4b07e -->|method| 79c6c778_6ee3_aaad_4348_5461dfcad35d 47260e6b_5b0f_a7b2_ddb7_5ff761d590a6["deserialize()"] 17687182_d87a_b111_7eee_20c37ea4b07e -->|method| 47260e6b_5b0f_a7b2_ddb7_5ff761d590a6
Relationship Graph
Source Code
libs/standard-tests/langchain_tests/conftest.py lines 20–52
class CustomSerializer:
"""Custom serializer for VCR cassettes using YAML and gzip.
We're using a custom serializer to avoid the default yaml serializer
used by VCR, which is not designed to be safe for untrusted input.
This step is an extra precaution necessary because the cassette files
are in compressed YAML format, which makes it more difficult to inspect
their contents during development or debugging.
"""
@staticmethod
def serialize(cassette_dict: dict[str, Any]) -> bytes:
"""Convert cassette to YAML and compress it."""
cassette_dict["requests"] = [
{
"method": request.method,
"uri": request.uri,
"body": request.body,
"headers": {k: [v] for k, v in request.headers.items()},
}
for request in cassette_dict["requests"]
]
yml = yaml.safe_dump(cassette_dict)
return gzip.compress(yml.encode("utf-8"))
@staticmethod
def deserialize(data: bytes) -> dict[str, Any]:
"""Decompress data and convert it from YAML."""
decoded_yaml = gzip.decompress(data).decode("utf-8")
cassette = cast("dict[str, Any]", yaml.safe_load(decoded_yaml))
cassette["requests"] = [Request(**request) for request in cassette["requests"]]
return cassette
Source
Frequently Asked Questions
What is the CustomSerializer class?
CustomSerializer is a class in the langchain codebase, defined in libs/standard-tests/langchain_tests/conftest.py.
Where is CustomSerializer defined?
CustomSerializer is defined in libs/standard-tests/langchain_tests/conftest.py at line 20.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free