- contest 后台创建/编辑:dateutil.parser.parse 换成 datetime.fromisoformat。serializer 里 start_time/end_time 声明的是 DateTimeField,而 validate_serializer 做的是 request.data = s.data, 即重新序列化一遍,所以视图拿到的必定是 DRF 规范化后的 ISO 8601, dateutil 的宽容解析能力在这里从来没用上 - AI 学情统计:relativedelta 换成 shift_months 辅助函数,复刻月末 收缩语义(1月31日 + 1个月 = 2月28/29日)。_parse_duration 的配置 由 delta 对象改为 rewind/advance 可调用,周档和月档统一 删除依赖:python-dateutil、six Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
49 lines
1.0 KiB
TOML
49 lines
1.0 KiB
TOML
[project]
|
|
name = "onlinejudge"
|
|
version = "2.0.0"
|
|
description = ""
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"channels>=4.3.2,<5",
|
|
"channels-redis>=4.3.0,<5",
|
|
"uvicorn[standard]>=0.34.0,<1",
|
|
"django>=6.0.4,<6.1",
|
|
"django-dramatiq>=0.15.0,<0.16",
|
|
"django-redis>=6.0.0,<7",
|
|
"djangorestframework>=3.17.1,<4",
|
|
"dramatiq>=2.1.0,<3",
|
|
"gunicorn>=26.0.0,<27",
|
|
"httpx>=0.28.1,<1",
|
|
"openai>=2.34.0,<3",
|
|
"pillow>=12.2.0,<13",
|
|
"psycopg>=3.3.4,<4",
|
|
"psycopg-binary>=3.3.4,<4",
|
|
"sentry-sdk[django]>=2.0.0,<3",
|
|
"tree-sitter>=0.25.2",
|
|
"tree-sitter-c>=0.24.2",
|
|
"tree-sitter-python>=0.25.0",
|
|
"xlsxwriter>=3.2.9,<4",
|
|
"asgiref>=3.11.1",
|
|
"jieba>=0.42.1",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"ruff>=0.15.11",
|
|
]
|
|
|
|
[tool.pyright]
|
|
venvPath = "."
|
|
venv = ".venv"
|
|
|
|
[tool.ruff]
|
|
line-length = 180
|
|
exclude = ["*/migrations/*", "*settings.py", "*/apps.py", ".venv"]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I"]
|