Security-focused modular developer multi-tool CLI.
Project description
Developer Utility Toolkit
Security-focused, modular, format-aware Python CLI for common developer tasks.
Features
- Automatic input detection for text, JSON, XML, binary, hex, base64, URL, and file extension types
- Direct format conversion via transformer registry (no hidden chained conversion)
- Guided interactive mode: select input format, choose conversion mode (
all,one,multiple), view formatted outputs - Conversion commands:
convert,convert-all,formats - JSON/XML formatting, minification, and validation
- Encoding utilities: binary, hex, base64, URL encoding/decoding
- Hash and checksum reporting with
hash-allandinteractive - Image pixelation utility (optional
pillow) - Sitemap generator and fetcher with URL validation and request timeouts
- Local command history (
~/.developer_utility_toolkit/history/history.jsonl)
Architecture
src/toolkit/core: abstractions, registry, detector, and safe I/O helperssrc/toolkit/transformers: pluggable one-step transformerssrc/toolkit/formatters: JSON/XML format/minify/validate servicessrc/toolkit/image_tools: image utilitiessrc/toolkit/web_tools: sitemap generation/fetchingsrc/toolkit/history: local history servicesrc/toolkit/cli.py: Typer entrypoint and command wiring
Design choices:
- No chained transformations by default (one direct transform per request target)
- Safe XML parsing via
defusedxml - Controlled output writes via sanitized filename + output directory constraints
- Clear failure modes with explicit non-zero exit codes
Installation
Install from PyPI:
python -m pip install --upgrade pip
pip install developer-utility-toolkit
Install with all optional features:
pip install "developer-utility-toolkit[all]"
Install isolated with pipx (recommended for CLI tools):
pipx install developer-utility-toolkit
Docker (Alternative Install)
Install via GitHub Packages container (GHCR):
docker pull ghcr.io/artenisalija/developer-utility-kit:latest
Run help:
docker run --rm ghcr.io/artenisalija/developer-utility-kit:latest --help
Run a command with mounted files:
docker run --rm -v "$PWD:/work" -w /work ghcr.io/artenisalija/developer-utility-kit:latest format --kind json --file input.json --output output.json
Install developer tooling:
pip install ".[all,dev]"
Usage
toolkit --help
toolkit formats
toolkit analyze --text '{"name":"dev"}'
toolkit convert --from text --to base64 --text "hello"
toolkit convert-all --text "hello" --from text
toolkit convert-all --text "11111111" --from binary
toolkit convert-all --text "hello" --ask
toolkit interactive
toolkit hash-all --text "hello"
toolkit hash-all --text "01101000 01101001" --from binary
toolkit hash-all --text "68656c6c6f" --from hex
toolkit format --kind json --text '{"b":2,"a":1}'
toolkit validate --kind xml --text '<root><a>1</a></root>'
toolkit minify --kind json --text '{"b":2,"a":1}'
toolkit image pixelate --input-file ./input.png --output-name output.png
toolkit sitemap generate --base-url https://example.com --path / --path /docs
toolkit sitemap fetch --url https://example.com/sitemap.xml
toolkit recent show --limit 10
Interactive Flow
toolkit interactive asks for:
- Input format (number or letter)
- Input value
- Conversion mode:
All formatsOne formatMultiple formats(comma-separated choices)
Then it prints:
- Structured conversion output blocks
- Full hash/checksum report for the input bytes
Hash/Checksum Algorithms
toolkit hash-all and toolkit interactive report:
- MD2 Hash Generator
- MD4 Hash Generator
- MD5 Hash Generator
- NTLM Hash Generator
- SHA1 Hash Generator
- SHA2 Hash Generator
- SHA224 Hash Generator
- SHA256 Hash Generator
- SHA384 Hash Generator
- SHA512 Hash Generator
- SHA512/224 Hash Generator
- SHA512/256 Hash Generator
- SHA3-224 Hash Generator
- SHA3-256 Hash Generator
- SHA3-384 Hash Generator
- SHA3-512 Hash Generator
- CRC-16 Hash Generator
- CRC-32 Hash Generator
- Shake-128 Hash Generator
- Shake-256 Hash Generator
- MD6 Hash Generator
- Whirlpool Hash Generator
- Checksum Calculator
Note: algorithm availability depends on Python/OpenSSL build. Unsupported algorithms are marked as unavailable at runtime.
Binary Input Notes
- Binary input accepts
0/1with optional spaces. - Non-8-bit lengths are accepted and left-padded to full bytes (
1010becomes00001010). - If one conversion target fails (for example, binary bytes are not valid UTF-8 text), other targets still continue in
convert-allandinteractive.
Security Philosophy
- Secure defaults and explicit input validation
- Defused XML parser to prevent XXE/entity expansion attacks
- No
eval/execusage - Timeout-controlled network calls
- Sanitized output file names with constrained output directories
- Graceful errors with explicit status codes
Development
Run local quality gates:
ruff check .
black --check .
mypy src tests
pytest
bandit -r src -ll
pip-audit --strict
safety check --full-report
Pre-commit:
pre-commit install
pre-commit run --all-files
CI/CD
ci.yml: lint + format + mypy + tests + coverage (>=85%) on Python 3.11/3.12security.yml: Bandit + pip-audit + Safetyrelease.yml: runs on version tags (v*.*.*), builds wheel/sdist, runs tests, publishes to PyPI, creates GitHub release notesghcr.yml: builds and publishes multi-arch Docker images to GHCR (ghcr.io/artenisalija/developer-utility-kit)- Dependabot enabled for Python packages and GitHub Actions
Update
pip install -U developer-utility-toolkit
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file developer_utility_toolkit-0.1.5.tar.gz.
File metadata
- Download URL: developer_utility_toolkit-0.1.5.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
746c8e281a35bc027f09dd54108564fbb30c97c58ebd0e3c341d6dc6bb67bcd9
|
|
| MD5 |
3f7945c95bc29069eea0b6533cf03784
|
|
| BLAKE2b-256 |
1e2d7553db21f456fab02ad2d1986deddab2e87e302a8a16d700fbb0574fe2f8
|
File details
Details for the file developer_utility_toolkit-0.1.5-py3-none-any.whl.
File metadata
- Download URL: developer_utility_toolkit-0.1.5-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e14752b65a1f97e4177601b608d61d3d7e444476c7b147dd720743260629966
|
|
| MD5 |
7f65c30a20584063ae8f2733fd6b6440
|
|
| BLAKE2b-256 |
5e087a7602e82449d18d931040f9340eaedf3417755a45332c1097d7513dffee
|