其他
需要 Python 3.11+ 类型安全…
构建 Python 3.11+ 应用,要求完整类型提示、异步 I/O、pytest 测试和严格代码质量时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
需要 Python 3.11+ 类型安全通用
解决思路
- 分析代码库:审查结构、依赖、类型覆盖率和测试套件。
- 设计接口:定义协议(Protocol)、数据类(dataclasses)、类型别名(type aliases)。
- 实现:编写 Pythonic 代码,包含完整类型提示和错误处理。
- 测试:创建全面的 pytest 测试套件,覆盖率 >90%。
- 验证:运行 `mypy --strict`、`black`、`ruff`。
- 如果 mypy 失败:修复报告的类型错误,并在继续之前重新运行。
- 如果测试失败:调试断言,更新 fixtures,并迭代直到通过(green)。
- 如果 ruff/black 报告问题:应用自动修复,然后重新验证。
- 根据上下文加载详细指南:类型系统 -> `references/type-system.md`;异步模式 -> `references/async-patterns.md`;标准库 -> `references/standard-library.md`;测试 -> `references/testing.md`;打包 -> `references/packaging.md`。
- 为所有函数签名和类属性添加类型提示。
- 遵循 PEP 8 并使用 black 格式化。
- 编写全面的文档字符串(Google 风格)。
- 使用 pytest 实现测试覆盖率超过 90%。
- 使用 `X | None` 而不是 `Optional[X]`(Python 3.10+)。
- 对 I/O 密集型操作使用 async/await。
- 优先使用 dataclasses 而不是手动编写 `__init__` 方法。
- 使用上下文管理器处理资源。
- 不要跳过公共 API 的类型注解。
- 不要使用可变默认参数。
- 不要不当混合同步和异步代码。
- 不要忽略 mypy 严格模式下的错误。
- 不要使用裸 `except` 子句。
- 不要硬编码秘密或配置。
- 不要使用已弃用的标准库模块(使用 `pathlib` 而不是 `os.path`)。
- 编写带错误处理的类型注解函数(示例:`read_config`)。
- 使用 dataclass 并验证(示例:`AppConfig` 的 `__post_init__`)。
- 使用 async 模式并发获取多个 URL(示例:`fetch_all`)。
- 使用 pytest fixture 和 parametrize(示例:`config_file` 和 `test_app_config_port_validation`)。
- 在 `pyproject.toml` 中配置 mypy strict(示例:`[tool.mypy]` 部分)。
- 在实现 Python 功能时,提供:1. 包含完整类型提示的模块文件;2. 包含 pytest fixtures 的测试文件;3. 类型检查确认(`mypy --strict` 通过);4. 简要解释所使用的 Pythonic 模式。