test_deep_astream_assign() — langchain Function Reference
Architecture documentation for the test_deep_astream_assign() function in test_runnable.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD afd8be52_c690_3534_ae5d_a30e2667ffb6["test_deep_astream_assign()"] 26df6ad8_0189_51d0_c3c1_6c3248893ff5["test_runnable.py"] afd8be52_c690_3534_ae5d_a30e2667ffb6 -->|defined in| 26df6ad8_0189_51d0_c3c1_6c3248893ff5 style afd8be52_c690_3534_ae5d_a30e2667ffb6 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/tests/unit_tests/runnables/test_runnable.py lines 3673–3770
async def test_deep_astream_assign() -> None:
prompt = (
SystemMessagePromptTemplate.from_template("You are a nice assistant.")
+ "{question}"
)
llm = FakeStreamingListLLM(responses=["foo-lish"])
chain: Runnable = prompt | llm | {"str": StrOutputParser()}
stream = chain.astream({"question": "What up"})
chunks = [chunk async for chunk in stream]
assert len(chunks) == len("foo-lish")
assert add(chunks) == {"str": "foo-lish"}
chain_with_assign = chain.assign(
hello=itemgetter("str") | llm,
)
assert chain_with_assign.get_input_jsonschema() == {
"title": "PromptInput",
"type": "object",
"properties": {"question": {"title": "Question", "type": "string"}},
"required": ["question"],
}
assert chain_with_assign.get_output_jsonschema() == {
"title": "RunnableSequenceOutput",
"type": "object",
"properties": {
"str": {"title": "Str", "type": "string"},
"hello": {"title": "Hello", "type": "string"},
},
"required": ["str", "hello"],
}
chunks = []
async for chunk in chain_with_assign.astream({"question": "What up"}):
chunks.append(chunk)
assert len(chunks) == len("foo-lish") * 2
assert chunks == [
# first stream passthrough input chunks
{"str": "f"},
{"str": "o"},
{"str": "o"},
{"str": "-"},
{"str": "l"},
{"str": "i"},
{"str": "s"},
{"str": "h"},
# then stream assign output chunks
{"hello": "f"},
{"hello": "o"},
{"hello": "o"},
{"hello": "-"},
{"hello": "l"},
{"hello": "i"},
{"hello": "s"},
{"hello": "h"},
]
assert add(chunks) == {"str": "foo-lish", "hello": "foo-lish"}
assert await chain_with_assign.ainvoke({"question": "What up"}) == {
"str": "foo-lish",
"hello": "foo-lish",
}
chain_with_assign_shadow = chain | RunnablePassthrough.assign(
str=lambda _: "shadow",
hello=itemgetter("str") | llm,
)
assert chain_with_assign_shadow.get_input_jsonschema() == {
"title": "PromptInput",
"type": "object",
"properties": {"question": {"title": "Question", "type": "string"}},
"required": ["question"],
}
assert chain_with_assign_shadow.get_output_jsonschema() == {
"title": "RunnableSequenceOutput",
"type": "object",
Domain
Subdomains
Source
Frequently Asked Questions
What does test_deep_astream_assign() do?
test_deep_astream_assign() is a function in the langchain codebase, defined in libs/core/tests/unit_tests/runnables/test_runnable.py.
Where is test_deep_astream_assign() defined?
test_deep_astream_assign() is defined in libs/core/tests/unit_tests/runnables/test_runnable.py at line 3673.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free