Skip to content

Commit dcdf297

Browse files
wpeterwwieri494Pavel Perestoronin
authored
OPT: updated code to Pydantic 2.0 (get rid of deprecation warnings) (#98)
- use Pydantic 2.x syntax --------- Co-authored-by: wieri494 <[email protected]> Co-authored-by: Pavel Perestoronin <[email protected]>
1 parent e0de195 commit dcdf297

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

cachetory/serializers/compressors/zlib.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import zlib
44
from urllib.parse import parse_qsl, urlparse
55

6-
from pydantic import BaseModel, Field, conint
6+
from pydantic import BaseModel, Field
7+
from typing_extensions import Annotated
78

89
from cachetory.interfaces.serializers import Serializer
910

@@ -28,7 +29,7 @@ def from_url(cls, url: str) -> ZlibCompressor:
2829
|---------------------|-----------------------------------------------------------------|
2930
| `compression-level` | From `0` (no compression) to `9` (slowest and best compression) |
3031
"""
31-
params = _UrlParams.parse_obj(dict(parse_qsl(urlparse(url).query)))
32+
params = _UrlParams.model_validate(dict(parse_qsl(urlparse(url).query)))
3233
return cls(compression_level=params.compression_level)
3334

3435
def __init__(self, *, compression_level: int = zlib.Z_DEFAULT_COMPRESSION) -> None:
@@ -42,7 +43,7 @@ def deserialize(self, data: bytes) -> bytes:
4243

4344

4445
class _UrlParams(BaseModel):
45-
compression_level: conint(ge=-1, le=9) = Field( # type: ignore
46+
compression_level: Annotated[int, Field(ge=-1, le=9)] = Field(
4647
zlib.Z_DEFAULT_COMPRESSION,
4748
alias="compression-level",
4849
)

cachetory/serializers/compressors/zstd.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from urllib.parse import parse_qsl, urlparse
44

55
import zstd # type: ignore
6-
from pydantic import BaseModel, Field, conint
6+
from pydantic import BaseModel, Field
7+
from typing_extensions import Annotated
78

89
from cachetory.interfaces.serializers import Serializer
910

@@ -35,7 +36,7 @@ def from_url(cls, url: str) -> ZstdCompressor:
3536
| `compression-level` | [Compression level](https://github.com/sergey-dryabzhinsky/python-zstd#api) |
3637
| `compression-threads` | [Number of threads](https://github.com/sergey-dryabzhinsky/python-zstd#api) |
3738
"""
38-
params = _UrlParams.parse_obj(dict(parse_qsl(urlparse(url).query)))
39+
params = _UrlParams.model_validate(dict(parse_qsl(urlparse(url).query)))
3940
return cls(compression_level=params.compression_level, compression_threads=params.compression_threads)
4041

4142
def __init__(
@@ -56,4 +57,4 @@ def deserialize(self, data: bytes) -> bytes:
5657

5758
class _UrlParams(BaseModel):
5859
compression_level: int = Field(3, alias="compression-level")
59-
compression_threads: conint(ge=0) = Field(0, alias="compression-threads") # type: ignore
60+
compression_threads: Annotated[int, Field(ge=0)] = Field(0, alias="compression-threads")

cachetory/serializers/pickle.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
from typing import Generic
55
from urllib.parse import parse_qsl, urlparse
66

7-
from pydantic import BaseModel, Field, conint
7+
from pydantic import BaseModel, Field
8+
from typing_extensions import Annotated
89

910
from cachetory.interfaces.serializers import Serializer, ValueT
1011

@@ -33,7 +34,7 @@ def from_url(cls, url: str) -> PickleSerializer[ValueT]:
3334
|-------------------|---------------------------|
3435
| `pickle-protocol` | `pickle` protocol version |
3536
"""
36-
params = _UrlParams.parse_obj(dict(parse_qsl(urlparse(url).query)))
37+
params = _UrlParams.model_validate(dict(parse_qsl(urlparse(url).query)))
3738
return cls(pickle_protocol=params.pickle_protocol)
3839

3940
def __init__(self, pickle_protocol: int = pickle.HIGHEST_PROTOCOL) -> None:
@@ -53,7 +54,7 @@ def deserialize(self, data: bytes) -> ValueT:
5354

5455

5556
class _UrlParams(BaseModel):
56-
pickle_protocol: conint(ge=0, le=pickle.HIGHEST_PROTOCOL) = Field( # type: ignore
57+
pickle_protocol: Annotated[int, Field(ge=0, le=pickle.HIGHEST_PROTOCOL)] = Field(
5758
pickle.HIGHEST_PROTOCOL,
5859
alias="pickle-protocol",
5960
)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ build-backend = "poetry_dynamic_versioning.backend"
3636
[tool.poetry.dependencies]
3737
django = {version = "^4.0.0", optional = true}
3838
ormsgpack = {version = "^1.4.0", optional = true, markers = "platform_python_implementation == 'CPython'"}
39-
pydantic = "<3.0.0"
39+
pydantic = ">2.0.0.0, <3.0.0.0"
4040
python = "^3.8.0"
4141
redis = {version = "^4.4.2 || ^5.0.0", optional = true}
4242
typing-extensions = "^4.4.0"

0 commit comments

Comments
 (0)