Skip to main content

bhtool

Assorted CLI utilities that are handy in Bosco’s day-to-day work—version bumps, file conversions, process helpers, macOS shortcuts, LLM-assisted movie renaming, and other small odds and ends. Python ≥3.13.

Install options

Option Description
uvx bhtool … Run from PyPI on demand (no clone). Example:uvx bhtool --help, uvx bhtool run cursor.
uv tool install bhtool Install**b** / bhtool globally from PyPI (released versions).
uv sync then uv run bhtool … Use the project venv from a checkout (no global install).
uv tool install . Install**b** / bhtool globally from the current directory (pinned copy).
uv tool install --editable . Install**b** / bhtool globally in editable mode from a checkout (code changes apply without reinstall).

Commands

Command Description
bumpver Bump version inpyproject.toml, commit, push; PyPI publish is on by default (--no-publish to skip)
run Open macOS applications by partial name (e.g.uvx bhtool run cursor or b run cursor after a local install)
clr-chmod Remove execute bit from non-shell files; tighten group/other write
npread Print the shape of NumPy.npy files
psword Find processes by name;--kill to terminate
port Find processes listening on TCP ports;--kill to terminate
rm-npm Recursively deletenode_modules dirs and package-lock.json files
text Convert between Markdown, HTML, DOCX, and Pug (needspandoc and related tools on PATH)
todict JSON or YAML file, or stdin, → Pythondict(...)-style repr on stdout
movies uvx bhtool movies (or b movies) — ask an LLM for normalized names; writes movie_mapping.json in the current working directory; --execute applies renames (default is dry-run table)
gdoc Pull/push Google Docs as Markdown (`b gdoc pull push

Movies + LLM

b movies asks an LLM for normalized names. --service <name> selects a provider for one run (groq, google, openai, anthropic, mistral, deepseek, xai, bedrock, ollama — see b movies --help). Without it, the provider comes from LLM_SERVICE, else from the first API key in the environment, else ollama. Set keys in the process environment or in bhtool/.env (loaded from the installed package directory). Each provider uses one cheap model from bhtool/llm_services.py through pydantic-ai.


jtools

Node CLI: pug formatting, agent config copy. Usage: jtools <subcommand>

Install: cd jtools && npm install — dependencies only; this package is not published, so run it from that directory (or npm link after install).

Run (after install): npx jtools <subcommand> resolves the local jtools binary (same as node_modules/.bin/jtools). Examples: npx jtools format-pug, npx jtools copy-agent.

Subcommand Description
format-pug Format pug in./index.html
copy-agent Copy~/.claude/CLAUDE.md → ./AGENT.md

Metadata

Release files for bhtool 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bhtool 0.5.1
File Size Uploaded
bhtool-0.5.1.tar.gz 19.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bhtool 0.5.1
File Interpreter ABI Platform
bhtool-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 43.0 kB

Release files / bhtool-0.5.1.tar.gz

Download URL bhtool-0.5.1.tar.gz
Size 19.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1b77c12f364d14277b82d662af83796fcd88b36dbd6c1e0e02950624acc22036
BLAKE2b-256 checksum
How to use checksums
19e972c3923827963e025e33447d48dc0e9143047f3185b72c69225ea823cbda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / bhtool-0.5.1-py3-none-any.whl

Download URL bhtool-0.5.1-py3-none-any.whl
Size 23.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9957c0e3e2ec35b18ddaf2381a9db648dbb6d5edc0f9663953418f573d4fd78
BLAKE2b-256 checksum
How to use checksums
250020c661d343e888af8bf945b0bae62e4ff8287fd2d156053cf7bb2294f0af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.10

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page