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.4.0

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.4.0
File Size Uploaded
bhtool-0.4.0.tar.gz 19.6 kB Details

Built distribution (wheel)

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

Total release size: 42.7 kB

Release files / bhtool-0.4.0.tar.gz

Download URL bhtool-0.4.0.tar.gz
Size 19.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a02ea58c745c8513b7855a8f19a4720c5c42003e31b6b46e6115c078ce727843
BLAKE2b-256 checksum
How to use checksums
858b3ef87771af623a2523037ba47fc8867d7ea3f945f8c23d94bf1e454df71e
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.4.0-py3-none-any.whl

Download URL bhtool-0.4.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46696dcdb4617dc4146e02d18550b52eaa01ac040dd974551e444f6d82dadf67
BLAKE2b-256 checksum
How to use checksums
373a773283a73d0f90df015f5a6134625f6f0197a672d549d5e0b7de6fa42dfb
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

0.5.1

2 release files

0.5.0

2 release files

This release

0.4.0 This release

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