mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-26 16:43:35 +00:00
Allow configs with None values
This commit is contained in:
parent
b0d5882fe1
commit
19319e1746
@ -159,17 +159,25 @@ def patch_config(
|
|||||||
|
|
||||||
def merge_configs(*configs: Optional[RunnableConfig]) -> RunnableConfig:
|
def merge_configs(*configs: Optional[RunnableConfig]) -> RunnableConfig:
|
||||||
base: RunnableConfig = {}
|
base: RunnableConfig = {}
|
||||||
|
# Even though the keys aren't literals this is correct
|
||||||
|
# because both dicts are same type
|
||||||
for config in (c for c in configs if c is not None):
|
for config in (c for c in configs if c is not None):
|
||||||
for key in config:
|
for key in config:
|
||||||
if key == "metadata":
|
if key == "metadata":
|
||||||
base[key] = {**base.get(key, {}), **config[key]} # type: ignore
|
base[key] = { # type: ignore
|
||||||
|
**base.get(key, {}), # type: ignore
|
||||||
|
**(config.get(key) or {}), # type: ignore
|
||||||
|
}
|
||||||
elif key == "tags":
|
elif key == "tags":
|
||||||
base[key] = list(set(base.get(key, []) + config[key])) # type: ignore
|
base[key] = list( # type: ignore
|
||||||
|
set(base.get(key, []) + (config.get(key) or [])), # type: ignore
|
||||||
|
)
|
||||||
elif key == "configurable":
|
elif key == "configurable":
|
||||||
base[key] = {**base.get(key, {}), **config[key]} # type: ignore
|
base[key] = { # type: ignore
|
||||||
|
**base.get(key, {}), # type: ignore
|
||||||
|
**(config.get(key) or {}), # type: ignore
|
||||||
|
}
|
||||||
else:
|
else:
|
||||||
# Even though the keys aren't literals this is correct
|
|
||||||
# because both dicts are same type
|
|
||||||
base[key] = config[key] or base.get(key) # type: ignore
|
base[key] = config[key] or base.get(key) # type: ignore
|
||||||
return base
|
return base
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user