mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-02-03 18:45:32 +08:00
Some checks are pending
Code Coverage / Test (macos-latest, 3.10) (push) Waiting to run
Code Coverage / Test (macos-latest, 3.11) (push) Waiting to run
Code Coverage / Test (macos-latest, 3.12) (push) Waiting to run
Code Coverage / Test (ubuntu-latest, 3.10) (push) Waiting to run
Code Coverage / Test (ubuntu-latest, 3.11) (push) Waiting to run
Code Coverage / Test (ubuntu-latest, 3.12) (push) Waiting to run
Code Coverage / Test (windows-latest, 3.10) (push) Waiting to run
Code Coverage / Test (windows-latest, 3.11) (push) Waiting to run
Code Coverage / Test (windows-latest, 3.12) (push) Waiting to run
Code Coverage / check (push) Blocked by required conditions
TypeCheck / TypeCheck (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
* ➕ 添加依赖 strenum * 🐛 优化等待逻辑,修复截图爆炸 * ✨ 使用新模板 * ⚡️ 关闭自动转译 * ✨ 同步新模板 schemas * 🌐 添加模板语言的映射 * ✨ 适配 bind * ✨ 更新模板 * ✨ 全部适配 * 🚨 make mypy happy * Update nonebot_plugin_tetris_stats/games/tos/query.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * ✨ 使用用户设置语言 * 🚨 auto fix by pre-commit hooks --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
66 lines
2.7 KiB
Python
66 lines
2.7 KiB
Python
from typing import Literal, overload
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
from nonebot.compat import PYDANTIC_V2
|
|
|
|
from ..templates import TEMPLATES_DIR
|
|
from .schemas.base import Base
|
|
from .schemas.bind import Bind
|
|
from .schemas.v1.tetrio.rank import Data as TETRIORankDataV1
|
|
from .schemas.v1.tetrio.user.info import Info as TETRIOUserInfoV1
|
|
from .schemas.v1.top.info import Info as TOPInfoV1
|
|
from .schemas.v1.tos.info import Info as TOSInfoV1
|
|
from .schemas.v2.tetrio.rank import Data as TETRIORankDataV2
|
|
from .schemas.v2.tetrio.rank.detail import Data as TETRIORankDetailDataV2
|
|
from .schemas.v2.tetrio.record.blitz import Record as TETRIORecordBlitzV2
|
|
from .schemas.v2.tetrio.record.sprint import Record as TETRIORecordSprintV2
|
|
from .schemas.v2.tetrio.tetra_league import Data as TETRIOTetraLeagueDataV2
|
|
from .schemas.v2.tetrio.user.info import Info as TETRIOUserInfoV2
|
|
from .schemas.v2.tetrio.user.list import List as TETRIOUserListV2
|
|
|
|
env = Environment(
|
|
loader=FileSystemLoader(TEMPLATES_DIR),
|
|
autoescape=False, # noqa: S701
|
|
trim_blocks=True,
|
|
lstrip_blocks=True,
|
|
enable_async=True,
|
|
)
|
|
|
|
|
|
@overload
|
|
async def render(render_type: Literal['v1/binding'], data: Bind) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v1/tetrio/info'], data: TETRIOUserInfoV1) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v1/tetrio/rank'], data: TETRIORankDataV1) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v1/top/info'], data: TOPInfoV1) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v1/tos/info'], data: TOSInfoV1) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/rank'], data: TETRIORankDataV2) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/rank/detail'], data: TETRIORankDetailDataV2) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/record/blitz'], data: TETRIORecordBlitzV2) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/record/sprint'], data: TETRIORecordSprintV2) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/tetra-league'], data: TETRIOTetraLeagueDataV2) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/user/info'], data: TETRIOUserInfoV2) -> str: ...
|
|
@overload
|
|
async def render(render_type: Literal['v2/tetrio/user/list'], data: TETRIOUserListV2) -> str: ...
|
|
async def render(
|
|
render_type: str,
|
|
data: Base,
|
|
) -> str:
|
|
if PYDANTIC_V2:
|
|
return await env.get_template('index.html').render_async(
|
|
path=render_type, data=data.model_dump_json(by_alias=True)
|
|
)
|
|
return await env.get_template('index.html').render_async(path=render_type, data=data.json(by_alias=True))
|
|
|
|
|
|
__all__ = ['render']
|