Home / File/ test_pydantic_parser.py — langchain Source File

test_pydantic_parser.py — langchain Source File

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

File python CoreAbstractions Serialization 12 imports 10 functions 6 classes

Entity Profile

Dependency Diagram

graph LR
  ea946035_0182_c125_ed3d_06f073e95e49["test_pydantic_parser.py"]
  d76a28c2_c3ab_00a8_5208_77807a49449d["sys"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> d76a28c2_c3ab_00a8_5208_77807a49449d
  b188e880_71c6_b93e_127d_c22666293d37["enum"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> b188e880_71c6_b93e_127d_c22666293d37
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  120e2591_3e15_b895_72b6_cb26195e40a6["pytest"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 120e2591_3e15_b895_72b6_cb26195e40a6
  63ae09a2_4a67_3eaf_7888_b0fd11776a0e["pydantic.v1"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 63ae09a2_4a67_3eaf_7888_b0fd11776a0e
  75137834_4ba7_dc43_7ec5_182c05eceedf["langchain_core.exceptions"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 75137834_4ba7_dc43_7ec5_182c05eceedf
  ba43b74d_3099_7e1c_aac3_cf594720469e["langchain_core.language_models"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> ba43b74d_3099_7e1c_aac3_cf594720469e
  83d7c7fd_1989_762c_9cf3_cecb50ada22b["langchain_core.output_parsers"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 83d7c7fd_1989_762c_9cf3_cecb50ada22b
  d45ff838_1238_0965_d3b7_5b33a0452ec0["langchain_core.output_parsers.json"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> d45ff838_1238_0965_d3b7_5b33a0452ec0
  c17bcf07_a2ef_b992_448f_5088d46a1e79["langchain_core.prompts.prompt"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> c17bcf07_a2ef_b992_448f_5088d46a1e79
  1014fe78_cb2c_fde4_a624_ae899aa7ca8e["langchain_core.utils.pydantic"]
  ea946035_0182_c125_ed3d_06f073e95e49 --> 1014fe78_cb2c_fde4_a624_ae899aa7ca8e
  style ea946035_0182_c125_ed3d_06f073e95e49 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Test PydanticOutputParser."""

import sys
from enum import Enum
from typing import Literal

import pydantic
import pytest
from pydantic import BaseModel, Field
from pydantic.v1 import BaseModel as V1BaseModel

from langchain_core.exceptions import OutputParserException
from langchain_core.language_models import ParrotFakeChatModel
from langchain_core.output_parsers import PydanticOutputParser
from langchain_core.output_parsers.json import JsonOutputParser
from langchain_core.prompts.prompt import PromptTemplate
from langchain_core.utils.pydantic import PydanticBaseModel, TypeBaseModel


class ForecastV2(pydantic.BaseModel):
    temperature: int
    f_or_c: Literal["F", "C"]
    forecast: str


if sys.version_info >= (3, 14):
    _FORECAST_MODELS_TYPES = type[ForecastV2]
    _FORECAST_MODELS = [ForecastV2]
else:

    class ForecastV1(V1BaseModel):
        temperature: int
        f_or_c: Literal["F", "C"]
        forecast: str

    _FORECAST_MODELS_TYPES = type[ForecastV2] | type[ForecastV1]
    _FORECAST_MODELS = [ForecastV2, ForecastV1]


@pytest.mark.parametrize("pydantic_object", _FORECAST_MODELS)
def test_pydantic_parser_chaining(
    pydantic_object: _FORECAST_MODELS_TYPES,
) -> None:
    prompt = PromptTemplate(
        template="""{{
        "temperature": 20,
        "f_or_c": "C",
        "forecast": "Sunny"
    }}""",
        input_variables=[],
    )

    model = ParrotFakeChatModel()

    parser = PydanticOutputParser[PydanticBaseModel](pydantic_object=pydantic_object)
    chain = prompt | model | parser

    res = chain.invoke({})
    assert isinstance(res, pydantic_object)
    assert res.f_or_c == "C"
// ... (156 more lines)

Subdomains

Dependencies

  • enum
  • langchain_core.exceptions
  • langchain_core.language_models
  • langchain_core.output_parsers
  • langchain_core.output_parsers.json
  • langchain_core.prompts.prompt
  • langchain_core.utils.pydantic
  • pydantic
  • pydantic.v1
  • pytest
  • sys
  • typing

Frequently Asked Questions

What does test_pydantic_parser.py do?
test_pydantic_parser.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, Serialization subdomain.
What functions are defined in test_pydantic_parser.py?
test_pydantic_parser.py defines 10 function(s): ForecastV1, _FORECAST_MODELS_TYPES, test_format_instructions, test_format_instructions_preserves_language, test_json_parser_chaining, test_pydantic_output_parser, test_pydantic_output_parser_fail, test_pydantic_output_parser_type_inference, test_pydantic_parser_chaining, test_pydantic_parser_validation.
What does test_pydantic_parser.py depend on?
test_pydantic_parser.py imports 12 module(s): enum, langchain_core.exceptions, langchain_core.language_models, langchain_core.output_parsers, langchain_core.output_parsers.json, langchain_core.prompts.prompt, langchain_core.utils.pydantic, pydantic, and 4 more.
Where is test_pydantic_parser.py in the architecture?
test_pydantic_parser.py is located at libs/core/tests/unit_tests/output_parsers/test_pydantic_parser.py (domain: CoreAbstractions, subdomain: Serialization, directory: libs/core/tests/unit_tests/output_parsers).

Analyze Your Own Codebase

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

Try Supermodel Free