Home / File/ transform.py — langchain Source File

transform.py — langchain Source File

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

File python OutputParsing StreamingParsers 8 imports 1 functions 2 classes

Entity Profile

Dependency Diagram

graph LR
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8["transform.py"]
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> 91721f45_4909_e489_8c1f_084f8bd87145
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> d758344f_537f_649e_f467_b9d7442e86df
  fc383c03_4b29_7c03_c489_626a968d8d03["langchain_core.output_parsers.base"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> fc383c03_4b29_7c03_c489_626a968d8d03
  ac2a9b92_4484_491e_1b48_ec85e71e1d58["langchain_core.outputs"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> ac2a9b92_4484_491e_1b48_ec85e71e1d58
  2971f9da_6393_a3e3_610e_ace3d35ee978["langchain_core.runnables.config"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> 2971f9da_6393_a3e3_610e_ace3d35ee978
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  2ceb1686_0f8c_8ae0_36d1_7c0b702fda1c["langchain_core.runnables"]
  dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 --> 2ceb1686_0f8c_8ae0_36d1_7c0b702fda1c
  style dcf159fe_fdc1_5b2b_59c7_0ec7ab145dd8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Base classes for output parsers that can handle streaming input."""

from __future__ import annotations

from typing import (
    TYPE_CHECKING,
    Any,
)

from typing_extensions import override

from langchain_core.messages import BaseMessage, BaseMessageChunk
from langchain_core.output_parsers.base import BaseOutputParser, T
from langchain_core.outputs import (
    ChatGeneration,
    ChatGenerationChunk,
    Generation,
    GenerationChunk,
)
from langchain_core.runnables.config import run_in_executor

if TYPE_CHECKING:
    from collections.abc import AsyncIterator, Iterator

    from langchain_core.runnables import RunnableConfig


class BaseTransformOutputParser(BaseOutputParser[T]):
    """Base class for an output parser that can handle streaming input."""

    def _transform(
        self,
        input: Iterator[str | BaseMessage],
    ) -> Iterator[T]:
        for chunk in input:
            if isinstance(chunk, BaseMessage):
                yield self.parse_result([ChatGeneration(message=chunk)])
            else:
                yield self.parse_result([Generation(text=chunk)])

    async def _atransform(
        self,
        input: AsyncIterator[str | BaseMessage],
    ) -> AsyncIterator[T]:
        async for chunk in input:
            if isinstance(chunk, BaseMessage):
                yield await run_in_executor(
                    None, self.parse_result, [ChatGeneration(message=chunk)]
                )
            else:
                yield await run_in_executor(
                    None, self.parse_result, [Generation(text=chunk)]
                )

    @override
    def transform(
        self,
        input: Iterator[str | BaseMessage],
        config: RunnableConfig | None = None,
        **kwargs: Any,
// ... (116 more lines)

Domain

Subdomains

Functions

Dependencies

  • collections.abc
  • langchain_core.messages
  • langchain_core.output_parsers.base
  • langchain_core.outputs
  • langchain_core.runnables
  • langchain_core.runnables.config
  • typing
  • typing_extensions

Frequently Asked Questions

What does transform.py do?
transform.py is a source file in the langchain codebase, written in python. It belongs to the OutputParsing domain, StreamingParsers subdomain.
What functions are defined in transform.py?
transform.py defines 1 function(s): collections.
What does transform.py depend on?
transform.py imports 8 module(s): collections.abc, langchain_core.messages, langchain_core.output_parsers.base, langchain_core.outputs, langchain_core.runnables, langchain_core.runnables.config, typing, typing_extensions.
Where is transform.py in the architecture?
transform.py is located at libs/core/langchain_core/output_parsers/transform.py (domain: OutputParsing, subdomain: StreamingParsers, directory: libs/core/langchain_core/output_parsers).

Analyze Your Own Codebase

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

Try Supermodel Free