Skip to content

Faster hook disappears from UI upon completion when run in parallel #1953

@injust

Description

@injust

Summary

I configure my hooks that never modify files to run at the end in parallel, with priority 99. Of these 2 hooks, I believe basedpyright always takes longer than tombi-lint. After tombi-lint finishes running, it disappears from the UI until basedpyright finishes running, then it reappears at the end.

ascii.cast.json

Willing to submit a PR?

  • Yes — I’m willing to open a PR to fix this.

Platform

macOS 15 x86_64

Version

prek 0.3.9 (Homebrew 2026-04-13)

.pre-commit-config.yaml

[[repos]]
repo = "https://github.com/asottile/pyupgrade"
rev = "v3.21.2"
hooks = [
  { id = "pyupgrade", args = ["--py314-plus"] },
]

[[repos]]
repo = "https://github.com/astral-sh/ruff-pre-commit"
rev = "v0.15.11"
hooks = [
  { id = "ruff-check", args = ["--fix"] },
  { id = "ruff-format" },
]

[[repos]]
repo = "https://github.com/DetachHead/basedpyright-prek-mirror"
rev = "1.39.2"
hooks = [
  { id = "basedpyright", priority = 99 },
]

[[repos]]
repo = "https://github.com/tombi-toml/tombi-pre-commit"
rev = "v0.9.18"
hooks = [
  { id = "tombi-format" },
  { id = "tombi-lint", priority = 99 },
]

Log file

2026-04-19T11:17:14.521717Z DEBUG prek: 0.3.9 (Homebrew 2026-04-13)
2026-04-19T11:17:14.522689Z DEBUG Args: ["prek", "run", "-a"]
2026-04-19T11:17:14.535375Z TRACE get_root: close time.busy=11.9ms time.idle=8.18µs
2026-04-19T11:17:14.535972Z DEBUG Git root: /Users/jsu/code/ec2-spot
2026-04-19T11:17:14.536040Z DEBUG Found workspace root at `/Users/jsu/code/ec2-spot`
2026-04-19T11:17:14.536066Z TRACE Include selectors: ``
2026-04-19T11:17:14.536078Z TRACE Skip selectors: ``
2026-04-19T11:17:14.537411Z DEBUG discover{root="/Users/jsu/code/ec2-spot" config=None refresh=false}: Loaded workspace from cache
2026-04-19T11:17:14.537495Z DEBUG discover{root="/Users/jsu/code/ec2-spot" config=None refresh=false}: Loading project configuration path=prek.toml
2026-04-19T11:17:14.538703Z TRACE discover{root="/Users/jsu/code/ec2-spot" config=None refresh=false}: close time.busy=2.60ms time.idle=1.62µs
2026-04-19T11:17:14.539293Z TRACE Checking lock resource="store" path=/Users/jsu/.cache/prek/.lock
2026-04-19T11:17:14.539317Z DEBUG Acquired lock resource="store"
2026-04-19T11:17:14.549651Z TRACE No requires-python found in pyproject.toml hook=pyupgrade
2026-04-19T11:17:14.549897Z TRACE No requires-python found in pyproject.toml hook=ruff-check
2026-04-19T11:17:14.549962Z TRACE No requires-python found in pyproject.toml hook=ruff-format
2026-04-19T11:17:14.550109Z TRACE No requires-python found in pyproject.toml hook=basedpyright
2026-04-19T11:17:14.550282Z TRACE No requires-python found in pyproject.toml hook=tombi-format
2026-04-19T11:17:14.550369Z TRACE No requires-python found in pyproject.toml hook=tombi-lint
2026-04-19T11:17:14.550460Z DEBUG Hooks going to run: ["pyupgrade", "ruff-check", "ruff-format", "basedpyright", "tombi-format", "tombi-lint"]
2026-04-19T11:17:14.552731Z TRACE Executing `/Users/jsu/.local/share/uv/python/cpython-3.14.4-macos-x86_64-none/bin/python3.14 -I -c import sys, json
info = {
    "version": ".".join(map(str, sys.version_info[:3])),
    "base_exec_prefix": sys.base_exec_prefix,
}
print(json.dumps(info))
 [...]`
