Skip to content

Commit 4a0561e

Browse files
committed
⬆️ refactor: support Pydantic V2
1 parent 94d7fe4 commit 4a0561e

File tree

6 files changed

+668
-486
lines changed

6 files changed

+668
-486
lines changed

nonebot_plugin_orm/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from typing import Any, Union, Optional
44

55
from sqlalchemy import URL
6-
from nonebot import get_driver
76
from pydantic import BaseModel
7+
from nonebot import get_plugin_config
88
from sqlalchemy.ext.asyncio import AsyncEngine
99

1010
from .migrate import AlembicConfig
@@ -34,4 +34,4 @@ class Config(BaseModel, arbitrary_types_allowed=True):
3434
alembic_startup_check: bool = True
3535

3636

37-
plugin_config = Config.parse_obj(get_driver().config)
37+
plugin_config = get_plugin_config(Config)

nonebot_plugin_orm/model.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66

77
from sqlalchemy import Table, MetaData
88
from nonebot import get_plugin_by_module_name
9-
from pydantic.typing import get_args, get_origin
109
from sqlalchemy.orm import Mapped, DeclarativeBase
1110

1211
from .utils import DependsInner, get_annotations
1312

14-
if sys.version_info >= (3, 9):
15-
from typing import Annotated
13+
if sys.version_info >= (3, 10):
14+
from typing import Annotated, get_args, get_origin
1615
else:
17-
from typing_extensions import Annotated
16+
from typing_extensions import Annotated, get_args, get_origin
1817

1918
__all__ = ("Model",)
2019

nonebot_plugin_orm/param.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,30 @@
22

33
import sys
44
from itertools import repeat
5+
from typing import Any, cast
56
from dataclasses import dataclass
67
from operator import methodcaller
7-
from typing import Any, Type, cast
88
from inspect import Parameter, isclass
99

1010
from pydantic.fields import FieldInfo
1111
from nonebot.dependencies import Param
1212
from nonebot.params import DependParam
13-
from pydantic.typing import get_args, get_origin
1413
from sqlalchemy import Row, Result, ScalarResult, select
1514
from sqlalchemy.sql.selectable import ExecutableReturnsRows
1615
from sqlalchemy.ext.asyncio import AsyncResult, AsyncScalarResult
1716

1817
from .model import Model
1918
from .utils import Option, compile_dependency, generic_issubclass
2019

21-
if sys.version_info >= (3, 9):
22-
from typing import Annotated
20+
if sys.version_info >= (3, 10):
21+
from typing import Annotated, get_args, get_origin
2322
from collections.abc import Iterator, Sequence, AsyncIterator
2423

2524
Tuple = tuple
25+
Type = type
2626
else:
27-
from typing_extensions import Annotated
28-
from typing import Tuple, Iterator, Sequence, AsyncIterator
27+
from typing_extensions import Annotated, get_args, get_origin
28+
from typing import Type, Tuple, Iterator, Sequence, AsyncIterator
2929

3030
__all__ = (
3131
"SQLDepends",

nonebot_plugin_orm/utils.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
from functools import wraps
99
from itertools import repeat
1010
from contextlib import suppress
11-
from typing import Any, TypeVar
1211
from operator import methodcaller
1312
from typing_extensions import Annotated
1413
from dataclasses import field, dataclass
14+
from typing import Any, TypeVar, Coroutine
1515
from inspect import Parameter, Signature, isclass
1616
from collections.abc import Callable, Iterable, Generator
1717
from importlib.metadata import Distribution, PackageNotFoundError, distribution
@@ -21,25 +21,19 @@
2121
from nonebot.params import Depends
2222
from nonebot import logger, get_driver
2323
from sqlalchemy.sql.selectable import ExecutableReturnsRows
24-
from pydantic.typing import (
25-
get_args,
26-
is_union,
27-
get_origin,
28-
is_literal_type,
29-
all_literal_values,
30-
)
24+
from nonebot.typing import origin_is_union, origin_is_literal, all_literal_values
3125

3226
if sys.version_info >= (3, 9):
3327
from importlib.resources import files
3428
else:
3529
from importlib_resources import files
3630

3731
if sys.version_info >= (3, 10):
38-
from typing import ParamSpec
32+
from typing import ParamSpec, get_args, get_origin
3933
from importlib.metadata import packages_distributions
4034
else:
41-
from typing_extensions import ParamSpec
4235
from importlib_metadata import packages_distributions
36+
from typing_extensions import ParamSpec, get_args, get_origin
4337

4438

4539
_T = TypeVar("_T")
@@ -160,12 +154,12 @@ def generic_issubclass(scls: Any, cls: Any) -> Any:
160154
if cls_origin is Annotated:
161155
return generic_issubclass(scls, cls_args[0])
162156

163-
if is_union(scls_origin):
157+
if origin_is_union(scls_origin):
164158
return all(map(generic_issubclass, scls_args, repeat(cls)))
165-
if is_union(cls_origin):
159+
if origin_is_union(cls_origin):
166160
return generic_issubclass(scls, cls_args)
167161

168-
if is_literal_type(scls) and is_literal_type(cls):
162+
if origin_is_literal(scls) and origin_is_literal(cls):
169163
return set(all_literal_values(scls)) <= set(all_literal_values(cls))
170164

171165
try:

0 commit comments

Comments
 (0)