Skip to content

prek

prek documentation

footman._stubs.prek.Prek

Bases: Tool

__call__

__call__(
    *args: str,
    all_files: _Flag = ...,
    cd: _Value = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    directory: _Value = ...,
    dry_run: _Flag = ...,
    fail_fast: _Flag = ...,
    files: _Value = ...,
    from_ref: _Value = ...,
    group: _Value = ...,
    last_commit: _Flag = ...,
    log_file: _Value = ...,
    no_group: _Value = ...,
    no_progress: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    show_diff_on_failure: _Flag = ...,
    skip: _Value = ...,
    stage: Literal[
        "manual",
        "commit-msg",
        "post-checkout",
        "post-commit",
        "post-merge",
        "post-rewrite",
        "pre-commit",
        "pre-merge-commit",
        "pre-push",
        "pre-rebase",
        "prepare-commit-msg",
    ]
    | Sequence[
        Literal[
            "manual",
            "commit-msg",
            "post-checkout",
            "post-commit",
            "post-merge",
            "post-rewrite",
            "pre-commit",
            "pre-merge-commit",
            "pre-push",
            "pre-rebase",
            "prepare-commit-msg",
        ]
    ]
    | None = ...,
    to_ref: _Value = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Result

A fast Git hook manager written in Rust, designed as a drop-in alternative to pre-commit, reimagined.

Parameters:

Name Type Description Default
all_files _Flag

Run on all files in the repo.

...
cd _Value

Change to directory before running.

...
color Literal['auto', 'always', 'never'] | Sequence[Literal['auto', 'always', 'never']] | None

Whether to use color in output. Defaults to auto.

...
config _Value

Path to alternate config file.

...
directory _Value

Run hooks on all files in the specified directories.

...
dry_run _Flag

Do not run the hooks, but print the hooks that would have been run.

...
fail_fast _Flag

Stop running hooks after the first failure.

...
files _Value

Specific filenames to run hooks on. May be repeated: a list emits the flag once per item.

...
from_ref _Value

The original ref in a <from_ref>...<to_ref> diff expression.

...
group _Value

Run hooks belonging to the specified group.

...
last_commit _Flag

Run hooks against the last commit.

...
log_file _Value

Write trace logs to the specified file.

...
no_group _Value

Do not run hooks belonging to the specified group.

...
no_progress _Flag

Hide all progress outputs.

...
quiet _Flag

Use quiet output.

...
refresh _Flag

Refresh all cached data.

...
show_diff_on_failure _Flag

When hooks fail, run git diff directly afterward.

...
skip _Value

Skip the specified hooks or projects.

...
stage Literal['manual', 'commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg'] | Sequence[Literal['manual', 'commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg']] | None

The stage during which the hook is fired.

...
to_ref _Value

The destination ref in a from_ref...to_ref diff expression.

...
verbose _Flag

Use verbose output.

...

autoupdate

autoupdate(
    *,
    bleeding_edge: _Flag = ...,
    cd: _Value = ...,
    check: _Flag = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    cooldown_days: _Value = ...,
    dry_run: _Flag = ...,
    exclude_repo: _Value = ...,
    exclude_tag: _Value = ...,
    exit_code: _Flag = ...,
    freeze: _Flag = ...,
    include_tag: _Value = ...,
    jobs: _Value = ...,
    log_file: _Value = ...,
    no_progress: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    repo: _Value = ...,
    repo_exclude_tag: _Value = ...,
    repo_include_tag: _Value = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Result

Update the rev field of repositories in the config file to the latest version

Parameters:

Name Type Description Default
bleeding_edge _Flag

Update to the bleeding edge of the default branch instead of the latest tagged version.

...
cd _Value

Change to directory before running.

...
check _Flag

Alias of --dry-run --exit-code.

...
color Literal['auto', 'always', 'never'] | Sequence[Literal['auto', 'always', 'never']] | None

Whether to use color in output. Defaults to auto.

...
config _Value

Path to alternate config file.

...
cooldown_days _Value

Minimum release age (in days) required for a version to be eligible.

...
dry_run _Flag

Do not write changes to the config file, only display what would be changed.

...
exclude_repo _Value

Do not update this repository. May be repeated: a list emits the flag once per item.

...
exclude_tag _Value

Ignore tags matching this glob pattern. May be repeated: a list emits the flag once per item.

...
exit_code _Flag

Exit with status 1 if updates are available.

...
freeze _Flag

Store "frozen" hashes in rev instead of tag names.

...
include_tag _Value

Only consider tags matching this glob pattern. May be repeated: a list emits the flag once per item.

...
jobs _Value

Number of threads to use. Defaults to 0.

...
log_file _Value

Write trace logs to the specified file.

...
no_progress _Flag

Hide all progress outputs.

...
quiet _Flag

Use quiet output.

...
refresh _Flag

Refresh all cached data.

...
repo _Value

Only update this repository. May be repeated: a list emits the flag once per item.

...
repo_exclude_tag _Value

Ignore tags matching this glob pattern for a repository (<repo>=<pattern>). May be repeated: a list emits the flag once per item.

...
repo_include_tag _Value

Only consider tags matching this glob pattern for a repository (<repo>=<pattern>). May be repeated: a list emits the flag once per item.

...
verbose _Flag

Use verbose output.

...

clean

clean(
    *,
    cd: _Value = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    log_file: _Value = ...,
    no_progress: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Result

Remove all prek cached data

Parameters:

Name Type Description Default
cd _Value

Change to directory before running.

...
color Literal['auto', 'always', 'never'] | Sequence[Literal['auto', 'always', 'never']] | None

Whether to use color in output. Defaults to auto.

...
config _Value

Path to alternate config file.

...
log_file _Value

Write trace logs to the specified file.

...
no_progress _Flag

Hide all progress outputs.

...
quiet _Flag

Use quiet output.

...
refresh _Flag

Refresh all cached data.

...
verbose _Flag

Use verbose output.

...

flags

flags(
    *,
    all_files: _Flag = ...,
    cd: _Value = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    directory: _Value = ...,
    dry_run: _Flag = ...,
    fail_fast: _Flag = ...,
    files: _Value = ...,
    from_ref: _Value = ...,
    group: _Value = ...,
    last_commit: _Flag = ...,
    log_file: _Value = ...,
    no_group: _Value = ...,
    no_progress: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    show_diff_on_failure: _Flag = ...,
    skip: _Value = ...,
    stage: Literal[
        "manual",
        "commit-msg",
        "post-checkout",
        "post-commit",
        "post-merge",
        "post-rewrite",
        "pre-commit",
        "pre-merge-commit",
        "pre-push",
        "pre-rebase",
        "prepare-commit-msg",
    ]
    | Sequence[
        Literal[
            "manual",
            "commit-msg",
            "post-checkout",
            "post-commit",
            "post-merge",
            "post-rewrite",
            "pre-commit",
            "pre-merge-commit",
            "pre-push",
            "pre-rebase",
            "prepare-commit-msg",
        ]
    ]
    | None = ...,
    to_ref: _Value = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Prek

Bind tool-level global options before the subcommand.

tools.docker.flags(host=...) puts a tool's own options ahead of the verb, where they belong.

install

install(
    *args: str,
    allow_missing_config: _Flag = ...,
    cd: _Value = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    git_dir: _Value = ...,
    hook_type: Literal[
        "commit-msg",
        "post-checkout",
        "post-commit",
        "post-merge",
        "post-rewrite",
        "pre-commit",
        "pre-merge-commit",
        "pre-push",
        "pre-rebase",
        "prepare-commit-msg",
    ]
    | Sequence[
        Literal[
            "commit-msg",
            "post-checkout",
            "post-commit",
            "post-merge",
            "post-rewrite",
            "pre-commit",
            "pre-merge-commit",
            "pre-push",
            "pre-rebase",
            "prepare-commit-msg",
        ]
    ]
    | None = ...,
    log_file: _Value = ...,
    no_progress: _Flag = ...,
    overwrite: _Flag = ...,
    prepare_hooks: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    skip: _Value = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Result

Install prek Git shims into Git's effective hooks directory

Parameters:

Name Type Description Default
allow_missing_config _Flag

Allow a missing configuration file.

...
cd _Value

Change to directory before running.

...
color Literal['auto', 'always', 'never'] | Sequence[Literal['auto', 'always', 'never']] | None

Whether to use color in output. Defaults to auto.

...
config _Value

Path to alternate config file.

...
git_dir _Value

Install Git shims into the hooks subdirectory of the given git directory (<GIT_DIR>/hooks/).

...
hook_type Literal['commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg'] | Sequence[Literal['commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg']] | None

Which Git shim(s) to install.

...
log_file _Value

Write trace logs to the specified file.

...
no_progress _Flag

Hide all progress outputs.

...
overwrite _Flag

Overwrite existing Git shims.

...
prepare_hooks _Flag

Also prepare environments for all hooks used in the config file.

...
quiet _Flag

Use quiet output.

...
refresh _Flag

Refresh all cached data.

...
skip _Value

Skip the specified hooks or projects.

...
verbose _Flag

Use verbose output.

...

run

run(
    *args: str,
    all_files: _Flag = ...,
    cd: _Value = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    directory: _Value = ...,
    dry_run: _Flag = ...,
    fail_fast: _Flag = ...,
    files: _Value = ...,
    from_ref: _Value = ...,
    group: _Value = ...,
    last_commit: _Flag = ...,
    log_file: _Value = ...,
    no_group: _Value = ...,
    no_progress: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    show_diff_on_failure: _Flag = ...,
    skip: _Value = ...,
    stage: Literal[
        "manual",
        "commit-msg",
        "post-checkout",
        "post-commit",
        "post-merge",
        "post-rewrite",
        "pre-commit",
        "pre-merge-commit",
        "pre-push",
        "pre-rebase",
        "prepare-commit-msg",
    ]
    | Sequence[
        Literal[
            "manual",
            "commit-msg",
            "post-checkout",
            "post-commit",
            "post-merge",
            "post-rewrite",
            "pre-commit",
            "pre-merge-commit",
            "pre-push",
            "pre-rebase",
            "prepare-commit-msg",
        ]
    ]
    | None = ...,
    to_ref: _Value = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Result

Run hooks

Parameters:

Name Type Description Default
all_files _Flag

Run on all files in the repo.

...
cd _Value

Change to directory before running.

...
color Literal['auto', 'always', 'never'] | Sequence[Literal['auto', 'always', 'never']] | None

Whether to use color in output. Defaults to auto.

...
config _Value

Path to alternate config file.

...
directory _Value

Run hooks on all files in the specified directories.

...
dry_run _Flag

Do not run the hooks, but print the hooks that would have been run.

...
fail_fast _Flag

Stop running hooks after the first failure.

...
files _Value

Specific filenames to run hooks on. May be repeated: a list emits the flag once per item.

...
from_ref _Value

The original ref in a <from_ref>...<to_ref> diff expression.

...
group _Value

Run hooks belonging to the specified group.

...
last_commit _Flag

Run hooks against the last commit.

...
log_file _Value

Write trace logs to the specified file.

...
no_group _Value

Do not run hooks belonging to the specified group.

...
no_progress _Flag

Hide all progress outputs.

...
quiet _Flag

Use quiet output.

...
refresh _Flag

Refresh all cached data.

...
show_diff_on_failure _Flag

When hooks fail, run git diff directly afterward.

...
skip _Value

Skip the specified hooks or projects.

...
stage Literal['manual', 'commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg'] | Sequence[Literal['manual', 'commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg']] | None

The stage during which the hook is fired.

...
to_ref _Value

The destination ref in a from_ref...to_ref diff expression.

...
verbose _Flag

Use verbose output.

...

uninstall

uninstall(
    *,
    all: _Flag = ...,
    cd: _Value = ...,
    color: Literal["auto", "always", "never"]
    | Sequence[Literal["auto", "always", "never"]]
    | None = ...,
    config: _Value = ...,
    git_dir: _Value = ...,
    hook_type: Literal[
        "commit-msg",
        "post-checkout",
        "post-commit",
        "post-merge",
        "post-rewrite",
        "pre-commit",
        "pre-merge-commit",
        "pre-push",
        "pre-rebase",
        "prepare-commit-msg",
    ]
    | Sequence[
        Literal[
            "commit-msg",
            "post-checkout",
            "post-commit",
            "post-merge",
            "post-rewrite",
            "pre-commit",
            "pre-merge-commit",
            "pre-push",
            "pre-rebase",
            "prepare-commit-msg",
        ]
    ]
    | None = ...,
    log_file: _Value = ...,
    no_progress: _Flag = ...,
    quiet: _Flag = ...,
    refresh: _Flag = ...,
    verbose: _Flag = ...,
    **flags: Any,
) -> Result

Uninstall prek Git shims

Parameters:

Name Type Description Default
all _Flag

Uninstall all prek-managed Git shims.

...
cd _Value

Change to directory before running.

...
color Literal['auto', 'always', 'never'] | Sequence[Literal['auto', 'always', 'never']] | None

Whether to use color in output. Defaults to auto.

...
config _Value

Path to alternate config file.

...
git_dir _Value

Uninstall Git shims from the hooks subdirectory of the given git directory (<GIT_DIR>/hooks/).

...
hook_type Literal['commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg'] | Sequence[Literal['commit-msg', 'post-checkout', 'post-commit', 'post-merge', 'post-rewrite', 'pre-commit', 'pre-merge-commit', 'pre-push', 'pre-rebase', 'prepare-commit-msg']] | None

Which Git shim(s) to uninstall.

...
log_file _Value

Write trace logs to the specified file.

...
no_progress _Flag

Hide all progress outputs.

...
quiet _Flag

Use quiet output.

...
refresh _Flag

Refresh all cached data.

...
verbose _Flag

Use verbose output.

...