Skip to content

patch: fix return type of Topic.update #4029

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 26, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libs/langgraph/langgraph/channels/topic.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Any, Generic, Iterator, Optional, Sequence, Type, Union

Check notice on line 1 in libs/langgraph/langgraph/channels/topic.py

View workflow job for this annotation

GitHub Actions / benchmark

Benchmark results

........... fanout_to_subgraph_10x: Mean +- std dev: 57.6 ms +- 1.0 ms ........... fanout_to_subgraph_10x_sync: Mean +- std dev: 51.1 ms +- 0.9 ms ........... WARNING: the benchmark result may be unstable * the standard deviation (9.55 ms) is 11% of the mean (84.1 ms) Try to rerun the benchmark with more runs, values and/or loops. Run 'python -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_10x_checkpoint: Mean +- std dev: 84.1 ms +- 9.6 ms ........... fanout_to_subgraph_10x_checkpoint_sync: Mean +- std dev: 94.8 ms +- 1.2 ms ........... fanout_to_subgraph_100x: Mean +- std dev: 572 ms +- 10 ms ........... fanout_to_subgraph_100x_sync: Mean +- std dev: 501 ms +- 5 ms ........... fanout_to_subgraph_100x_checkpoint: Mean +- std dev: 767 ms +- 47 ms ........... fanout_to_subgraph_100x_checkpoint_sync: Mean +- std dev: 949 ms +- 21 ms ........... react_agent_10x: Mean +- std dev: 31.7 ms +- 0.6 ms ........... react_agent_10x_sync: Mean +- std dev: 23.5 ms +- 0.2 ms ........... react_agent_10x_checkpoint: Mean +- std dev: 40.2 ms +- 0.7 ms ........... react_agent_10x_checkpoint_sync: Mean +- std dev: 38.1 ms +- 1.0 ms ........... react_agent_100x: Mean +- std dev: 358 ms +- 13 ms ........... react_agent_100x_sync: Mean +- std dev: 275 ms +- 2 ms ........... react_agent_100x_checkpoint: Mean +- std dev: 742 ms +- 22 ms ........... react_agent_100x_checkpoint_sync: Mean +- std dev: 713 ms +- 18 ms ........... wide_state_25x300: Mean +- std dev: 20.6 ms +- 0.4 ms ........... wide_state_25x300_sync: Mean +- std dev: 12.7 ms +- 0.2 ms ........... wide_state_25x300_checkpoint: Mean +- std dev: 82.5 ms +- 0.7 ms ........... wide_state_25x300_checkpoint_sync: Mean +- std dev: 77.1 ms +- 0.6 ms ........... wide_state_15x600: Mean +- std dev: 23.7 ms +- 0.5 ms ........... wide_state_15x600_sync: Mean +- std dev: 15.0 ms +- 0.1 ms ........... wide_state_15x600_checkpoint: Mean +- std dev: 136 ms +- 2 ms ........... wide_state_15x600_checkpoint_sync: Mean +- std dev: 127 ms +- 1 ms ........... wide_state_9x1200: Mean +- std dev: 23.2 ms +- 0.5 ms ........... wide_state_9x1200_sync: Mean +- std dev: 14.7 ms +- 0.2 ms ........... wide_state_9x1200_checkpoint: Mean +- std dev: 93.3 ms +- 0.9 ms ........... wide_state_9x1200_checkpoint_sync: Mean +- std dev: 86.6 ms +- 1.0 ms ........... sequential_20: Mean +- std dev: 7.28 ms +- 0.10 ms ........... sequential_20_sync: Mean +- std dev: 5.02 ms +- 0.05 ms ........... sequential_50: Mean +- std dev: 17.8 ms +- 0.2 ms ........... sequential_50_sync: Mean +- std dev: 12.4 ms +- 0.1 ms ........... sequential_100: Mean +- std dev: 37.7 ms +- 0.4 ms ........... sequential_100_sync: Mean +- std dev: 27.1 ms +- 0.9 ms ........... sequential_200: Mean +- std dev: 84.9 ms +- 0.9 ms ........... sequential_200_sync: Mean +- std dev: 63.8 ms +- 0.5 ms ........... pydantic_state_25x300: Mean +- std dev: 23.7 ms +- 0.4 ms ........... pydantic_state_25x300_sync: Mean +- std dev: 15.8 ms +- 0.1 ms ........... pydantic_state_25x300_checkpoint: Mean +- std dev: 96.6 ms +- 0.5 ms ........... pydantic_state_25x300_checkpoint_sync: Mean +- std dev: 91.3 ms +- 0.5 ms ........... pydantic_state_15x600: Mean +- std dev: 30.4 ms +- 0.5 ms ........... pydantic_state_15x600_sync: Mean +- std dev: 21.2 ms +- 0.2 ms ........... pydantic_state_15x600_checkpoint: Mean +- std dev: 161 ms +- 1 ms ........... pydantic_state_15x600_checkpoint_sync: Mean +- std dev: 155 ms +- 1 ms ........... pydantic_state_9x1200: Mean +- std dev: 33.7 ms +- 0.7 ms ........... pydantic_state_9x1200_sync: Mean +- std dev: 24.7 ms +- 0.2 ms ........... pydantic_state_9x1200_checkpoint: Mean +- std dev: 118 ms +- 1 ms ........... pydantic_state_9x1200_checkpoint_sync: Mean +- std dev: 110 ms +- 1 ms ........... fanout_to_subgraph_10x_first_event_latency: Mean +- std dev: 57.1 ms +- 0.7 ms ........... fanout_to_subgraph_10x_first_event_latency_sync: Mean +- std dev: 50.7 ms +- 0.8 ms ........... WARNING: the b

