Skip to content

Commit 451fa68

Browse files
authored
⬆️ upgrade to pydantic v2
1 parent 0646a2f commit 451fa68

File tree

6 files changed

+355
-265
lines changed

6 files changed

+355
-265
lines changed

nonebot/adapters/github/adapter.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
import asyncio
33
import inspect
44
from functools import partial
5+
from typing_extensions import override
56
from typing import Any, Type, Union, Callable, Optional, cast
67

7-
from pydantic import parse_obj_as
8-
from nonebot.typing import overrides
98
from githubkit.webhooks import verify
9+
from nonebot.compat import type_validate_python
1010
from githubkit.exception import GraphQLFailed, RequestFailed, RequestTimeout
1111
from nonebot.drivers import (
1212
URL,
@@ -17,6 +17,7 @@
1717
HTTPServerSetup,
1818
)
1919

20+
from nonebot import get_plugin_config
2021
from nonebot.adapters import Adapter as BaseAdapter
2122

2223
from . import event
@@ -33,14 +34,14 @@ def import_event_model(event_name: str) -> Type[Event]:
3334

3435

3536
class Adapter(BaseAdapter):
36-
@overrides(BaseAdapter)
37+
@override
3738
def __init__(self, driver: Driver, **kwargs: Any):
3839
super().__init__(driver, **kwargs)
39-
self.github_config = Config.parse_obj(dict(self.config))
40+
self.github_config = get_plugin_config(Config)
4041
self._setup()
4142

4243
@classmethod
43-
@overrides(BaseAdapter)
44+
@override
4445
def get_name(cls) -> str:
4546
return "GitHub"
4647

@@ -132,7 +133,7 @@ def payload_to_event(
132133
types = events.get(event_name)
133134
if isinstance(types, dict):
134135
if action := event_payload.get("action"):
135-
return parse_obj_as(
136+
return type_validate_python(
136137
import_event_model(types[action]),
137138
{
138139
"id": event_id,
@@ -146,7 +147,7 @@ def payload_to_event(
146147
)
147148
elif types is None:
148149
raise ValueError(f"Unknown event type {event_name}.")
149-
return parse_obj_as(
150+
return type_validate_python(
150151
import_event_model(types),
151152
{"id": event_id, "name": event_name, "payload": event_payload},
152153
)

nonebot/adapters/github/bot.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import re
22
from contextvars import ContextVar
3-
from typing_extensions import Self
43
from contextlib import asynccontextmanager
4+
from typing_extensions import Self, override
55
from typing import (
66
TYPE_CHECKING,
77
Any,
@@ -15,7 +15,6 @@
1515
AsyncGenerator,
1616
)
1717

18-
from nonebot.typing import overrides
1918
from githubkit.utils import UNSET, Unset
2019
from nonebot.message import handle_event
2120
from githubkit import (
@@ -138,7 +137,7 @@ async def async_graphql(
138137
self, query: str, variables: Optional[Dict[str, Any]] = None
139138
) -> Dict[str, Any]: ...
140139

141-
@overrides(BaseBot)
140+
@override
142141
def __init__(self, adapter: "Adapter", app: Union[GitHubApp, OAuthApp]):
143142
super().__init__(adapter, app.id)
144143
self.app = app
@@ -157,15 +156,15 @@ def github(self) -> GitHub:
157156
async def handle_event(self, event: Event) -> None:
158157
await handle_event(self, event)
159158

160-
@overrides(BaseBot)
159+
@override
161160
async def send(
162161
self, event: Event, message: Union[str, Message, MessageSegment]
163162
) -> Any:
164163
return await self.__class__.send_handler(self, event, message)
165164

166165

167166
class OAuthBot(Bot[OAuthAppAuthStrategy]):
168-
@overrides(Bot)
167+
@override
169168
def __init__(self, adapter: "Adapter", app: OAuthApp):
170169
super().__init__(adapter, app)
171170
self._github = GitHub(
@@ -204,14 +203,14 @@ async def as_user(self, token: str) -> AsyncGenerator[Self, None]:
204203
finally:
205204
self._ctx_github.set(None)
206205

207-
@overrides(Bot)
206+
@override
208207
async def handle_event(self, event: Event) -> None:
209208
_check_nickname(self, event)
210209
await super().handle_event(event)
211210

212211

213212
class GitHubBot(Bot[AppAuthStrategy]):
214-
@overrides(Bot)
213+
@override
215214
def __init__(self, adapter: "Adapter", app: GitHubApp):
216215
super().__init__(adapter, app)
217216
self._github = GitHub(
@@ -295,7 +294,7 @@ async def as_user(self, token: str) -> AsyncGenerator[Self, None]:
295294
finally:
296295
self._ctx_github.set(None)
297296

298-
@overrides(Bot)
297+
@override
299298
async def handle_event(self, event: Event) -> None:
300299
_check_at_me(self, event)
301300
_check_nickname(self, event)

nonebot/adapters/github/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, List, Union, Optional
22

3-
from pydantic import Extra, Field, BaseModel, validator
3+
from pydantic import Field, BaseModel, validator
44

55

66
class OAuthApp(BaseModel):
@@ -29,7 +29,7 @@ def concat_key(cls, value: object) -> Any:
2929
return "\n".join(value) if isinstance(value, list) else value
3030

3131

32-
class Config(BaseModel, extra=Extra.ignore):
32+
class Config(BaseModel):
3333
"""GitHub Adapter Config"""
3434

3535
github_apps: List[Union[GitHubApp, OAuthApp]] = Field(default_factory=list)

nonebot/adapters/github/message.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
from typing import Type, Iterable
2-
3-
from nonebot.typing import overrides
2+
from typing_extensions import override
43

54
from nonebot.adapters import Message as BaseMessage
65
from nonebot.adapters import MessageSegment as BaseMessageSegment
76

87

98
class MessageSegment(BaseMessageSegment["Message"]):
109
@classmethod
11-
@overrides(BaseMessageSegment)
10+
@override
1211
def get_message_class(cls) -> Type["Message"]:
1312
return Message
1413

15-
@overrides(BaseMessageSegment)
14+
@override
1615
def __str__(self) -> str:
1716
if self.type == "markdown":
1817
return self.data["text"]
1918
return f"<{self.type}:{','.join(f'{k}={v}' for k, v in self.data.items())}>"
2019

21-
@overrides(BaseMessageSegment)
20+
@override
2221
def is_text(self) -> bool:
2322
return self.type == "markdown"
2423

@@ -29,11 +28,11 @@ def markdown(text: str) -> "MessageSegment":
2928

3029
class Message(BaseMessage[MessageSegment]):
3130
@classmethod
32-
@overrides(BaseMessage)
31+
@override
3332
def get_segment_class(cls) -> Type[MessageSegment]:
3433
return MessageSegment
3534

3635
@staticmethod
37-
@overrides(BaseMessage)
36+
@override
3837
def _construct(msg: str) -> Iterable[MessageSegment]:
3938
yield MessageSegment.markdown(msg)

0 commit comments

Comments
 (0)