用于放松Poetry上层版本限制的插件
项目描述
poetry-relax
一个Poetry插件,用于在发布库时放松依赖版本。将您的项目依赖从foobar^2.0.0
放松到foobar>=2.0.0
。
默认情况下,Poetry使用插入符号约束,这将限制foobar
版本为<3.0
。 poetry-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项目中的讨论和问题
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。