适配 Pydantic V2

This commit is contained in:
2024-04-24 16:49:01 +08:00
parent d2a3801dac
commit 27518c0408
3 changed files with 35 additions and 37 deletions

View File

@@ -28,20 +28,20 @@ class SuccessModel(BaseSuccessModel):
league: League
supporter: bool
verified: bool
country: str | None
country: str | None = None
class InvalidUser(BaseModel):
class League(BaseModel):
gamesplayed: int
gameswon: int
rating: float
glicko: float | None
rd: float | None
glicko: float | None = None
rd: float | None = None
rank: Rank
bestrank: Rank
apm: float | None
pps: float | None
vs: float | None
apm: float | None = None
pps: float | None = None
vs: float | None = None
decaying: bool
id: str = Field(..., alias='_id')

View File

@@ -14,7 +14,7 @@ class SuccessModel(BaseSuccessModel):
class Badge(BaseModel):
id: str
label: str
ts: datetime | None
ts: datetime | None = None
class NeverPlayedLeague(BaseModel):
gamesplayed: Literal[0]
@@ -60,8 +60,8 @@ class SuccessModel(BaseSuccessModel):
bestrank: Rank
standing: int
standing_local: int
next_rank: Rank | None
prev_rank: Rank | None
next_rank: Rank | None = None
prev_rank: Rank | None = None
next_at: int
prev_at: int
percentile: float
@@ -70,7 +70,7 @@ class SuccessModel(BaseSuccessModel):
rd: float
apm: float
pps: float
vs: float | None
vs: float | None = None
decaying: bool
class Connections(BaseModel):
@@ -78,7 +78,7 @@ class SuccessModel(BaseSuccessModel):
id: str
username: str
discord: Discord | None
discord: Discord | None = None
class Distinguishment(BaseModel):
type: str
@@ -86,33 +86,33 @@ class SuccessModel(BaseSuccessModel):
id: str = Field(..., alias='_id')
username: str
role: Literal['anon', 'user', 'bot', 'halfmod', 'mod', 'admin', 'sysop', 'banned']
ts: datetime | None
botmaster: str | None
ts: datetime | None = None
botmaster: str | None = None
badges: list[Badge]
xp: float
gamesplayed: int
gameswon: int
gametime: float
country: str | None
badstanding: bool | None
supporter: bool | None # osk说是必有, 但实际上不是 fk osk
country: str | None = None
badstanding: bool | None = None
supporter: bool | None = None # osk说是必有, 但实际上不是 fk osk
supporter_tier: int
verified: bool
league: NeverPlayedLeague | NeverRatedLeague | RatedLeague
avatar_revision: int | None
avatar_revision: int | None = None
"""This user's avatar ID. Get their avatar at
https://tetr.io/user-content/avatars/{ USERID }.jpg?rv={ AVATAR_REVISION }"""
banner_revision: int | None
banner_revision: int | None = None
"""This user's banner ID. Get their banner at
https://tetr.io/user-content/banners/{ USERID }.jpg?rv={ BANNER_REVISION }
Ignore this field if the user is not a supporter."""
bio: str | None
bio: str | None = None
connections: Connections
friend_count: int | None
distinguishment: Distinguishment | None
friend_count: int | None = None
distinguishment: Distinguishment | None = None
user: User

View File

@@ -12,14 +12,14 @@ class EndContext(BaseModel):
zero: bool
locked: bool
prev: int
frameoffset: int | None
frameoffset: int | None = None
class Clears(BaseModel):
singles: int
doubles: int
triples: int
quads: int
pentas: int | None
pentas: int | None = None
realtspins: int
minitspins: int
minitspinsingles: int
@@ -33,7 +33,7 @@ class EndContext(BaseModel):
class Garbage(BaseModel):
sent: int
received: int
attack: int | None
attack: int | None = None
cleared: int
class Finesse(BaseModel):
@@ -46,18 +46,18 @@ class EndContext(BaseModel):
level_lines: int
level_lines_needed: int
inputs: int
holds: int | None
holds: int | None = None
time: Time
score: int
zenlevel: int | None
zenprogress: int | None
zenlevel: int | None = None
zenprogress: int | None = None
level: int
combo: int
currentcombopower: int | None # WTF
currentcombopower: int | None = None # WTF
topcombo: int
btb: int
topbtb: int
currentbtbchainpower: int | None # WTF * 2
currentbtbchainpower: int | None = None # WTF * 2
tspins: int
piecesplaced: int
clears: Clears
@@ -79,7 +79,7 @@ class BaseModeRecord(BaseModel):
replayid: str
user: User
ts: datetime
ismulti: bool | None
ismulti: bool | None = None
endcontext: EndContext
class MultiRecord(BaseModel):
@@ -92,21 +92,19 @@ class BaseModeRecord(BaseModel):
replayid: str
user: User
ts: datetime
ismulti: bool | None
ismulti: bool | None = None
endcontext: list[EndContext]
record: SoloRecord | MultiRecord | None
rank: int | None
record: SoloRecord | MultiRecord | None = None
rank: int | None = None
class SuccessModel(BaseSuccessModel):
class Data(BaseModel):
class Records(BaseModel):
class Sprint(BaseModeRecord):
...
class Sprint(BaseModeRecord): ...
class Blitz(BaseModeRecord):
...
class Blitz(BaseModeRecord): ...
sprint: Sprint = Field(..., alias='40l')
blitz: Blitz