Compare commits

...

4 Commits
1.5.0 ... 1.5.1

Author SHA1 Message Date
ccd5706a95 🔖 1.5.1 2024-08-26 11:43:51 +08:00
b69240caa5 👷 添加 Pyright 类型检查 2024-08-26 11:41:03 +08:00
49d00f4d0e 添加开发依赖 pyright 2024-08-26 11:38:44 +08:00
389a850025 🐛 修复打过但是没数据的爆炸
为啥会没数据??
2024-08-26 11:38:14 +08:00
4 changed files with 63 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ on:
push: push:
jobs: jobs:
Mypy: TypeCheck:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -25,3 +25,8 @@ jobs:
shell: bash shell: bash
run: | run: |
poetry run mypy ./nonebot_plugin_tetris_stats poetry run mypy ./nonebot_plugin_tetris_stats
- name: Run Pyright
shell: bash
run: |
poetry run pyright ./nonebot_plugin_tetris_stats/

View File

@@ -1,10 +1,21 @@
from functools import partial
from typing import Literal from typing import Literal
from nonebot.compat import PYDANTIC_V2
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from ...typing import Rank, S1Rank, S1ValidRank from ...typing import Rank, S1Rank, S1ValidRank
from ..base import SuccessModel 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): class PastInner(BaseModel):
season: str season: str
@@ -75,6 +86,13 @@ class NeverRatedData(BaseData):
percentile: Literal[-1] percentile: Literal[-1]
percentile_rank: Literal['z'] 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): class RatedData(BaseData):
gamesplayed: int gamesplayed: int

31
poetry.lock generated
View File

@@ -2102,6 +2102,17 @@ files = [
tarina = ">=0.5.1" tarina = ">=0.5.1"
typing-extensions = ">=4.5.0" typing-extensions = ">=4.5.0"
[[package]]
name = "nodeenv"
version = "1.9.1"
description = "Node.js virtual environment builder"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
{file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"},
{file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"},
]
[[package]] [[package]]
name = "nonebot-adapter-discord" name = "nonebot-adapter-discord"
version = "0.1.8" version = "0.1.8"
@@ -3021,6 +3032,24 @@ files = [
{file = "PyQt6_sip-13.8.0.tar.gz", hash = "sha256:2f74cf3d6d9cab5152bd9f49d570b2dfb87553ebb5c4919abfde27f5b9fd69d4"}, {file = "PyQt6_sip-13.8.0.tar.gz", hash = "sha256:2f74cf3d6d9cab5152bd9f49d570b2dfb87553ebb5c4919abfde27f5b9fd69d4"},
] ]
[[package]]
name = "pyright"
version = "1.1.377"
description = "Command line wrapper for pyright"
optional = false
python-versions = ">=3.7"
files = [
{file = "pyright-1.1.377-py3-none-any.whl", hash = "sha256:af0dd2b6b636c383a6569a083f8c5a8748ae4dcde5df7914b3f3f267e14dd162"},
{file = "pyright-1.1.377.tar.gz", hash = "sha256:aabc30fedce0ded34baa0c49b24f10e68f4bfc8f68ae7f3d175c4b0f256b4fcf"},
]
[package.dependencies]
nodeenv = ">=1.6.0"
[package.extras]
all = ["twine (>=3.4.1)"]
dev = ["twine (>=3.4.1)"]
[[package]] [[package]]
name = "python-dateutil" name = "python-dateutil"
version = "2.9.0.post0" version = "2.9.0.post0"
@@ -4113,4 +4142,4 @@ cffi = ["cffi (>=1.11)"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.10" python-versions = "^3.10"
content-hash = "32ebea708e97ef8e09d178e1bd1f2c3cecb76e9e01862416e7b977345e4dcd24" content-hash = "07cf3b7a6ef196c9c5d17cef50c2da1abf2a6dc0ee66a6091edb17eb9327789f"

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = 'nonebot-plugin-tetris-stats' name = 'nonebot-plugin-tetris-stats'
version = '1.5.0' version = '1.5.1'
description = '一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件' description = '一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件'
authors = ['scdhh <wallfjjd@gmail.com>'] authors = ['scdhh <wallfjjd@gmail.com>']
readme = 'README.md' readme = 'README.md'
@@ -35,12 +35,13 @@ zstandard = '>=0.22,<0.24'
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
mypy = '>=1.9' mypy = '>=1.9'
pandas-stubs = '>=1.5.2,<3.0.0'
pyright = "^1.1.377"
ruff = '>=0.3.0' ruff = '>=0.3.0'
types-aiofiles = '>=23.2.0.20240106,<25.0.0.0' types-aiofiles = '>=23.2.0.20240106,<25.0.0.0'
types-lxml = '^2024.2.9' types-lxml = '^2024.2.9'
types-pillow = '^10.2.0.20240423' types-pillow = '^10.2.0.20240423'
types-ujson = '^5.9.0' types-ujson = '^5.9.0'
pandas-stubs = '>=1.5.2,<3.0.0'
nonebot2 = { extras = ['all'], version = '^2.3.0' } nonebot2 = { extras = ['all'], version = '^2.3.0' }
nonebot-adapter-discord = '^0.1.3' nonebot-adapter-discord = '^0.1.3'
nonebot-adapter-kaiheila = '^0.3.4' nonebot-adapter-kaiheila = '^0.3.4'
@@ -134,5 +135,11 @@ builtins-ignorelist = ['id']
[tool.ruff.format] [tool.ruff.format]
quote-style = 'single' quote-style = 'single'
[tool.pyright]
pythonVersion = "3.10"
pythonPlatform = "All"
defineConstant = { PYDANTIC_V2 = true }
typeCheckingMode = "standard"
[tool.nonebot] [tool.nonebot]
plugins = ['nonebot_plugin_tetris_stats'] plugins = ['nonebot_plugin_tetris_stats']