Skip to content

Commit af6f707

Browse files
committed
address all Pydantic v1 deprecation warnings
1 parent 6ebfc0a commit af6f707

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

packages/jupyter-ai-magics/jupyter_ai_magics/embedding_providers.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Field,
77
MultiEnvAuthStrategy,
88
)
9-
from pydantic import BaseModel, Extra
9+
from pydantic import BaseModel, ConfigDict
1010
from langchain_community.embeddings import (
1111
GPT4AllEmbeddings,
1212
HuggingFaceHubEmbeddings,
@@ -17,8 +17,9 @@
1717
class BaseEmbeddingsProvider(BaseModel):
1818
"""Base class for embedding providers"""
1919

20-
class Config:
21-
extra = Extra.allow
20+
# pydantic v2 model config
21+
# upstream docs: https://docs.pydantic.dev/latest/api/config/#pydantic.config.ConfigDict.extra
22+
model_config = ConfigDict(extra="allow")
2223

2324
id: ClassVar[str] = ...
2425
"""ID for this provider class."""

packages/jupyter-ai/jupyter_ai/config_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def _create_default_config(self, default_config):
225225
self._write_config(GlobalConfig(**default_config))
226226

227227
def _init_defaults(self):
228-
config_keys = GlobalConfig.__fields__.keys()
228+
config_keys = GlobalConfig.model_fields.keys()
229229
schema_properties = self.validator.schema.get("properties", {})
230230
default_config = {
231231
field: schema_properties.get(field).get("default") for field in config_keys

packages/jupyter-ai/jupyter_ai/models.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from jupyter_ai_magics import Persona
55
from jupyter_ai_magics.providers import AuthStrategy, Field
6-
from pydantic import BaseModel, validator
6+
from pydantic import BaseModel, field_validator
77

88
DEFAULT_CHUNK_SIZE = 2000
99
DEFAULT_CHUNK_OVERLAP = 100
@@ -129,7 +129,8 @@ class AgentStreamChunkMessage(BaseModel):
129129
on `BaseAgentMessage.metadata` for information.
130130
"""
131131

132-
@validator("metadata")
132+
@field_validator("metadata", mode="before")
133+
@classmethod
133134
def validate_metadata(cls, v):
134135
"""Ensure metadata values are JSON serializable"""
135136
try:
@@ -252,11 +253,6 @@ class DescribeConfigResponse(BaseModel):
252253
completions_fields: Dict[str, Dict[str, Any]]
253254

254255

255-
def forbid_none(cls, v):
256-
assert v is not None, "size may not be None"
257-
return v
258-
259-
260256
class UpdateConfigRequest(BaseModel):
261257
model_provider_id: Optional[str] = None
262258
embeddings_provider_id: Optional[str] = None
@@ -269,11 +265,14 @@ class UpdateConfigRequest(BaseModel):
269265
completions_model_provider_id: Optional[str] = None
270266
completions_fields: Optional[Dict[str, Dict[str, Any]]] = None
271267

272-
_validate_send_wse = validator("send_with_shift_enter", allow_reuse=True)(
273-
forbid_none
274-
)
275-
_validate_api_keys = validator("api_keys", allow_reuse=True)(forbid_none)
276-
_validate_fields = validator("fields", allow_reuse=True)(forbid_none)
268+
@field_validator("send_with_shift_enter", "api_keys", "fields", mode="before")
269+
@classmethod
270+
def ensure_not_none_if_passed(cls, field_val: Any) -> Any:
271+
"""
272+
Field validator ensuring that certain fields are never `None` if set.
273+
"""
274+
assert field_val is not None, "size may not be None"
275+
return field_val
277276

278277

279278
class GlobalConfig(BaseModel):

0 commit comments

Comments
 (0)