funkshway 🕺
Improve reading flow by arranging functions and other code blocks.
The formatter applies the following prioritized ordering:
- Idiomatic structure (dunders and other conventions)
- Topological order (callers before the helpers they use)
- Lexical order (for a stable, idempotent layout)
Usage
# Format specific files in-place
funkshway path/to/file.py [other/files.py ...]
# Recursive mode from current folder
funkshway .
# Log errors but exit with zero (relaxed mode for CI)
funkshway --relaxed .
# Check if files need formatting (exit 1 if so, no changes written)
funkshway --check .
# Show a unified diff of what would change (no changes written)
funkshway --diff .
# Write a JSON report of issues encountered (works in all modes)
funkshway --check --report issues.json .
Unresolvable code blocks will trigger an error, and that file will be skipped.
Vertical space and other formatting
- Vertical spacing:
funkshwayenforces minimal PEP 8 vertical spacing (e.g., two blank lines before top-level functions and classes) to ensure reordered code is immediately compatible with standard linters. - Out of scope: All other formatting (indentation, line length, internal whitespace,
etc.) is ignored. It is recommended to run
ruff formatorblackafterfunkshway.
Triaging issues in the wild
When run over unfamiliar code, --report (or -r) writes a JSON document listing every
issue that prevented a clean format — refusals, syntax errors, internal errors and
warnings — with category, path, kind, line and snippet, plus a summary histogram
ranked by frequency.
Pair it with --check for a read-only survey, or with --relaxed to format what you
can and report the rest.
The histogram shows which unrecognized constructs occur most often, to evaluate them for
inclusion in the ordering rules.
Development environment
Initialize with just bootstrap (includes linters).
Test with just test.
See just --list for additional SDLC commands.
Publishing
To publish a release:
glab auth login
just publish
The new release is automatically delivered to PyPI via Trusted Publishing.
You may update the release notes in GitLab after the fact.
Sharing and contributions
funkshway 🕺
https://lofidevops.neocities.org
Copyright 2026 David Seaward and contributors
SPDX-License-Identifier: Apache-2.0
Shared under Apache-2.0. We adhere to the Contributor Covenant 3.0, and certify origin per DCO 1.1 with a signed-off-by line. Contributions under the same terms are welcome.
Submit security and conduct issues as private tickets.
Sign commits with git commit --signoff. For a software bill of materials run
reuse spdx. For more details see CONDUCT, COPYING and CONTRIBUTING.
Colophon
Feng shui is the practice of arranging objects to improve flow.
Built (almost) exclusively with AGENTS.md, specification.toml and PLAN.md for
agent guidance.
Metadata
Release files for funkshway 2026.10.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| funkshway-2026.10.5.tar.gz | 89.2 kB | Without provenance | Details for funkshway-2026.10.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| funkshway-2026.10.5-py3-none-any.whl | Python 3 | none | any | Details for funkshway-2026.10.5-py3-none-any.whl |
Total release size: 105.3 kB
Release files / funkshway-2026.10.5.tar.gz
| Download URL | funkshway-2026.10.5.tar.gz |
|---|---|
| Size | 89.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a206332b6937d59b81a46db9d2e70c6cc68b564f6eba7f9a22ec8c8a6108d68a
|
|
BLAKE2b-256 checksum How to use checksums |
bd1253ed85b4645ecc7741c8235905f7ff2e3b1d4774f49ef22ed6bfabb8ecab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / funkshway-2026.10.5-py3-none-any.whl
| Download URL | funkshway-2026.10.5-py3-none-any.whl |
|---|---|
| Size | 16.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
711a906a4012d10bbbff15ee8c7ced4a0a458d70b71682e07474633dcdf37a06
|
|
BLAKE2b-256 checksum How to use checksums |
3fb10e9c347602a40e55c267bcdc3fb859987358ff7e7fb7f3ed9d98b7ea30b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for funkshway 2026.10.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.