added fixes
This commit is contained in:
parent
310e9e97ae
commit
9582e1bbb1
3 changed files with 74 additions and 10 deletions
|
|
@ -116,13 +116,13 @@ class GraphConfig(BaseSettings):
|
||||||
"""
|
"""
|
||||||
return {
|
return {
|
||||||
"graph_database_provider": self.graph_database_provider,
|
"graph_database_provider": self.graph_database_provider,
|
||||||
|
"graph_file_path": self.graph_file_path,
|
||||||
"graph_database_url": self.graph_database_url,
|
"graph_database_url": self.graph_database_url,
|
||||||
"graph_database_name": self.graph_database_name,
|
"graph_database_name": self.graph_database_name,
|
||||||
"graph_database_username": self.graph_database_username,
|
"graph_database_username": self.graph_database_username,
|
||||||
"graph_database_password": self.graph_database_password,
|
"graph_database_password": self.graph_database_password,
|
||||||
"graph_database_port": self.graph_database_port,
|
"graph_database_port": self.graph_database_port,
|
||||||
"graph_database_key": self.graph_database_key,
|
"graph_database_key": self.graph_database_key,
|
||||||
"graph_file_path": self.graph_file_path,
|
|
||||||
"graph_dataset_database_handler": self.graph_dataset_database_handler,
|
"graph_dataset_database_handler": self.graph_dataset_database_handler,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -146,10 +146,18 @@ def get_graph_config():
|
||||||
|
|
||||||
def get_graph_context_config():
|
def get_graph_context_config():
|
||||||
"""This function will get the appropriate graph db config based on async context.
|
"""This function will get the appropriate graph db config based on async context.
|
||||||
This allows the use of multiple graph databases for different threads, async tasks and parallelization
|
This allows the use of multiple graph databases for different threads, async tasks and parallelization.
|
||||||
|
Always returns a canonical mapping aligned with create_graph_engine(...) signature
|
||||||
|
so that caching keys are stable across the codebase.
|
||||||
"""
|
"""
|
||||||
from cognee.context_global_variables import graph_db_config
|
from cognee.context_global_variables import graph_db_config
|
||||||
|
from cognee.infrastructure.databases.graph.get_graph_engine import create_graph_engine
|
||||||
|
from cognee.infrastructure.databases.utils.canonicalize import (
|
||||||
|
canonicalize_kwargs_for_signature,
|
||||||
|
)
|
||||||
|
|
||||||
if graph_db_config.get():
|
context_cfg = graph_db_config.get() or {}
|
||||||
return graph_db_config.get()
|
base_cfg = get_graph_config().to_dict()
|
||||||
return get_graph_config().to_hashable_dict()
|
return canonicalize_kwargs_for_signature(
|
||||||
|
raw_params=context_cfg, target_func=create_graph_engine, defaults=base_cfg
|
||||||
|
)
|
||||||
|
|
|
||||||
30
cognee/infrastructure/databases/utils/canonicalize.py
Normal file
30
cognee/infrastructure/databases/utils/canonicalize.py
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
import inspect
|
||||||
|
from typing import Mapping, Callable, Any, Dict
|
||||||
|
|
||||||
|
|
||||||
|
def canonicalize_kwargs_for_signature(
|
||||||
|
raw_params: Mapping[str, Any],
|
||||||
|
target_func: Callable[..., Any],
|
||||||
|
defaults: Mapping[str, Any] | None = None,
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
"""
|
||||||
|
Build a canonical, ordered kwargs dict aligned with the target function's signature.
|
||||||
|
- Merges provided raw_params over defaults
|
||||||
|
- Keeps only parameters that the target function accepts
|
||||||
|
- Orders keys to match the function signature to produce stable cache keys
|
||||||
|
"""
|
||||||
|
base: Dict[str, Any] = dict(defaults or {})
|
||||||
|
merged: Dict[str, Any] = {**base, **(raw_params or {})}
|
||||||
|
|
||||||
|
sig = inspect.signature(target_func)
|
||||||
|
ordered: Dict[str, Any] = {}
|
||||||
|
for name, param in sig.parameters.items():
|
||||||
|
if param.kind in (param.POSITIONAL_OR_KEYWORD, param.KEYWORD_ONLY):
|
||||||
|
if name in merged:
|
||||||
|
ordered[name] = merged[name]
|
||||||
|
elif param.default is not inspect._empty:
|
||||||
|
ordered[name] = param.default
|
||||||
|
else:
|
||||||
|
# Ensure the key exists; None will surface missing-required issues downstream if needed
|
||||||
|
ordered[name] = None
|
||||||
|
return ordered
|
||||||
|
|
@ -67,6 +67,22 @@ class VectorConfig(BaseSettings):
|
||||||
"vector_dataset_database_handler": self.vector_dataset_database_handler,
|
"vector_dataset_database_handler": self.vector_dataset_database_handler,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def to_hashable_dict(self) -> dict:
|
||||||
|
"""
|
||||||
|
Return a canonical, hashable configuration dictionary for vector DB engines.
|
||||||
|
The keys and their order are aligned with create_vector_engine(...) signature to
|
||||||
|
ensure consistent lru_cache keys regardless of how the config was originally set.
|
||||||
|
"""
|
||||||
|
# NOTE: Order here mirrors create_vector_engine signature
|
||||||
|
return {
|
||||||
|
"vector_db_provider": self.vector_db_provider,
|
||||||
|
"vector_db_url": self.vector_db_url,
|
||||||
|
"vector_db_name": self.vector_db_name,
|
||||||
|
"vector_db_port": self.vector_db_port,
|
||||||
|
"vector_db_key": self.vector_db_key,
|
||||||
|
"vector_dataset_database_handler": self.vector_dataset_database_handler,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@lru_cache
|
@lru_cache
|
||||||
def get_vectordb_config():
|
def get_vectordb_config():
|
||||||
|
|
@ -87,9 +103,19 @@ def get_vectordb_config():
|
||||||
|
|
||||||
|
|
||||||
def get_vectordb_context_config():
|
def get_vectordb_context_config():
|
||||||
"""This function will get the appropriate vector db config based on async context."""
|
"""This function will get the appropriate vector db config based on async context.
|
||||||
from cognee.context_global_variables import vector_db_config
|
|
||||||
|
|
||||||
if vector_db_config.get():
|
Always returns a canonical mapping aligned with create_vector_engine(...) signature
|
||||||
return vector_db_config.get()
|
so that caching keys are stable across the codebase.
|
||||||
return get_vectordb_config().to_dict()
|
"""
|
||||||
|
from cognee.context_global_variables import vector_db_config
|
||||||
|
from cognee.infrastructure.databases.vector.create_vector_engine import create_vector_engine
|
||||||
|
from cognee.infrastructure.databases.utils.canonicalize import (
|
||||||
|
canonicalize_kwargs_for_signature,
|
||||||
|
)
|
||||||
|
|
||||||
|
context_cfg = vector_db_config.get() or {}
|
||||||
|
base_cfg = get_vectordb_config().to_dict()
|
||||||
|
return canonicalize_kwargs_for_signature(
|
||||||
|
raw_params=context_cfg, target_func=create_vector_engine, defaults=base_cfg
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue