PYPI.ECLASS

章节: eclass-manpages (5)
更新时间: 2024年11月
索引 返回主内容

名称

pypi.eclass - 用于生成 PyPI 源 URI 的辅助 eclass

描述

pypi.eclass 可以用来轻松获取上传到 PyPI.org 的工件的 URL。当继承时,eclass 会默认设置 SRC_URI 和 S 以获取 .tar.gz sdist。项目文件名默认情况下会被规范化(除非在继承 eclass 之前设置了 PYPI_NO_NORMALIZE),版本会使用 pypi_translate_version 进行转换。

如果需要,ebuild 可以覆盖 SRC_URI 和 S。提供了两个辅助函数 pypi_sdist_url 和 pypi_wheel_url 来生成指定类型工件的 URL,并可以自定义 URL 组件。此外,pypi_wheel_name 可用于生成 wheel 文件名。

pypi_normalize_name 可用于根据 sdist/wheel 规范化规则规范化任意项目名称。pypi_translate_version 可用于将 Gentoo 版本字符串转换为其 PEP 440 等效版本。

支持的 EAPIS

7 8

示例

inherit pypi

SRC_URI="$(pypi_sdist_url "${PN^}" "${PV}")"
S=${WORKDIR}/${P^}

函数

pypi_normalize_name <name>
根据 sdist/wheel 规范化规则规范化项目名称。也就是说,转换为小写并将 [._-] 的连续运行替换为单个下划线。

基于规范,截至 2023 年 2 月 10 日:https://packaging.pythonlang.cn/en/latest/specifications/#package-distribution-file-formats

_pypi_translate_version <version>
内部版本转换函数,通过 _PYPI_TRANSLATED_VERSION 变量返回结果。
pypi_translate_version <version>
将指定的 Gentoo 版本转换为常用的 Python 版本。假设 PEP 440 版本。

请注意,我们没有 epoch 段或开发版本段的明确对应版本。

pypi_sdist_url [--no-normalize] [<project> [<version> [<suffix>]]]
输出指定项目/版本元组的 PyPI sdist 的 URL。

`--no-normalize` 选项禁用 sdist 文件名的项目名称规范化。在处理使用未遵循 PEP 625 的构建系统生成的 distfile 时,这可能很有必要(例如,sdist 名称包含大写字母、连字符或点)。

如果未指定 <package>,则默认为 ${PYPI_PN}。除非传递了 `--no-normalize`,否则软件包名称会根据规范进行规范化。

如果未指定 <version>,则默认为 ${PV},并通过 pypi_translate_version 进行转换。如果指定了它,则按字面意思使用它(可以显式调用该函数来转换自定义版本号)。

如果未指定 <format>,则默认为“.tar.gz”。另一个有效值为“.zip”(请记住添加对 app-arch/unzip 的 BDEPEND)。

pypi_wheel_name [<project> [<version> [<python-tag> [<abi-platform-tag>]]]]
输出指定项目/版本元组的 wheel 文件名。

如果未指定 <package>,则默认为 ${PYPI_PN}。软件包名称会根据 wheel 规范进行规范化。

如果未指定 <version>,则默认为 ${PV},并通过 pypi_translate_version 进行转换。如果指定了它,则按字面意思使用它(可以显式调用该函数来转换自定义版本号)。

如果未指定 <python-tag>,则默认为“py3”。它也可以是“py2.py3”,或者在非纯 wheel 的情况下为特定版本。

如果未指定 <abi-platform-tag>,则默认为“none-any”。对于非纯 wheel,您需要指定正确的值,例如“abi3-linux_x86_64”。

pypi_wheel_url [--unpack] [<project> [<version> [<python-tag> [<abi-platform-tag>]]]]
输出指定项目/版本元组的 PyPI wheel 的 URL。

`--unpack` 选项会导致生成带有箭头运算符的 SRC_URI,该运算符会将 .zip 后缀添加到获取的 distfile,以便在默认的 src_unpack() 中解压缩它。请注意,wheel 内容将直接解压缩到 ${WORKDIR} 中。您需要添加对 app-arch/unzip 的 BDEPEND。

如果未指定 <package>,则默认为 ${PYPI_PN}。

如果未指定 <version>,则默认为 ${PV},并通过 pypi_translate_version 进行转换。如果指定了它,则按字面意思使用它(可以显式调用该函数来转换自定义版本号)。

如果未指定 <python-tag>,则默认为“py3”。它也可以是“py2.py3”,或者在非纯 wheel 的情况下为特定版本。

如果未指定 <abi-platform-tag>,则默认为“none-any”。对于非纯 wheel,您需要指定正确的值,例如“abi3-linux_x86_64”。

ECLASS 变量

PYPI_NO_NORMALIZE (在继承之前设置)
当设置为非空值时,会禁用默认 SRC_URI 和 S 值的项目名称规范化。
PYPI_PN ?= ${PN} (在继承之前设置)
PyPI 项目名称。这应该很少被覆盖,通常是在上游项目名称不符合 Gentoo 命名规则时,例如当它包含点或大写字母时。

使用示例

PYPI_PN=${PN/-/.}

作者

Michał Górny <[email protected]>

维护者

Michał Górny <[email protected]>

报告 Bug

请通过 https://bugs.gentoo.org/ 报告 Bug。

文件

pypi.eclass

另请参阅

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/pypi.eclass


索引

名称
描述
支持的 EAPIS
示例
函数
ECLASS 变量
作者
维护者
报告 Bug
文件
另请参阅

此文档由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日格林威治标准时间 03:27:01