mirror of
https://github.com/hwchase17/langchain.git
synced 2026-04-25 01:16:55 +00:00
fix(core): applied secrets_map in load to plain string values (#33678)
Replaces #33618 **Description:** Fixes the bug in the `load()` function where secret placeholders in plain dicts were not replaced, even if they match a key in `secrets_map`, and adds a test case. Example: ```py obj = {"api_key": "__SECRET_API_KEY__"} secret_key = "secret_key_1234" secrets_map = {"__SECRET_API_KEY__": secret_key} result = load(obj, secrets_map=secrets_map) ``` Before this change, printing `api_key` in `result` would output `"__SECRET_API_KEY__"`. Now, it will properly output `"secret_key_1234"`. **Issue:** Fixes #31804 **Dependencies:** None `make format`, `make lint`, and `make test` have all passed on my machine. --------- Co-authored-by: Mason Daugherty <mason@langchain.dev> Co-authored-by: Mason Daugherty <github@mdrxy.com>
This commit is contained in:
@@ -265,6 +265,8 @@ def load(
|
||||
return reviver(loaded_obj)
|
||||
if isinstance(obj, list):
|
||||
return [_load(o) for o in obj]
|
||||
if isinstance(obj, str) and obj in reviver.secrets_map:
|
||||
return reviver.secrets_map[obj]
|
||||
return obj
|
||||
|
||||
return _load(obj)
|
||||
|
||||
11
libs/core/tests/unit_tests/load/test_load.py
Normal file
11
libs/core/tests/unit_tests/load/test_load.py
Normal file
@@ -0,0 +1,11 @@
|
||||
"""Test for Serializable base class."""
|
||||
|
||||
from langchain_core.load.load import load
|
||||
|
||||
|
||||
def test_load_with_string_secrets() -> None:
|
||||
obj = {"api_key": "__SECRET_API_KEY__"}
|
||||
secrets_map = {"__SECRET_API_KEY__": "hello"}
|
||||
result = load(obj, secrets_map=secrets_map)
|
||||
|
||||
assert result["api_key"] == "hello"
|
||||
Reference in New Issue
Block a user