当设计或修改 REST API 响应结构、处理 API 返回值,或生成 Excel/CSV/PDF/对账文件等下游产物时触发。防止 API 设计缺陷导致的字段错位、类型歧义,以及生成产物时关键字段缺失但静默成功的问题。
日本語の概要は準備中です。原文の説明を表示しています。
Python 开发规范。当用户操作 .py、pyproject.toml、requirements.txt、setup.py 文件, 或涉及 FastAPI、Django、Flask、pytest、asyncio 开发时触发。 包含 PEP 8 风格、类型注解、异常处理、测试规范、异步编程、性能优化等。
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
参考来源: PEP 8、Google Python Style Guide
black . # 代码格式化
isort . # import 排序
mypy . # 静态类型检查
ruff check . # 快速 linter(推荐)
pytest -v # 运行测试
pytest --cov=src # 覆盖率
| 类型 | 规则 | 示例 |
|---|---|---|
| 模块/包 | 小写下划线 | user_service.py |
| 类名 | 大驼峰 | UserService, HttpClient |
| 函数/变量 | 小写下划线 | get_user_by_id, user_name |
| 常量 | 全大写下划线 | MAX_RETRY_COUNT |
| 私有 | 单下划线前缀 | _internal_method |
from typing import Optional, List, Dict
from dataclasses import dataclass
@dataclass
class User:
id: int
name: str
email: Optional[str] = None
def find_user_by_id(user_id: int) -> Optional[User]:
...
# Python 3.10+ 可用新语法
def greet(name: str | None = None) -> str:
return f"Hello, {name or 'World'}"
# ✅ 好:捕获具体异常
try:
user = repository.find_by_id(user_id)
except DatabaseError as e:
logger.error(f"Failed to find user {user_id}: {e}")
raise ServiceError(f"Database error: {e}") from e
# ✅ 好:上下文管理器
with open("file.txt", "r") as f:
content = f.read()
# ❌ 差:裸 except
try:
do_something()
except:
pass
import pytest
from unittest.mock import Mock
class TestUserService:
@pytest.fixture
def user_service(self):
repository = Mock()
return UserService(repository)
def test_find_by_id_returns_user(self, user_service):
expected = User(id=1, name="test")
user_service.repository.find_by_id.return_value = expected
result = user_service.find_by_id(1)
assert result == expected
# 参数化测试
@pytest.mark.parametrize("input,expected", [
(1, 1), (2, 4), (3, 9),
])
def test_square(input, expected):
assert square(input) == expected
import asyncio
async def fetch_user(user_id: int) -> User:
async with aiohttp.ClientSession() as session:
async with session.get(f"/api/users/{user_id}") as response:
data = await response.json()
return User(**data)
# 限制并发数
async def fetch_with_limit(user_ids: list[int], limit: int = 10) -> list[User]:
semaphore = asyncio.Semaphore(limit)
async def fetch_one(uid: int) -> User:
async with semaphore:
return await fetch_user(uid)
return await asyncio.gather(*[fetch_one(uid) for uid in user_ids])
| 场景 | 方案 |
|---|---|
| 大数据处理 | 使用生成器 yield |
| 字符串拼接 | 使用 ''.join() |
| 查找操作 | 使用 set 或 dict |
| 并发 I/O | 使用 asyncio |
| CPU 密集 | 使用 multiprocessing |
project/
├── src/
│ └── myproject/
│ ├── __init__.py
│ ├── models/
│ ├── services/
│ └── utils/
├── tests/
│ ├── conftest.py
│ └── test_*.py
├── pyproject.toml
└── README.md
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
当设计或修改 REST API 响应结构、处理 API 返回值,或生成 Excel/CSV/PDF/对账文件等下游产物时触发。防止 API 设计缺陷导致的字段错位、类型歧义,以及生成产物时关键字段缺失但静默成功的问题。
日本語の概要は準備中です。原文の説明を表示しています。
当设计或修改 REST API 响应结构、处理 API 返回值时触发。防止 API 设计缺陷导致的字段错位、类型歧义等问题。
日本語の概要は準備中です。原文の説明を表示しています。
网关/代理/WAF/CDN 中间件的安全关键词匹配实现规范,防止纯子串匹配误判正常响应内容中的技术术语(如 Cloudflare、502、error)
日本語の概要は準備中です。原文の説明を表示しています。
当 API/任务可能执行超过 10 秒(批量数据处理、远程 API 批量调用、全表扫描、跨租户聚合)时触发。防止同步接口被网关 30s 超时切断、用户重复点击触发并发、状态缓存内存泄漏等问题。提供异步任务状态机标准模板。
日本語の概要は準備中です。原文の説明を表示しています。
当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件,或在 Markdown 中编写 bash 代码块时触发。提供 Bash 编写规范。
日本語の概要は準備中です。原文の説明を表示しています。
Bash 编写规范。当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件, 或在 Markdown 中编写 bash/shell 代码块时触发。 包含注释规范、文件写入方式、Heredoc 引号规则、权限路径、脚本规范等。
日本語の概要は準備中です。原文の説明を表示しています。