用途
本技能用于端到端地构建、测试、检查、版本管理、类型标注并发布生产级 Python 库到 PyPI,覆盖从首次提交到面向社区发布的完整流程。它适用于任意 Python 包类型(工具库、SDK、CLI、插件、数据库)。
主要能力
技能以决策树和参考文件的形式组织,主要覆盖以下方面:
- 技能触发条件:创建、脚手架或发布 Python 包到 PyPI;构建可 pip 安装的 SDK、工具库、CLI 工具或框架扩展;设置 pyproject.toml、linting、mypy、pre-commit 或 GitHub Actions;理解版本管理(setuptools_scm、PEP 440、semver、静态版本);理解 PyPA 规范(py.typed、MANIFEST.in、RECORD、classifiers);使用 Trusted Publishing(OIDC)或 API token 发布到 PyPI;将现有包重构为现代 Python 打包标准;为库添加类型提示、协议、ABC 或 dataclass;应用 OOP/SOLID 设计模式;在构建后端之间做选择。
- 包类型决策:区分工具库、API 客户端/SDK、CLI 工具、框架插件、数据处理库、混合/通用类型,并给出各自的核心模式、入口点、关键依赖和示例包。
- 目录结构决策:在 src/ 布局、扁平布局、命名空间/单仓库布局之间选择,并给出判断规则。
- 构建后端决策:在 setuptools + setuptools_scm、hatchling、flit、poetry 之间选择,并说明各自版本来源、配置方式、是否支持 C 扩展及适用场景。
- PyPA 打包流程:从源码树、构建(python -m build)、校验(twine check)、测试发布(TestPyPI)、发布(twine 或 GitHub Actions)到用户安装的规范流程,并解释 sdist、wheel、PEP 517/518、PEP 621、PEP 639、PEP 561 等概念。
- 项目结构模板:提供 src/ 布局、扁平布局、命名空间/单仓库布局的完整目录示例,以及内部模块(init.py、py.typed、core.py、config.py、exceptions.py、models.py、utils.py、types.py、cli.py、backends/、_compat.py)的用途与包含时机。
- 版本管理策略:PEP 440 规范形式、语义化版本(MAJOR.MINOR.PATCH)、setuptools_scm 动态版本、静态版本、依赖版本说明符最佳实践,以及版本升级到发布的流程。
使用方式
技能提供脚手架脚本,可运行以下命令生成完整目录布局、存根文件和 pyproject.toml:
python skills/python-pypi-package-builder/scripts/scaffold.py --name your-package-name
技能正文按决策树顺序组织,要求先阅读完整文件再编写代码或创建文件。各主题的详细内容分布在参考文件中:
- references/pyproject-toml.md:四种后端模板、setuptools_scm、py.typed、工具配置
- references/library-patterns.md:OOP/SOLID、类型提示、核心类设计、工厂、协议、CLI
- references/testing-quality.md:conftest.py、单元/后端/异步测试、ruff/mypy/pre-commit
- references/ci-publishing.md:ci.yml、publish.yml、Trusted Publishing、TestPyPI、CHANGELOG、发布清单
- references/community-docs.md:README、docstring、CONTRIBUTING、SECURITY、反模式、总清单
- references/architecture-patterns.md:后端系统(插件/策略)、配置层、传输层、CLI、后端注入
- references/versioning-strategy.md:PEP 440、SemVer、预发布、setuptools_scm 深入、flit 静态版本、决策引擎
- references/release-governance.md:分支策略、分支保护、OIDC、标签作者校验、防止无效标签
- references/tooling-ruff.md:仅用 Ruff 的设置(替代 black/isort)、mypy 配置、pre-commit、asyncio_mode=auto
适用场景
适用于需要创建或发布 Python 包、搭建现代打包与 CI 配置、理解版本管理规范、使用 Trusted Publishing 发布、重构旧包、为库添加类型与设计模式,以及在构建后端之间做选择的开发者。
限制
资料未提供该技能的具体收费、价格、平台支持范围、实际效果或性能数据,这些信息暂未提供。技能内容以决策规则和参考文件为主,实际使用需结合具体项目情况判断。