在 GitHub 上编辑此页面

如何为 Biopython 构建一个版本。

通过许多小步骤构建 Biopython!

新版本管理器所需的设置

以下说明要求您能够访问几个服务器和代码库。开始之前,请确保您有以下内容的写入权限:

  1. OBF WordPress 博客
  2. PyPI 上的 Biopython
  3. 这些存储库(例如,通过“发布”团队成员资格,或有人准备合并拉取请求):

如果您没有以上任何内容,请询问。

我们假设您已将这些库克隆到 ~/repositories/ 下,并且 git origin 是存储库的官方 Biopython 副本。

我们假设您正在运行 Linux(但 macOS 也应该可以),并且已经安装了以下工具(以及尽可能多的用于本地测试的 Biopython 可选依赖项):

  1. Python 3
  2. git
  3. twine,使用 pip install twine 安装
  4. LaTeX,包括各种包,如注释和预印本。
  5. hevea,我目前使用的是 2012-07-04 的 2.32 版本

最终提交(s)

  1. 使用 git 确保我拥有最新的代码

    $ cd ~/repositories/biopython
    $ git checkout master
    $ git pull origin master
    
  2. 确保 README.rst 文件仍然是最新的

  3. 将任何重要信息添加到 NEWS.rstDEPRECATED.rst 中 - 您 可以像这样获取最近 git 更改的日志(根据需要调整日期)

    $ git log --since="2020/05/25" --reverse --pretty="medium"
    
  4. 确保 CONTRIB.rst 仍然是最新的

  5. 确保 setup.pyMANIFEST.in 仍然是最新的

    • 是否有任何新的模块/文件应该被安装?
  6. 提升版本号并设置发布日期

    • Biopython 版本 - 编辑 Bio/__init__.py
    • Biopython NEWS.rst - 填写发布日期
    • 确保将修改后的文件提交到 github,例如:
    $ git commit Bio/__init__.py NEWS.rst -m "Call this Biopython 1.78"
    
  7. 进行最终检查以确保已签入

    $ rm -r build
    $ rm Tests/*.pyc
    $ make clean -C Doc
    $ git status
    
  8. 构建 Biopython 并运行最终回归测试

    drevil:~biopython> python setup.py build
    drevil:~biopython> python setup.py test
    

    同时运行测试(例如,使用不同版本的 Python)是有风险的,因为两个线程可能会尝试同时读写同一个临时文件。

  9. 将此推送到 gitub,一切顺利的话,此提交将被标记为发布(除非在构建文档或在测试 tar 包时发现问题)

   $ git push origin master

制作和测试 tar 包

  1. 在其他地方检出一个干净的版本

    drevil:~tmp1/> git clone https://github.com/biopython/biopython.git
    drevil:~tmp1/> cd biopython
    
  2. 在 Doc 中制作文档 PDF(我们已经自动在线生成了 HTML 版本;需要安装 latexmk 等)

    drevil:~tmp1/biopython/> pip install -r .circleci/requirements-sphinx.txt
    drevil:~tmp1/biopython/> make -C Doc latexpdf
    drevil:~tmp1/biopython/> cp Doc/_build/latex/Biopython_doc.pdf Doc/
    drevil:~tmp1/biopython/> make clean -C Doc
    
  3. 制作源代码发行版

    drevil:~tmp1/biopython> python setup.py sdist --formats=gztar,zip
    
  4. 在其他地方解压缩文件

    drevil:~tmp1/biopython/> cd ..
    drevil:~tmp1/> tar -xzvf biopython/dist/biopython-1.78.tar.gz
    drevil:~tmp1/> cd biopython-1.78
    

    检查以确保它包含 Doc 下的文档 PDF 文件

  5. 确保我可以构建(不会安装和使用它)并测试它(使用 tar 包测试文件)

    drevil:~tmp1/biopython-1.78/> python -m pip install .  --prefix /tmp/test-install
    drevil:~tmp1/biopython-1.78/> cd Tests && python run_tests.py
    

    这里(在测试中)常见的失败原因是缺少示例文件添加到源代码发行版中:将它们添加到 MANIFEST.in

检查编译后的文档

  1. 从 Biopython 1.74 开始,Sphinx 通过持续集成处理 API 文档,但您仍然需要更新“latest”符号链接。

    $ cd ~/repositories/docs/
    $ git fetch origin
    $ git checkout gh-pages  # should only be this one branch
    $ git rebase origin/gh-pages  # get any changes
    $ rm latest
    $ ln -s 1.78 latest
    $ git commit latest -m "Update 'latest' symlink to point at 1.78"
    $ git push origin gh-pages
    
  2. 手动更新网站上的教程和 PDB 常见问题解答。

    • 更新教程和 PDB 常见问题解答
      $ cd ~/repositories/DIST/docs/tutorial/
      $ git fetch origin
      $ git checkout gh-pages  # should only be this one branch
      $ git rebase origin/gh-pages  # get any changes
      $ cp ../../../biopython/Doc/biopdb_faq.pdf .
      $ cp ../../../biopython/Doc/Tutorial.html Tutorial-1.80.html
      $ cp ../../../biopython/Doc/Tutorial.pdf Tutorial-1.80.pdf
      $ rm Tutorial.html Tutorial.pdf
      $ ln -s Tutorial-1.80.html Tutorial.html
      $ ln -s Tutorial-1.80.pdf Tutorial.pdf
      $ git add Tutorial-1.80.html Tutorial-1.80.pdf
      $ git commit Tutorial-1.80.html Tutorial-1.80.pdf Tutorial.html Tutorial.pdf biopdb_faq.pdf -m "Tutorial and FAQ for Biopython 1.80"
    
    • 将此推送到 GitHub Pages 以更新网站
      $ git push origin gh-pages
    

制作轮子

  1. 现在我们使用 https://github.com/biopython/biopython-wheels 来构建轮子,方法是将 .github/workflows/cibuildwheel.yml 中的 git checkout 行更新为新版本的提交哈希值(一切顺利的话,它将获得一个 git 标签)。

    $ cd ~/repositories
    $ git clone [email protected]:biopython/biopython-wheels.git
    $ cd biopython-wheels/
    $ git submodule update --init
    $ emacs .github/workflows/cibuildwheel.yml  # update git checkout line
    $ git commit .github/workflows/cibuildwheel.yml -m "Build Biopython 1.xx"
    $ git push origin master
    

    检查轮子是否在 GitHub Actions 运行 上构建。

    您似乎不需要更新 biopython git 子模块,但如果您需要,这似乎有效。

    $ git submodule foreach git pull origin master
    $ git commit -a -m "Update submodules"
    $ git push origin master
    
  2. 成功的轮子将位于 GitHub Actions 运行 页脚中可用的 artifact.zip 文件中。下载它并解压缩到您的 ~/repository/biopython/DIST/ 文件夹中。稍后我们将使用 Twine 将它们上传到 PyPI。

  3. 如果您有 Windows 计算机,请删除所有之前的 Biopython 安装,并确认 Windows 轮子文件可以正常工作。

标记版本并上传

  1. 回到主存储库,标记版本

    $ cd  .../tmp1/biopython/
    $ git tag biopython-178
    $ git push origin master --tags
    
  2. 通过 GitHub Pages DIST 存储库将新的发布 tar 包和 zip 上传到网站。

    $ cp dist/biopython-1.78.* ~/repositories/DIST/
    $ cd ~/repositories/DIST/
    $ git add biopython-1.78.*
    $ git commit biopython-1.78.* -m "Downloads for Biopython 1.78"
    $ shasum -a 256 biopython-1.78.*
    $ md5sum biopython-1.78.*
    $ git commit --amend # paste checksums into comment
    $ git push origin gh-pages
    
  3. 上传到 Python 包索引(除了 beta/alpha 级别的发布)

    $ cd  ~/repositories/biopython/
    $ pip install twine
    $ twine upload dist/biopython-1.78.tar.gz
    $ twine upload dist/biopython-1.78-*.whl
    
  4. 更新网站

    • 如果您还没有,请克隆 biopython.github.io 存储库(否则请确保您的副本是最新的)
    $ cd ~/repositories
    $ git clone [email protected]:biopython/biopython.github.io.git
    
    $ cd ~/repositories/biopython.github.io
    $ emacs _config.yml
    $ emacs wiki/Biopython.md
    $ emacs wiki/Download.md
    $ git commit _config.yml wiki/Biopython.md wiki/Download.md -m "Biopython 1.78 released"
    
    • 在您宣布发布之前,请务必将您的公告文本发送到 Biopython 邮件列表 以进行校对/最终更正。
    • 确保下载链接有效。
  5. 公告

  6. Conda-Forge 应该在它出现在 PyPI 上后自动打开一个拉取请求以更新包。检查 github.com/conda-forge/biopython-feedstock 上是否有新的拉取请求,一旦合并,它将把新版本上传到 anaconda.org/conda-forge/biopython

发布后版本提升

  1. 再次提升版本号

    • 更新 Bio/__init__.py 版本
    • NEWS.rst 中为下一个版本开始条目
    • 确保将修改后的文件提交到 github。

    包含后缀 .dev0 以指示这是一个开发版本,例如,如果您有 __version__ = "1.78",请将其更改为 1.79.dev0