Home / Class/ CustomSerializer Class — langchain Architecture

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

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