Check notice on line 1 in libs/langgraph/langgraph/channels/topic.py

View workflow job for this annotation

GitHub Actions / benchmark

Comparison against main

+-------------------------------------------------------------+----------+------------------------+ | Benchmark | main | changes | +=============================================================+==========+========================+ | fanout_to_subgraph_100x_checkpoint_first_event_latency | 1.05 sec | 758 ms: 1.38x faster | +-------------------------------------------------------------+----------+------------------------+ | fanout_to_subgraph_100x_checkpoint | 1.01 sec | 767 ms: 1.32x faster | +-------------------------------------------------------------+----------+------------------------+ | fanout_to_subgraph_100x_checkpoint_sync | 1.23 sec | 949 ms: 1.30x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_10x_checkpoint_sync | 49.1 ms | 38.1 ms: 1.29x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_10x_sync | 30.1 ms | 23.5 ms: 1.28x faster | +-------------------------------------------------------------+----------+------------------------+ | fanout_to_subgraph_100x | 718 ms | 572 ms: 1.26x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_10x_checkpoint | 50.5 ms | 40.2 ms: 1.25x faster | +-------------------------------------------------------------+----------+------------------------+ | fanout_to_subgraph_100x_first_event_latency | 705 ms | 575 ms: 1.23x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_100x_checkpoint_sync | 866 ms | 713 ms: 1.21x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_10x_checkpoint_first_event_latency_sync | 3.21 ms | 2.69 ms: 1.20x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_10x | 37.7 ms | 31.7 ms: 1.19x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_100x_sync | 321 ms | 275 ms: 1.17x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_100x_checkpoint | 861 ms | 742 ms: 1.16x faster | +-------------------------------------------------------------+----------+------------------------+ | pydantic_state_9x1200_checkpoint_first_event_latency_sync | 2.53 ms | 2.19 ms: 1.15x faster | +-------------------------------------------------------------+----------+------------------------+ | fanout_to_subgraph_10x_checkpoint_first_event_latency_sync | 108 ms | 94.2 ms: 1.15x faster | +-------------------------------------------------------------+----------+------------------------+ | react_agent_100x | 407 ms | 358 ms: 1.14x faster | +-------------------------------------------------------------+----------+------------------------+ | fanout_to_subgraph_100x_sync | 570 ms | 501 ms: 1.14x faster | +-------------------------------------------------------------+----------+------------------------+ | wide_state_15x600_checkpoint_first_event_latency_sync | 2.03 ms | 1.81 ms: 1.12x faster | +-------------------------------------------------------------+----------+------------------------+ | wide_state_25x300_sync | 14.1 ms | 12.7 ms: 1.12x faster | +-------------------------------------------------------------+----------+----------------------

from typing_extensions import Self

Expand Down Expand Up @@ -62,7 +62,7 @@
empty.values = checkpoint
return empty

def update(self, values: Sequence[Union[Value, list[Value]]]) -> None:
def update(self, values: Sequence[Union[Value, list[Value]]]) -> bool:
current = list(self.values)
if not self.accumulate:
self.values = list[Value]()
Expand Down
Loading