From 389a850025d4acb5b85d3fad69d6f69c7cc0bb67 Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Mon, 26 Aug 2024 11:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E6=89=93?= =?UTF-8?q?=E8=BF=87=E4=BD=86=E6=98=AF=E6=B2=A1=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E7=88=86=E7=82=B8=20=E4=B8=BA=E5=95=A5=E4=BC=9A=E6=B2=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=9F=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tetrio/api/schemas/summaries/league.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py index 9105338..820e378 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py @@ -1,10 +1,21 @@ +from functools import partial from typing import Literal +from nonebot.compat import PYDANTIC_V2 from pydantic import BaseModel, Field from ...typing import Rank, S1Rank, S1ValidRank from ..base import SuccessModel +if PYDANTIC_V2: + from pydantic import field_validator + + custom_validator = partial(field_validator, mode='before') +else: + from pydantic import validator + + custom_validator = partial(validator, pre=True, always=True) # type: ignore[assignment, arg-type] + class PastInner(BaseModel): season: str @@ -75,6 +86,13 @@ class NeverRatedData(BaseData): percentile: Literal[-1] percentile_rank: Literal['z'] + @custom_validator('apm', 'pps', 'vs') + @classmethod + def _(cls, value: float | None) -> float: + if value is None: + return 0 + return value + class RatedData(BaseData): gamesplayed: int