Skip to content

fix(configs): add missing ConfigDict to vector store configs#4656

Merged
kartik-mem0 merged 2 commits intomem0ai:mainfrom
Prithvi1994:fix/configdict-missing-vector-store-configs
Apr 2, 2026
Merged

fix(configs): add missing ConfigDict to vector store configs#4656
kartik-mem0 merged 2 commits intomem0ai:mainfrom
Prithvi1994:fix/configdict-missing-vector-store-configs

Conversation

@Prithvi1994
Copy link
Copy Markdown
Contributor

Summary

Follow-up to #4646 — five more vector store config classes were missing model_config = ConfigDict(arbitrary_types_allowed=True) despite already using pydantic v2 constructs (model_validator, Field). Two additional inconsistencies were also found and fixed.

Changes

File Issue Fix
elasticsearch.py Missing ConfigDictrequired: has Callable field type Add import + model_config
mongodb.py Missing ConfigDict Add import + model_config
opensearch.py Missing ConfigDictrequired: has Optional[object] and Optional[Type] fields Add import + model_config
pgvector.py Missing ConfigDictrequired: has Optional[Any] connection_pool field Add import + model_config
supabase.py Missing ConfigDict Add import + model_config
valkey.py Bare field annotations (no Field()), no validate_extra_fields, no ConfigDict — only config class inconsistent with all peers Full alignment: add ConfigDict, Field with descriptions, validate_extra_fields validator
neptune.py Used raw Python dict model_config = {"arbitrary_types_allowed": False} instead of ConfigDict(...) Replace with proper ConfigDict(arbitrary_types_allowed=False)

Why This Matters

Pydantic v2 silently ignores a raw dict model_config. Without ConfigDict(arbitrary_types_allowed=True), configs that hold non-pydantic types (like Callable, object, Type, connection pool objects) will raise PydanticSchemaGenerationError in stricter environments. valkey.py had no extra-field guard at all — passing a typo'd config key would silently be ignored.

No behaviour change

All changes are consistency fixes. Existing valid configs continue to work identically.

Closes the remaining class Config: / raw dict / missing-ConfigDict inconsistencies after #4646.

Prithvi1994 and others added 2 commits April 1, 2026 16:41
Following up on mem0ai#4646, five more vector store config classes were missing
`model_config = ConfigDict(arbitrary_types_allowed=True)` despite using
pydantic v2 constructs (model_validator, Field). One config (neptune.py)
used a raw dict instead of ConfigDict. One (valkey.py) had bare field
annotations with no Field() descriptions or validate_extra_fields guard.

Changes:
- elasticsearch.py: add ConfigDict import + model_config
  (required: has Callable field type)
- mongodb.py: add ConfigDict import + model_config
- opensearch.py: add ConfigDict import + model_config
  (required: has Optional[object] and Optional[Type] fields)
- pgvector.py: add ConfigDict import + model_config
  (required: has Optional[Any] connection_pool field)
- supabase.py: add ConfigDict import + model_config
- valkey.py: add ConfigDict import + model_config + Field descriptions
  + validate_extra_fields (was the only config with bare annotations
  and no extra-field guard, inconsistent with all peers)
- neptune.py: replace raw dict `model_config = {...}` with
  `model_config = ConfigDict(...)` per pydantic v2 convention

No behaviour change. All configs now consistently use ConfigDict.
@kartik-mem0 kartik-mem0 merged commit 7a20da5 into mem0ai:main Apr 2, 2026
6 of 7 checks passed
rainfd pushed a commit to rainfd/mem0 that referenced this pull request Apr 8, 2026
…4656)

Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants