用于提高pyproject.toml文件中指定的依赖项版本的实用程序
项目描述
概述
BumpDeps是一个实用程序,用于提高pyproject.toml文件中指定的依赖项版本。它试图遵守PEP 440和PEP 508中概述的规范。
BumpDeps可以作为发布过程或CI工作流程的一部分使用,以确保固定依赖项不会过时。
背景
通常,依赖项版本不应有上限固定,因为这是一种部署活动。固定依赖项将隐含的安全合同从用户移至维护者。相反,应定期运行自动CI测试,针对依赖项的最新版本,并快速解决任何问题。如果需要,上限固定应该是临时的,并与其问题或任务相关联。
那么,这个工具为什么会存在呢?可能存在一些情况,其中仍然需要进行固定操作。无论这是否有正当的理由,这些情况中的依赖项可能会迅速变得过时。这个工具的目的是简化更新这些依赖项的过程。
使用方法
对于最基本的使用方法,在项目的根目录中运行bumpdeps。这将更新pyproject.toml中找到的基本依赖项。
$ bumpdeps
要更新可选依赖项,请简化提供额外的名称。
$ bumpdeps some_extra some_cooler_extra
要更新所有依赖项,请使用--all或-a。
$ bumpdeps --all
有关更详细选项,请参阅下文。
自定义
BumpDeps的行为可以通过使用内联注释进行自定义。
如果在依赖项后找到# bumpdeps: ignore,BumpDeps将跳过该依赖项的更新。
如果在依赖项后找到# bumpdeps: ignore-until=YYYY-MM-DD,BumpDeps将跳过该依赖项的更新,直到指定的日期。
CLI参数
用法:bumpdeps [-h] [-a] [-b] [-i REGEX] [-e REGEX] [-f FILE] [–dry-run] [–pkg-index URL] [-d] [EXTRAS …]
更新基础和所有额外依赖项的依赖项。
更新基础依赖项。
如果没有提供额外依赖项,这是默认设置。通常与特定额外依赖项结合使用。
不要更新基础依赖项。
这旨在与–all结合使用,当只想更新所有可选依赖项而无需更新基础依赖项时。
正则表达式过滤器。只有匹配过滤器的依赖项才会被更新。
正则表达式过滤器。将跳过匹配过滤器的依赖项。
到TOML文件的路径。默认为当前目录中的pyproject.toml。
此文件应与pyproject.toml格式兼容。
显示将要进行的更改,而不会进行任何更改。
包索引的URL。默认为https://pypi.ac.cn。
如果使用自定义URL,它必须与PyPI兼容的API。
显示调试输出
显示帮助信息并退出
使用BumpDeps与GitHub Actions
配置部署密钥
建议创建一个部署密钥。这允许CI测试在创建的拉取请求上运行。如果您使用默认权限,则仍然会创建拉取请求,但不会触发CI测试。有其他方法可以实现这一点。有关更多信息,请参阅这里。
示例GitHub Actions配置
此示例避免了使用第三方操作,但可以通过利用peter-evans/create-pull-request进行简化。
name: Update Dependencies
on:
schedule:
# Every Monday at 1 AM
- cron: '0 1 * * 1'
jobs:
Update_Deps:
runs-on: ubuntu-latest
name: ${{ matrix.name || matrix.args }}
strategy:
fail-fast: false
matrix:
args: [extras_1, extras_2]
include:
- args: '-b'
name: Base Dependencies
- args: '-a -i toml.*'
name: All TOML libs
env:
DEPS_UPDATED: false
steps:
- uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.PRIVATE_KEY }}
- name: Install latest Python
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install bumpdeps
run: pip install bumpdeps
- name: Update deps
run: |
set -x
bumpdeps ${{ matrix.args }}
git diff --quiet || echo "DEPS_UPDATED=true" >> $GITHUB_ENV
- name: Create PR
env:
GH_TOKEN: ${{ github.token }}
run: |
set -x
PR_BRANCH=bumpdeps/$(echo ${{ matrix.name || matrix.args }} | tr ' ' _)_${{ github.run_id }}
PR_MSG="BumpDeps: ${{ matrix.name || matrix.args }}"
# Configure Git
git config --global user.name "BumpDeps"
git config --global user.email "<>"
# Create commit in new branch
git checkout -b $PR_BRANCH
git commit -a -m "$PR_MSG"
git --no-pager log -n 2
git push -u origin $PR_BRANCH
# Create PR
gh pr create -B main -H $PR_BRANCH --title "$PR_MSG" --body "Created by Github Action"
if: env.DEPS_UPDATED == 'true'
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源代码分发
构建分发
bumpdeps-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 10ebd5bdffcea5498e0e7feddb82750a65cc105f043f8b507c387b272570c1ab |
|
MD5 | 3f67d248e69955a5fb4492ad42cd856a |
|
BLAKE2b-256 | b88f005572b2adf8d32da0e167078e3a043b53ecd8d180ebfaf895c42ec26b94 |
bumpdeps-0.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dda37187e82527cd9ad102f38b0fab4da72341115f0dfb329f601932e417e73a |
|
MD5 | 8763a6ff83c7baf66c9ae3568ab08e26 |
|
BLAKE2b-256 | 433045c0d03e6b47cfb9e4976122084e3d6ea862598f683f78ac94b3e1aafc4b |