Home / File/ test_graph.py — langchain Source File

test_graph.py — langchain Source File

Architecture documentation for test_graph.py, a python file in the langchain codebase. 18 imports, 0 dependents.

File python CoreAbstractions RunnableInterface 18 imports 21 functions 4 classes

Entity Profile

Dependency Diagram

graph LR
  972d89eb_abd0_b940_67b4_eff75c775ace["test_graph.py"]
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  525a7d6f_f455_56e3_854a_c8a7da4a1417["unittest.mock"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 525a7d6f_f455_56e3_854a_c8a7da4a1417
  0b794afa_fd3d_a810_77fd_ed00bf90e394["packaging"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 0b794afa_fd3d_a810_77fd_ed00bf90e394
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  66d6194f_d8c1_55b6_f522_311fdad57877["syrupy.assertion"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 66d6194f_d8c1_55b6_f522_311fdad57877
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 91721f45_4909_e489_8c1f_084f8bd87145
  ba43b74d_3099_7e1c_aac3_cf594720469e["langchain_core.language_models"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> ba43b74d_3099_7e1c_aac3_cf594720469e
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> d758344f_537f_649e_f467_b9d7442e86df
  e2506531_acbb_2ada_3335_6574849e4389["langchain_core.output_parsers.list"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> e2506531_acbb_2ada_3335_6574849e4389
  52f47dc8_0343_2bf7_c7f6_1df7a48ca84e["langchain_core.output_parsers.string"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 52f47dc8_0343_2bf7_c7f6_1df7a48ca84e
  6ea8ed8c_4ab1_5e30_e53f_6219182045af["langchain_core.output_parsers.xml"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 6ea8ed8c_4ab1_5e30_e53f_6219182045af
  c17bcf07_a2ef_b992_448f_5088d46a1e79["langchain_core.prompts.prompt"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> c17bcf07_a2ef_b992_448f_5088d46a1e79
  2ceb1686_0f8c_8ae0_36d1_7c0b702fda1c["langchain_core.runnables"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> 2ceb1686_0f8c_8ae0_36d1_7c0b702fda1c
  c764ccae_0d75_abec_7c23_6d5d1949a7ba["langchain_core.runnables.base"]
  972d89eb_abd0_b940_67b4_eff75c775ace --> c764ccae_0d75_abec_7c23_6d5d1949a7ba
  style 972d89eb_abd0_b940_67b4_eff75c775ace fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

from typing import Any
from unittest.mock import MagicMock, patch

from packaging import version
from pydantic import BaseModel
from syrupy.assertion import SnapshotAssertion
from typing_extensions import override

from langchain_core.language_models import FakeListLLM
from langchain_core.messages import BaseMessage
from langchain_core.output_parsers.list import CommaSeparatedListOutputParser
from langchain_core.output_parsers.string import StrOutputParser
from langchain_core.output_parsers.xml import XMLOutputParser
from langchain_core.prompts.prompt import PromptTemplate
from langchain_core.runnables import RunnableConfig
from langchain_core.runnables.base import Runnable
from langchain_core.runnables.graph import Edge, Graph, MermaidDrawMethod, Node
from langchain_core.runnables.graph_mermaid import (
    _render_mermaid_using_api,
    _to_safe_id,
    draw_mermaid_png,
)
from langchain_core.utils.pydantic import PYDANTIC_VERSION
from tests.unit_tests.pydantic_utils import _normalize_schema


def test_graph_single_runnable(snapshot: SnapshotAssertion) -> None:
    runnable = StrOutputParser()
    graph = StrOutputParser().get_graph()
    first_node = graph.first_node()
    assert first_node is not None
    assert first_node.data.model_json_schema() == runnable.get_input_jsonschema()  # type: ignore[union-attr]
    last_node = graph.last_node()
    assert last_node is not None
    assert last_node.data.model_json_schema() == runnable.get_output_jsonschema()  # type: ignore[union-attr]
    assert len(graph.nodes) == 3
    assert len(graph.edges) == 2
    assert graph.edges[0].source == first_node.id
    assert graph.edges[1].target == last_node.id
    assert graph.draw_ascii() == snapshot(name="ascii")
    assert graph.draw_mermaid() == snapshot(name="mermaid")

    graph.trim_first_node()
    first_node = graph.first_node()
    assert first_node is not None
    assert first_node.data == runnable

    graph.trim_last_node()
    last_node = graph.last_node()
    assert last_node is not None
    assert last_node.data == runnable


def test_trim(snapshot: SnapshotAssertion) -> None:
    runnable = StrOutputParser()

    class Schema(BaseModel):
        a: int

    graph = Graph()
// ... (660 more lines)

Subdomains

Dependencies

  • langchain_core.language_models
  • langchain_core.messages
  • langchain_core.output_parsers.list
  • langchain_core.output_parsers.string
  • langchain_core.output_parsers.xml
  • langchain_core.prompts.prompt
  • langchain_core.runnables
  • langchain_core.runnables.base
  • langchain_core.runnables.graph
  • langchain_core.runnables.graph_mermaid
  • langchain_core.utils.pydantic
  • packaging
  • pydantic
  • syrupy.assertion
  • tests.unit_tests.pydantic_utils
  • typing
  • typing_extensions
  • unittest.mock

Frequently Asked Questions

What does test_graph.py do?
test_graph.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, RunnableInterface subdomain.
What functions are defined in test_graph.py?
test_graph.py defines 21 function(s): test_double_nested_subgraph_mermaid, test_draw_mermaid_png_function_base_url, test_graph_draw_mermaid_png_base_url, test_graph_mermaid_duplicate_nodes, test_graph_mermaid_frontmatter_config, test_graph_mermaid_special_chars, test_graph_mermaid_to_safe_id, test_graph_sequence, test_graph_sequence_map, test_graph_single_runnable, and 11 more.
What does test_graph.py depend on?
test_graph.py imports 18 module(s): langchain_core.language_models, langchain_core.messages, langchain_core.output_parsers.list, langchain_core.output_parsers.string, langchain_core.output_parsers.xml, langchain_core.prompts.prompt, langchain_core.runnables, langchain_core.runnables.base, and 10 more.
Where is test_graph.py in the architecture?
test_graph.py is located at libs/core/tests/unit_tests/runnables/test_graph.py (domain: CoreAbstractions, subdomain: RunnableInterface, directory: libs/core/tests/unit_tests/runnables).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free