2026-04-19T11:17:14.646386Z DEBUG Found installed environment for hook `pyupgrade` at `/Users/jsu/.cache/prek/hooks/python-k6BbRicShjonW75ZEgmU`
2026-04-19T11:17:14.646450Z DEBUG Found installed environment for hook `ruff-check` at `/Users/jsu/.cache/prek/hooks/python-DTr1xiX2t4XXbjBN4J9v`
2026-04-19T11:17:14.646463Z DEBUG Found installed environment for hook `ruff-format` at `/Users/jsu/.cache/prek/hooks/python-DTr1xiX2t4XXbjBN4J9v`
2026-04-19T11:17:14.646474Z DEBUG Found installed environment for hook `basedpyright` at `/Users/jsu/.cache/prek/hooks/python-l5aLTgSU42i4HgBd8vYE`
2026-04-19T11:17:14.646485Z DEBUG Found installed environment for hook `tombi-format` at `/Users/jsu/.cache/prek/hooks/python-9zmRaGpRRGA2UWwYlsHA`
2026-04-19T11:17:14.646494Z DEBUG Found installed environment for hook `tombi-lint` at `/Users/jsu/.cache/prek/hooks/python-9zmRaGpRRGA2UWwYlsHA`
2026-04-19T11:17:14.646572Z TRACE Released lock path=/Users/jsu/.cache/prek/.lock
2026-04-19T11:17:14.647590Z TRACE collect_files:ls_files{cwd="/Users/jsu/code/ec2-spot" path="/Users/jsu/code/ec2-spot"}: Executing `cd /Users/jsu/code/ec2-spot && /usr/local/bin/git ls-files -z -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:14.659932Z TRACE collect_files:ls_files{cwd="/Users/jsu/code/ec2-spot" path="/Users/jsu/code/ec2-spot"}: close time.busy=3.01ms time.idle=9.86ms
2026-04-19T11:17:14.660012Z DEBUG collect_files: All files in the workspace: 10
2026-04-19T11:17:14.660030Z TRACE collect_files: close time.busy=3.57ms time.idle=9.85ms
2026-04-19T11:17:14.660114Z TRACE for_project{project=.}: close time.busy=2.50µs time.idle=897ns
2026-04-19T11:17:14.660153Z TRACE Files for project `.` after filtered: 10
2026-04-19T11:17:14.660174Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: Executing `/usr/local/bin/git diff -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:14.671351Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: close time.busy=1.34ms time.idle=9.84ms
2026-04-19T11:17:14.671459Z DEBUG Running priority group with priority 0 with concurrency 8: ["pyupgrade"]
2026-04-19T11:17:14.672395Z TRACE for_hook{hook="pyupgrade"}: close time.busy=843µs time.idle=2.09µs
2026-04-19T11:17:14.672449Z TRACE Files for hook `pyupgrade` after filtered: 3
2026-04-19T11:17:14.673054Z TRACE run{hook_id=pyupgrade language=python}: Resolved command: /Users/jsu/.cache/prek/hooks/python-k6BbRicShjonW75ZEgmU/bin/pyupgrade
2026-04-19T11:17:14.673419Z TRACE run{hook_id=pyupgrade language=python}: Found shebang: ["/Users/jsu/.cache/prek/hooks/python-k6BbRicShjonW75ZEgmU/bin/python3"]
2026-04-19T11:17:14.673496Z TRACE run{hook_id=pyupgrade language=python}: Resolved interpreter: /Users/jsu/.cache/prek/hooks/python-k6BbRicShjonW75ZEgmU/bin/python3
2026-04-19T11:17:14.673571Z TRACE run{hook_id=pyupgrade language=python}: Running pyupgrade total_files=3 concurrency=8
2026-04-19T11:17:14.674149Z TRACE run{hook_id=pyupgrade language=python}: Executing `cd /Users/jsu/code/ec2-spot && /Users/jsu/.cache/prek/hooks/python-k6BbRicShjonW75ZEgmU/bin/python3 /Users/jsu/.cache/prek/hooks/python-k6BbRicShjonW75ZEgmU/bin/pyupgrade --py314-plus gpu-spot-pricing.py cpu-spot-pricing.py [...]`
2026-04-19T11:17:14.828108Z TRACE run{hook_id=pyupgrade language=python}: close time.busy=3.97ms time.idle=152ms
2026-04-19T11:17:14.828475Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: Executing `/usr/local/bin/git diff -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:14.843808Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: close time.busy=3.05ms time.idle=12.3ms
2026-04-19T11:17:14.843917Z DEBUG Running priority group with priority 1 with concurrency 8: ["ruff-check"]
2026-04-19T11:17:14.844091Z TRACE for_hook{hook="ruff-check"}: close time.busy=152µs time.idle=1.34µs
2026-04-19T11:17:14.844138Z TRACE Files for hook `ruff-check` after filtered: 3
2026-04-19T11:17:14.844331Z TRACE run{hook_id=ruff-check language=python}: Resolved command: /Users/jsu/.cache/prek/hooks/python-DTr1xiX2t4XXbjBN4J9v/bin/ruff
2026-04-19T11:17:14.844756Z TRACE run{hook_id=ruff-check language=python}: Running ruff-check total_files=3 concurrency=1
2026-04-19T11:17:14.844990Z TRACE run{hook_id=ruff-check language=python}: Executing `cd /Users/jsu/code/ec2-spot && /Users/jsu/.cache/prek/hooks/python-DTr1xiX2t4XXbjBN4J9v/bin/ruff check --force-exclude --fix gpu-spot-pricing.py cpu-spot-pricing.py utils.py`
2026-04-19T11:17:14.927733Z TRACE run{hook_id=ruff-check language=python}: close time.busy=2.45ms time.idle=81.1ms
2026-04-19T11:17:14.927898Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: Executing `/usr/local/bin/git diff -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:14.937672Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: close time.busy=1.37ms time.idle=8.41ms
2026-04-19T11:17:14.937804Z DEBUG Running priority group with priority 2 with concurrency 8: ["ruff-format"]
2026-04-19T11:17:14.937990Z TRACE for_hook{hook="ruff-format"}: close time.busy=167µs time.idle=1.19µs
2026-04-19T11:17:14.938029Z TRACE Files for hook `ruff-format` after filtered: 3
2026-04-19T11:17:14.938264Z TRACE run{hook_id=ruff-format language=python}: Resolved command: /Users/jsu/.cache/prek/hooks/python-DTr1xiX2t4XXbjBN4J9v/bin/ruff
2026-04-19T11:17:14.938392Z TRACE run{hook_id=ruff-format language=python}: Running ruff-format total_files=3 concurrency=1
2026-04-19T11:17:14.938753Z TRACE run{hook_id=ruff-format language=python}: Executing `cd /Users/jsu/code/ec2-spot && /Users/jsu/.cache/prek/hooks/python-DTr1xiX2t4XXbjBN4J9v/bin/ruff format --force-exclude gpu-spot-pricing.py cpu-spot-pricing.py utils.py`
2026-04-19T11:17:14.978168Z TRACE run{hook_id=ruff-format language=python}: close time.busy=2.80ms time.idle=37.3ms
2026-04-19T11:17:14.978314Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: Executing `/usr/local/bin/git diff -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:14.989926Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: close time.busy=1.77ms time.idle=9.84ms
2026-04-19T11:17:14.990023Z DEBUG Running priority group with priority 4 with concurrency 8: ["tombi-format"]
2026-04-19T11:17:14.990183Z TRACE for_hook{hook="tombi-format"}: close time.busy=139µs time.idle=1.67µs
2026-04-19T11:17:14.990274Z TRACE Files for hook `tombi-format` after filtered: 3
2026-04-19T11:17:14.990443Z TRACE run{hook_id=tombi-format language=python}: Resolved command: /Users/jsu/.cache/prek/hooks/python-9zmRaGpRRGA2UWwYlsHA/bin/tombi
2026-04-19T11:17:14.990872Z TRACE run{hook_id=tombi-format language=python}: Running tombi-format total_files=3 concurrency=8
2026-04-19T11:17:14.991075Z TRACE run{hook_id=tombi-format language=python}: Executing `cd /Users/jsu/code/ec2-spot && /Users/jsu/.cache/prek/hooks/python-9zmRaGpRRGA2UWwYlsHA/bin/tombi format prek.toml .prettierrc.toml pyproject.toml`
2026-04-19T11:17:15.330817Z TRACE run{hook_id=tombi-format language=python}: close time.busy=2.72ms time.idle=338ms
2026-04-19T11:17:15.331318Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: Executing `/usr/local/bin/git diff -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:15.347161Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: close time.busy=4.65ms time.idle=11.2ms
2026-04-19T11:17:15.347256Z DEBUG Running priority group with priority 99 with concurrency 8: ["basedpyright", "tombi-lint"]
2026-04-19T11:17:15.347459Z TRACE for_hook{hook="basedpyright"}: close time.busy=181µs time.idle=1.52µs
2026-04-19T11:17:15.347509Z TRACE Files for hook `basedpyright` after filtered: 3
2026-04-19T11:17:15.347751Z TRACE run{hook_id=basedpyright language=python}: Resolved command: /Users/jsu/.cache/prek/hooks/python-l5aLTgSU42i4HgBd8vYE/bin/basedpyright
2026-04-19T11:17:15.348200Z TRACE run{hook_id=basedpyright language=python}: Found shebang: ["/Users/jsu/.cache/prek/hooks/python-l5aLTgSU42i4HgBd8vYE/bin/python3"]
2026-04-19T11:17:15.348287Z TRACE run{hook_id=basedpyright language=python}: Resolved interpreter: /Users/jsu/.cache/prek/hooks/python-l5aLTgSU42i4HgBd8vYE/bin/python3
2026-04-19T11:17:15.348341Z TRACE run{hook_id=basedpyright language=python}: Running basedpyright total_files=3 concurrency=1
2026-04-19T11:17:15.348561Z TRACE run{hook_id=basedpyright language=python}: Executing `cd /Users/jsu/code/ec2-spot && /Users/jsu/.cache/prek/hooks/python-l5aLTgSU42i4HgBd8vYE/bin/python3 /Users/jsu/.cache/prek/hooks/python-l5aLTgSU42i4HgBd8vYE/bin/basedpyright gpu-spot-pricing.py cpu-spot-pricing.py utils.py [...]`
2026-04-19T11:17:15.350011Z TRACE for_hook{hook="tombi-lint"}: close time.busy=157µs time.idle=1.40µs
2026-04-19T11:17:15.350057Z TRACE Files for hook `tombi-lint` after filtered: 3
2026-04-19T11:17:15.350268Z TRACE run{hook_id=tombi-lint language=python}: Resolved command: /Users/jsu/.cache/prek/hooks/python-9zmRaGpRRGA2UWwYlsHA/bin/tombi
2026-04-19T11:17:15.350384Z TRACE run{hook_id=tombi-lint language=python}: Running tombi-lint total_files=3 concurrency=8
2026-04-19T11:17:15.350683Z TRACE run{hook_id=tombi-lint language=python}: Executing `cd /Users/jsu/code/ec2-spot && /Users/jsu/.cache/prek/hooks/python-9zmRaGpRRGA2UWwYlsHA/bin/tombi lint prek.toml .prettierrc.toml pyproject.toml`
2026-04-19T11:17:15.668270Z TRACE run{hook_id=tombi-lint language=python}: close time.busy=3.66ms time.idle=315ms
2026-04-19T11:17:18.160834Z TRACE run{hook_id=basedpyright language=python}: close time.busy=2.76ms time.idle=2.81s
2026-04-19T11:17:18.161602Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: Executing `/usr/local/bin/git diff -- /Users/jsu/code/ec2-spot`
2026-04-19T11:17:18.178957Z TRACE get_diff{path="/Users/jsu/code/ec2-spot"}: close time.busy=3.53ms time.idle=13.8ms

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions