Skip to content

Commit 38cbdc7

Browse files
authored
Unset parent_run in run_tree (#1591)
1 parent 0af18d3 commit 38cbdc7

File tree

5 files changed

+17
-18
lines changed

5 files changed

+17
-18
lines changed

python/langsmith/run_trees.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ class RunTree(ls_schemas.RunBase):
5454
id: UUID = Field(default_factory=uuid4)
5555
run_type: str = Field(default="chain")
5656
start_time: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
57+
# Note: no longer set.
5758
parent_run: Optional[RunTree] = Field(default=None, exclude=True)
59+
parent_dotted_order: Optional[str] = Field(default=None, exclude=True)
5860
child_runs: List[RunTree] = Field(
5961
default_factory=list,
6062
exclude={"__all__": {"parent_run_id"}},
@@ -101,13 +103,15 @@ def infer_defaults(cls, values: dict) -> dict:
101103
values["ls_client"] = values.pop("_client")
102104
if not values.get("ls_client"):
103105
values["ls_client"] = None
104-
if values.get("parent_run") is not None:
105-
values["parent_run_id"] = values["parent_run"].id
106+
parent_run = values.pop("parent_run", None)
107+
if parent_run is not None:
108+
values["parent_run_id"] = parent_run.id
109+
values["parent_dotted_order"] = parent_run.dotted_order
106110
if "id" not in values:
107111
values["id"] = uuid4()
108112
if "trace_id" not in values:
109-
if "parent_run" in values:
110-
values["trace_id"] = values["parent_run"].trace_id
113+
if parent_run is not None:
114+
values["trace_id"] = parent_run.trace_id
111115
else:
112116
values["trace_id"] = values["id"]
113117
cast(dict, values.setdefault("extra", {}))
@@ -130,10 +134,9 @@ def ensure_dotted_order(cls, values: dict) -> dict:
130134
current_dotted_order = _create_current_dotted_order(
131135
values["start_time"], values["id"]
132136
)
133-
if values["parent_run"]:
134-
values["dotted_order"] = (
135-
values["parent_run"].dotted_order + "." + current_dotted_order
136-
)
137+
parent_dotted_order = values.get("parent_dotted_order")
138+
if parent_dotted_order is not None:
139+
values["dotted_order"] = parent_dotted_order + "." + current_dotted_order
137140
else:
138141
values["dotted_order"] = current_dotted_order
139142
return values

python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "langsmith"
3-
version = "0.3.16"
3+
version = "0.3.17"
44
description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform."
55
authors = ["LangChain <[email protected]>"]
66
license = "MIT"

python/tests/integration_tests/fake_server.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
def fake_function():
1313
span = get_current_run_tree()
1414
assert span is not None
15-
parent_run = span.parent_run
16-
assert parent_run is not None
15+
assert span.parent_dotted_order
1716
assert "did-propagate" in span.tags or []
1817
assert span.metadata["some-cool-value"] == 42
1918
assert span.session_name == "distributed-tracing"
@@ -24,8 +23,7 @@ def fake_function():
2423
def fake_function_two(foo: str):
2524
span = get_current_run_tree()
2625
assert span is not None
27-
parent_run = span.parent_run
28-
assert parent_run is not None
26+
assert span.parent_dotted_order
2927
assert "did-propagate" in (span.tags or [])
3028
assert span.metadata["some-cool-value"] == 42
3129
assert span.session_name == "distributed-tracing"
@@ -36,8 +34,7 @@ def fake_function_two(foo: str):
3634
def fake_function_three(foo: str):
3735
span = get_current_run_tree()
3836
assert span is not None
39-
parent_run = span.parent_run
40-
assert parent_run is not None
37+
assert span.parent_dotted_order
4138
assert "did-propagate" in (span.tags or [])
4239
assert span.metadata["some-cool-value"] == 42
4340
assert span.session_name == "distributed-tracing"

python/tests/unit_tests/test_run_helpers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,8 +1296,7 @@ def my_traceable(text: str) -> str:
12961296
assert rt
12971297
assert rt.run_type == "retriever"
12981298
assert rt.parent_run_id
1299-
assert rt.parent_run
1300-
assert rt.parent_run.run_type == "tool"
1299+
assert rt.parent_dotted_order
13011300
assert rt.session_name == "foo"
13021301
return my_grandchild_tool.invoke({"text": text}, {"run_id": gc_run_id})
13031302

python/tests/unit_tests/test_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def grandchild_function():
113113
assert rt
114114
assert rt.parent_run_id is None
115115
assert "." not in rt.dotted_order
116-
assert rt.parent_run is None
116+
assert rt.parent_dotted_order is None
117117
return 1
118118

119119
@traceable

0 commit comments

Comments
 (0)