A CLI tool to automatically update additional dependencies within local hooks in pre-commit config files.
Project description
pre-commit-localupdate
A CLI tool to automatically update dependencies in pre-commit-config.yml files. It specifically targets additional_dependencies within local hooks to ensure your tooling stays up-to-date. It also adds version to unversioned packages and pins exact version of loosely defined ones. You can also pin a specific package to an older version by adding a # freeze comment.
Installation
pip install pre-commit-localupdate
Usage
To check and update the additional_dependencies in your .pre-commit-config.yaml file, simply run:
pre-commit-localupdate
All options:
usage: pre-commit-localupdate [-h] [--debug] [--dry-run] [-c PRE-COMMIT-CONFIG] [--timeout TIMEOUT]
[--indent-mapping INDENT_MAPPING] [--indent-sequence INDENT_SEQUENCE]
[--indent-offset INDENT_OFFSET] [--line-width LINE_WIDTH] [--version]
Automatically update additional dependencies within local hooks in a pre-commit config file.
options:
-h, --help show this help message and exit
--debug enable debug logging (default: False)
--dry-run dry run mode. Do not update the file and exit with a non-zero code if the
configuration file require an update. (default: False)
-c, --config PRE-COMMIT-CONFIG pre-commit config file path (default: .pre-commit-config.yaml)
--timeout TIMEOUT connection timeout in seconds (default: 10)
--indent-mapping INDENT_MAPPING YAML indentation for mappings (default: 2)
--indent-sequence INDENT_SEQUENCE YAML indentation for sequences (default: 4)
--indent-offset INDENT_OFFSET YAML indentation offset (default: 2)
--line-width LINE_WIDTH maximum line width (default: 80)
--version show program's version number and exit
Example
Given a .pre-commit-config.yaml with the following content:
# File header is preserved. If there is no document start marker (---), it won't be added
---
repos:
# External hooks won't be touched. Use 'pre-commit autoupdate' command to update them
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: local
hooks:
# All comment are preserved
- id: black
name: black
description: "Length of strings is automatically adjusted based on the value of --line-width"
entry: black
language: python
minimum_pre_commit_version: 2.9.2
require_serial: true
types_or: [python, pyi]
additional_dependencies:
# Loose version definitions are pinned to an exact version
- "black>=25.1.0"
# Updates can be prevented by adding a 'freeze' comment to them as:
- "white==0.1.0" # freeze
- id: julia-format
name: format julia code
description: Unicodeテキストは保持されます。
language: julia
types: [julia]
entry: tools/formatter.jl
additional_dependencies:
# Double/single quoting style is preserved and version is added to packages with no version definition
- 'JuliaFormatter'
- id: mdbook-lint
name: mdbook-lint
description: rust package to lint markdown
entry: mdbook-lint lint --fix
language: rust
types: [markdown]
# Updating packages defined in flow style is also supported
additional_dependencies: ["cli:mdbook-lint"]
Running pre-commit-localupdate will update the file to (hypothetical latest versions):
# File header is preserved. If there is no document start marker (---), it won't be added
---
repos:
# External hooks won't be touched. Use 'pre-commit autoupdate' command to update them
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: local
hooks:
# All comment are preserved
- id: black
name: black
description: "Length of strings is automatically adjusted based on the value
of --line-width"
entry: black
language: python
minimum_pre_commit_version: 2.9.2
require_serial: true
types_or: [python, pyi]
additional_dependencies:
# Loose version definitions are pinned to an exact version
- "black==26.1.0"
# Updates can be prevented by adding a 'freeze' comment to them as:
- "white==0.1.0" # freeze
- id: julia-format
name: format julia code
description: Unicodeテキストは保持されます。
language: julia
types: [julia]
entry: tools/formatter.jl
additional_dependencies:
# Double/single quoting style is preserved and version is added to packages with no version definition
- 'JuliaFormatter@2.3.0'
- id: mdbook-lint
name: mdbook-lint
description: rust package to lint markdown
entry: mdbook-lint lint --fix
language: rust
types: [markdown]
# Updating packages defined in flow style is also supported
additional_dependencies: ["cli:mdbook-lint:0.14.2"]
Supported Languages
Following local hook languages are currently supported:
- Go (golang)
- Julia
- Node.js (node)
- Python
- Rust
Formatting
Significant effort has been made to ensure pre-commit-localupdate maintains the original style and preserves comments in pre-commit configuration files. However, since the current version of the underlying library does not perfectly preserve the original YAML file format after processing, pre-commit-localupdate automatically folds long string values (like descriptions) and enforces block indentation by default when updating files to enhance readability. Both behaviors can be adjusted using command-line parameters.
Requirements
packagingrequestsruamel.yaml
License
- Copyright 2026 M. Farzalipour Tabriz, Max Planck Institute for Physics (MPP)
All rights reserved.
This software may be modified and distributed under the terms of the GNU Lesser General Public License (LGPL). See the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pre_commit_localupdate-0.5.1.tar.gz.
File metadata
- Download URL: pre_commit_localupdate-0.5.1.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.26.7 CPython/3.12.3 Linux/6.8.0-106-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc85ec63ed6183eb4a81abf89c16ce46d01bda629935b83290d84dc8c7f1ccb4
|
|
| MD5 |
ef74bb3c421270aa53e91113078107f5
|
|
| BLAKE2b-256 |
ca41e13581e456540e9f508edb166dc969d628e53b41fa35fb5a85d8c05b049f
|
File details
Details for the file pre_commit_localupdate-0.5.1-py3-none-any.whl.
File metadata
- Download URL: pre_commit_localupdate-0.5.1-py3-none-any.whl
- Upload date:
- Size: 17.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.26.7 CPython/3.12.3 Linux/6.8.0-106-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19d51c0497ed59d9b06fd4bb7ab6b6316f198ab435a9239b09b7f758ff8eeab6
|
|
| MD5 |
e85a448b5b4ade2f5a4682febbc9a634
|
|
| BLAKE2b-256 |
c7bf4c877d16417c61cb3d9896d38ea6f82a80ec78e7a724ca22ae4ae80e27a0
|