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.
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)
Domain
Subdomains
Functions
- 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()
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
Source
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