GitHub 开源与 pip 包发布

当前交付形态

发布根目录是 brainfc/,作为独立项目即可运行,不依赖父项目。准备版本为 0.3.0,Apache-2.0;有中文 README、英文简介、完整 API 手册、测试、前端源码、内置网页及第三方声明。

独立发布仓库为 hanxiangmin/brainfc。PyPI 首次发布需要维护者完成下文的账号关联;关联本身不会上传文件。现有工作区父项目是另一个项目,本目录使用自己的 Git 仓库与工作流。PyPI brainfc 项目查询在 2026-09-12 的准备阶段返回 404;这不代表名称已保留。

发布包包含什么

真实影像、下载缓存、.work/、输出结果、虚拟环境和 node_modules 不进入发布包。包内示例只在运行时创建合成数据。历史浏览器回归脚本需要原开发环境,独立开源的 npm run test:ui 使用全新合成任务。

本地构建

python -m pip install -e ".[dev]"
cd frontend
npm ci
npm run check
npm run build
cd ..
python -m ruff check src tests examples scripts
python -m pytest -q
python scripts/generate_reference.py
python scripts/generate_reference.py --check
python scripts/check_release.py
python -m build
python -m twine check dist/*.whl dist/*.tar.gz
python scripts/check_release.py --dist dist
python scripts/smoke_wheel.py --wheel-dir dist
python scripts/package_release.py --dist dist

smoke_wheel.py 新建不继承站点包的虚拟环境,直接安装 wheel 及默认依赖,确认包从新环境导入,运行提取/HTML 导出/CLI/文档资产检查。实际依赖解析结果应连同发布验证记录保存。

打包遵循 PyPA pyproject 指南:标准构建后端、extras、入口点、动态版本和许可证元数据。

GitHub 独立仓库

从独立仓库取得源码。在检查通过后,为实际发行版本创建对应标签。下列标签必须与 src/brainfc/_version.py 一致;已发布标签不应重写。

git clone https://github.com/hanxiangmin/brainfc.git
cd brainfc
# 完成本文所列检查后:
git tag v0.3.0
git push origin v0.3.0

[project.urls]CITATION.cff 已指向独立仓库。PyPI 使用 PYPI.md 作为项目说明,其中的文档链接是完整 GitHub 地址;源码仓库使用包含本地相对链接的中文 README。项目名改变时同时核对打包脚本中的分发名。

CI 工作流配置 Windows/Linux × Python 3.11/3.12 测试、前端构建、文档同步、发行物范围、全新安装和合成浏览器操作。它们在 GitHub 上运行成功前,不能声称远程跨平台验证已通过。

PyPI / TestPyPI

尚无账号时,先在 PyPI 注册页 注册并完成邮箱验证,再按账号提示配置身份验证。账户名可以与包名不同;包名、Python 导入名和命令名均为 brainfc。注册本身不会占用包名。无需把密码或令牌写入源码或发送给协作者。

publish.yml 是手动触发工作流,默认 TestPyPI,只接受与代码版本一致的 v0.3.0 标签。验证成功后使用 PyPI Trusted Publishing;不在仓库保存密码或 token。配置方法以 PyPI 官方 Trusted Publisher 文档 为准。

需要维护者完成一次账号关联:在目标索引配置 owner、独立 repository、工作流 publish.yml 和环境 testpypipypi;GitHub 创建同名 environment。首次可使用 pending publisher。之后在标签上运行该工作流,选择目标索引。

本项目的正式 PyPI 关联值如下,在 账号 Publishing 页面 的 GitHub 表单添加:

字段
PyPI Project Name brainfc
Owner hanxiangmin
Repository name brainfc
Workflow name publish.yml
Environment name pypi

PyPI 用户名用于登录网站,不填写在 GitHub Owner 一栏。TestPyPI 是独立服务,需要单独的账号关联;其 environment 使用 testpypi

先验证 TestPyPI 的发行物与安装,再发布 PyPI。正式 PyPI 同版本文件不能替换,修订后递增版本。成功发布后才能将首选安装方式改成:

python -m pip install brainfc==0.3.0

最后核对远端 tag/commit、下载文件 SHA-256、干净环境安装结果,并把这些证据写进 GitHub Release。手工上传也可用 twine upload,但账号授权应通过维护者自己的发布环境完成。

发布说明草稿

BrainFC 0.3.0 提供单 run fMRI/ROI 时序到功能连接矩阵的 Python API、CLI 和本地网页,包含来源记录、矩阵/八视图/交互 3D。此版本补齐函数级文档、可试用的 HTTP schema、离线手册和独立发行工具,并修复版本记录不一致。体积/表面格式支持范围和外部 fMRIPrep 未实跑的边界见版本验证文档。