致电所有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测试有两个大好处:
-
Python 3.12中有removals and changes。现在,测试有助于我们在10月的大型发布会上兼顾代码,并避免任何大惊喜(对我们和我们的用户)。
-
我们可能会在Python本身中找到错误!报告这些将有助于使他们修复并帮助所有人。
如何
GitHub动作:设置Python
要使用actions/setup-python测试最新的Alpha,Beta或发布候选者,请将3.12
和allow-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)