Skip to main content

Improve reading flow by arranging functions and other code blocks.

Project description

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 .

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.

Development environment

Initialize with just bootstrap (includes linters). Test with just test.

See just --list for additional SDLC commands.

Publish

To publish a release:

just publish <yyyy.m.b>  # e.g. just release 2026.6.1

This requires an authenticated glab CLI.

New releases are delivered from GitLab to PyPI via Trusted Publishing.

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.

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

funkshway-2026.6.1.tar.gz (96.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

funkshway-2026.6.1-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file funkshway-2026.6.1.tar.gz.

File metadata

  • Download URL: funkshway-2026.6.1.tar.gz
  • Upload date:
  • Size: 96.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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}

File hashes

Hashes for funkshway-2026.6.1.tar.gz
Algorithm Hash digest
SHA256 918af877b2d6b496e59851976c806fbe24a89790d11775efa0158e2c21654f10
MD5 6fe38d25bfda52bc6aa15ab2ae217d47
BLAKE2b-256 6db7c0e0c0f58e04eb6d58085a61038c49b0fcdd28b7f3555c383552a352b961

See more details on using hashes here.

File details

Details for the file funkshway-2026.6.1-py3-none-any.whl.

File metadata

  • Download URL: funkshway-2026.6.1-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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}

File hashes

Hashes for funkshway-2026.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0e9f22c88697f7693aa3b3b38b864e22a831c95d1e3576d170d0230bf78a17cf
MD5 721fc46058200ba0efcf9859d357e14e
BLAKE2b-256 fec15e3dd529086cc5c9ec2188035a50b827067475a8e139c95578e1b83bb7c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page