跳转到主要内容

用于放松Poetry上层版本限制的插件

项目描述

Latest version Supported Python versions Test status Build status

poetry-relax

一个Poetry插件,用于在发布库时放松依赖版本。将您的项目依赖从foobar^2.0.0放松到foobar>=2.0.0

默认情况下,Poetry使用插入符号约束,这将限制foobar版本为<3.0poetry-relax移除这些上限版本,允许升级依赖项。

当发布库时移除上限版本很重要。在搜索要安装的依赖项版本时,解析器(例如pip)必须尊重您的库指定的界限。当依赖项的新版本发布时,除非也发布了您的库的新版本,否则您的库的消费者无法安装它。

为大多数库的每个旧版本发布补丁是不切实际的,这迫使用户使用库的最新版本,或者被困在没有新版本依赖项的状态。当许多库包含上界版本时,依赖项很容易变得 无法解决 —— 其中库有不相容的依赖项版本要求。通过从您的库中移除上界版本限制,控制权将返回给用户。

Poetry 的默认行为是包含上界版本。很多人反对 Python 生态系统中的这种依赖项管理风格,包括 Python 核心开发团队的成员。请参阅 readme 文件的底部 获取链接和更多信息。

由于 Poetry 项目不允许配置此行为,维护者不得不在添加依赖项约束后手动编辑。 poetry-relax 旨在自动化和简化此过程。

poetry-relax 提供

  • 自动移除使用 ^ 指定的上界版本约束
  • 在放宽约束后检查包要求是否仍然可解决
  • 放宽约束后的依赖项升级
  • 在不升级依赖项的情况下更新锁定文件
  • 将依赖项放宽限制限制为特定的依赖项组
  • 保留表示真正不兼容性的有意上界
  • 设计用于匹配 Poetry 输出的 CLI 消息

安装

必须将插件安装在 Poetry 的环境中。这需要使用 self 子命令。

$ poetry self add poetry-relax

用法

放宽 Poetry 设置的上界版本的约束

$ poetry relax

放宽约束并检查它们是否可以在不执行升级的情况下解决

$ poetry relax --check

放宽约束并升级包

$ poetry relax --update

放宽约束并更新锁定文件,而不升级包

$ poetry relax --lock

预览 poetry relax 将做出的更改,而不会修改项目

$ poetry relax --dry-run

放宽特定依赖项组的约束

$ poetry relax --only foo --only bar

放宽排除特定依赖项组的约束

$ poetry relax --without foo --without bar

示例

Poetry 的行为对于本地开发来说非常合理! poetry relax 在 CI/CD 管道中使用时最有用。

发布前放宽要求

在构建和发布包之前运行 poetry relax

此项目的发布工作流程 中查看其工作情况。

测试前的放宽要求

在测试之前运行 poetry relax --update 以测试包的最新可能版本。

此项目的测试工作流程 中查看其工作情况。

常见问题解答

此插件能否更改 poetry add 的行为以放宽约束?

目前不行。Poetry 项目表示插件不得更改核心 Poetry 命令的行为。如果此行为对您有用,请在此跟踪问题中提出意见

此插件是否会移除我添加的上界约束?

此插件只会放宽使用省略号 (^) 指定的约束。使用 <<= 添加的上界约束将不会更改。

此插件是否稳定?

此插件已针对多个版本的 Poetry 进行了测试,并具有一个专注于集成的测试套件。在生产环境中使用它是安全的,尽管建议锁定版本。除非由于 Poetry 的上游更改而不可行,否则将避免破坏性更改。此项目遵循语义版本控制方案,破坏性更改将通过更改主版本号来表示。

此插件是否会降低 Python 本身的上界?

信不信由你,这是这个问题的更具争议性的子集,因为Poetry不允许存在没有Python上限的包与那些包含上限的包共存。这基本上意味着我们不能放松这个要求,否则会破坏大多数用例。因此,我们现在不能放松python^3的要求。有关更多详细信息,请参阅Poetry讨论板上的帖子

贡献

该项目使用Poetry进行管理。以下是入门的基本步骤。

克隆仓库

$ git clone https://github.com/madkinsz/poetry-relax.git
$ cd poetry-relax

安装包

$ poetry install

运行测试套件

$ pytest tests

在打开pull请求之前运行linters

$ ./scripts/lint check .
$ ./scripts/lint fix .

参考资料

关于这个主题有很多东西可以阅读!它具有争议性,并为维护者和用户带来了许多问题。

以下是由Henry Schreiner撰写的相当全面的博客文章

一些Python核心开发团队成员的内容

Poetry项目中的讨论和问题

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

poetry_relax-1.1.0.tar.gz (13.6 kB 查看哈希值)

上传时间

构建分发

poetry_relax-1.1.0-py3-none-any.whl (12.6 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面