name: dignified-python description: Python编码标准,带有自动版本检测。 在编写、审查或重构Python代码时使用,以确保遵循LBYL异常处理模式、现代类型语法(list[str], str | None)、pathlib操作、基于ABC的接口、绝对导入和CLI级别的显式错误边界。 还提供来自Dagster Labs的生产测试代码气味模式,用于API设计、参数复杂度和代码组织。对于维护erk的高贵Python标准至关重要。
高贵的Python编码标准
核心知识(始终加载)
@dignified-python-core.md
版本检测
识别项目的最低Python版本 通过检查(按顺序):
pyproject.toml- 查找requires-python字段(例如,requires-python = ">=3.12")setup.py或setup.cfg- 查找python_requires.python-version文件 - 包含版本如3.12或3.12.0- 如果未找到版本说明符,默认使用 Python 3.12
一旦识别,加载相应的版本特定文件:
- Python 3.10: 加载
versions/python-3.10.md - Python 3.11: 加载
versions/python-3.11.md - Python 3.12: 加载
versions/python-3.12.md - Python 3.13: 加载
versions/python-3.13.md
条件加载(基于任务模式加载)
上述核心文件覆盖了80%以上的Python代码模式。只有在检测到特定模式时才加载这些附加文件:
模式检测示例:
- 如果任务提到“click”或“CLI” -> 加载
cli-patterns.md - 如果任务提到“subprocess” -> 加载
subprocess.md
何时阅读每个参考文档
references/ 目录包含专业主题的详细指导。在遇到相关模式时按需加载:
references/exception-handling.md
阅读时机:
- 编写 try/except 块
- 包装可能引发异常的第三方API
- 看到或编写
from e或from None - 不确定是否存在LBYL替代方案
references/interfaces.md
阅读时机:
- 创建 ABC 或 Protocol 类
- 编写 @abstractmethod 装饰器
- 设计网关层接口
- 选择 ABC 和 Protocol 之间
references/typing-advanced.md
阅读时机:
- 使用 typing.cast()
- 创建 Literal 类型别名
- 在条件块中缩小类型
references/module-design.md
阅读时机:
- 创建新的 Python 模块
- 添加模块级代码(超出简单常量)
- 在模块级使用 @cache 装饰器
- 看到 Path() 或在模块级进行计算
- 考虑内联导入
references/api-design.md
阅读时机:
- 添加函数默认参数值
- 定义有5个或更多参数的函数
- 使用 ThreadPoolExecutor.submit()
- 审查函数签名
references/checklists.md
阅读时机:
- 提交Python代码前的最终审查
- 不确定是否遵循了所有规则
- 需要快速查找要求
如何使用此技能
- 核心知识 自动加载(LBYL、pathlib、基本导入、反模式)
- 版本检测 发生一次 - 识别最低Python版本并加载适当的版本文件
- 参考文档 基于上述触发按需加载
- 附加模式 可能需要额外加载(CLI模式、subprocess)
- 每个文件是自包含的,具有其领域的完整指导