Skip to main content

🛠️ Curu: Various Programming Utilities

Curu (Quenya “skill”, Sindarin “skill, craft, magic”) is a lightweight toolbox of Python helpers that simplify everyday programming. It currently provides these CLI tools:

Command What it does
check-git Recursively finds Git repos under a folder, shows uncommitted changes and non-pushed commits.
parse-nested Pretty-prints and colorizes nested/templated C++-like expressions (supports clipboard input).
icon-scale Generates multiple icon PNGs at standard sizes from a single source image using libvips/pyvips.

📦 Installation

Curu is available on PyPI and can be installed with pip, uv, or pipx:

pip install curu
# or
uv tool install curu
# or
pipx install curu

🚀 Usage

check-git

# Check a directory (recursively) for dirty Git repos and non-pushed commits
check-git path/to/folder

# Also update the default remote before checking
check-git --update-remote path/to/folder

Typical output:

/path/to/repo is dirty:
untracked: ['new_file.py']
unstaged: ['modified_file.py']
staged: ['staged_change.py']

/path/to/other_repo has non-pushed commits:
f3c2e1a Add new feature
...

parse-nested

# Format text passed as an argument
parse-nested "std::vector<std::pair<int, std::string>>"

# Format clipboard contents (no positional args → reads from clipboard)
parse-nested

# Limit maximum line width (default: 80)
parse-nested -w 100 "some very long templated type"

# Only print formatted output; do not overwrite clipboard
parse-nested -p

# Cut off nesting after a certain depth
parse-nested -d 3 "very deeply nested type..."

By default (no -p and no -d), when reading from the clipboard, it prints a colorized version to the terminal and copies a cleaned, uncolored version back to the clipboard.

icon-scale

# Generate multiple PNGs at standard sizes from one source image
icon-scale path/to/icon.png path/to/output/icon

# This writes files like:
#   path/to/output/icon-512.png
#   path/to/output/icon-384.png
#   ...
#   path/to/output/icon-48.png

The second argument is treated as a prefix: icon-scale src.png prefix creates prefix-512.png, prefix-384.png, etc.

📜 Licence

This library is licensed under the terms of the Mozilla Public Licence 2.0, provided in License.

Metadata

Release files for curu 1.0.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 curu 1.0.0
File Size Uploaded
curu-1.0.0.tar.gz 14.7 kB Details

Built distribution (wheel)

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

Total release size: 29.2 kB

Release files / curu-1.0.0.tar.gz

Download URL curu-1.0.0.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3b75293d887c825bd370385e390c6c604c80efd77dcf046c13b474f16641d5da
BLAKE2b-256 checksum
How to use checksums
f3a7c3378bbf9839aff49caf6c4dfd8619067259182ac2f0f2cb4cc6412419c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / curu-1.0.0-py3-none-any.whl

Download URL curu-1.0.0-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22b869e641d098abde2353aa01d9450d5f08928a77c11b20e93417e5e0c5cf17
BLAKE2b-256 checksum
How to use checksums
491d5b881ba9377d3718dc15443badebe4119efbf9b7b952b834d74aa546439f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

1.0.0 This release

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