帮助测试Python 3.12 Beta!
#python #测试 #githubactions #ci

致电所有Python库维护者! ð

Python 3.12在Beta中! ð

PEP 693定义了python 3.12.0的发布时间表:

  • 第一个Beta于2023年5月22日发布
  • 第一批候选人设定为2023年7月31日
  • 全部版本定于2023年10月2日

在他的announcement中,Python 3.12和3.13的发行经理Thomas Wouters说:

我们强烈鼓励维护第三方Python项目的维护者在Beta阶段进行3.12 测试,并尽快向Python bug tracker报告问题。虽然该版本计划在输入Beta阶段的功能中具有功能,但可能会修改功能,或者在极少数情况下删除,直到发布候选阶段开始(2023-07-31)。我们的目标是在Beta 4之后没有ABI更改,并且在第一个发行版候选人(3.12.0RC1)之后的代码更改尽可能少。为了实现这一目标,在Beta阶段获得尽可能多的3.12曝光将非常重要。

用3.12进行测试

现在是时候让美国图书馆维护者开始使用3.12开始测试我们的项目。我们不必声明3.12的支持和发布,但是在CI上进行3.12测试有两个大好处:

  1. Python 3.12中有removals and changes。现在,测试有助于我们在10月的大型发布会上兼顾代码,并避免任何大惊喜(对我们和我们的用户)。

  2. 我们可能会在Python本身中找到错误!报告这些将有助于使他们修复并帮助所有人。

如何

GitHub动作:设置Python

要使用actions/setup-python测试最新的Alpha,Beta或发布候选者,请将3.12allow-prereleases: true添加到您的工作流矩阵中。

例如:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
          allow-prereleases: true

(我们可以使用3.12-dev并省略allow-prereleases: true,但是我发现上述内容有点整洁,当10月发布3.12.0决赛时,它将继续使用完整的发布版本进行测试。)

github动作:死亡

对于出血边缘,我们可以使用deadsnakes/action测试最新的夜间构建:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12-dev"]

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        if: "!endsWith(matrix.python-version, '-dev')"
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - uses: deadsnakes/action@v3.0.0
        name: Set up Python ${{ matrix.python-version }} (deadsnakes)
        if: endsWith(matrix.python-version, '-dev')
        with:
          python-version: ${{ matrix.python-version }}

特拉维斯在那里

我建议搬到另一个CI。

与此同时,您也可以将3.12-dev添加到.travis.yml,尽管在编写时,它指向2022-12-07的3.12.0a3+,这总比没有好。

language: python
python:
  - "3.8"
  - "3.9"
  - "3.10"
  - "3.11"
  - "3.12-dev"

再次,我建议搬到另一个CI。

其他顺式

您使用其他顺式吗?如果您知道如何测试3.12!

,请发表评论。

何时支持3.12?

何时应该声明支持并添加Programming Language :: Python :: 3.12 Trove classifier?一些projects already have

首先,请确保您的测试通过3.12 Beta。一个选项是等到发布3.12.0决赛。

或,如上所述:

我们的目标是在Beta 4之后没有ABI更改,并且在3.12.0rc1(第一个版本候选人)之后尽可能少的代码更改。

如果您有一个纯Python项目,则可以立即发布。

如果您有C扩展名,而其他项目取决于您的,则使用车轮的预览发布将帮助他们测试和准备。

Abi休息?

beta期间的

ABI断裂是很不常见的。如果发生它们,您可以通过在文件名中添加可选的build tag来重建车轮并将其上传到现有的PYPI发布中:

轮毂文件名是{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl

构建标签:[...]如果在所有其他方面都相同(即名称,版本和其他标签),则可以用作胜利者。

例如,在版本号之后添加-1。重命名:

  • sampleproject-5.0.0-cp312-cp312-macosx_10_10_x86_64.whl

to:

  • sampleproject-5.0.0-1-cp312-cp312-macosx_10_10_x86_64.whl

然后将使用新文件代替旧文件。另请参见Brett Cannon's advice on making new wheels

无论如何,让我们立即开始测试3.12! ð


标题照片:PyCon 2023的主持人盐宫会议中心大宴会厅的地毯,添加了几只googly的眼睛,使它们成为pythony(source