Skip to main content

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: funkshway enforces 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 format or black after funkshway.

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)

Source distribution for funkshway 2026.10.5
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)

Table of built distributions (wheels) for funkshway 2026.10.5
File Interpreter ABI Platform Actions
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.

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