core: In ensure_config don't copy dunder configurable keys to metadata (#24420)

This commit is contained in:
Nuno Campos 2024-07-18 15:28:52 -07:00 committed by GitHub
parent ef22ebe431
commit 62b6965d2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 3 deletions

View File

@ -154,7 +154,11 @@ def ensure_config(config: Optional[RunnableConfig] = None) -> RunnableConfig:
cast(RunnableConfig, {k: v for k, v in config.items() if v is not None})
)
for key, value in empty.get("configurable", {}).items():
if isinstance(value, (str, int, float, bool)) and key not in empty["metadata"]:
if (
not key.startswith("__")
and isinstance(value, (str, int, float, bool))
and key not in empty["metadata"]
):
empty["metadata"][key] = value
return empty

View File

@ -1271,7 +1271,11 @@ async def test_with_config_metadata_passthrough(mocker: MockerFixture) -> None:
assert (
fakew.with_config(tags=["a-tag"]).invoke(
"hello", {"configurable": {"hello": "there"}, "metadata": {"bye": "now"}}
"hello",
{
"configurable": {"hello": "there", "__secret_key": "nahnah"},
"metadata": {"bye": "now"},
},
)
== 5
)
@ -1281,7 +1285,7 @@ async def test_with_config_metadata_passthrough(mocker: MockerFixture) -> None:
tags=["a-tag"],
callbacks=None,
recursion_limit=25,
configurable={"hello": "there"},
configurable={"hello": "there", "__secret_key": "nahnah"},
metadata={"hello": "there", "bye": "now"},
),
)