Skip to main content
Prose, a Python typesetter for the reader.

Rust1.97+ Python3.10+ Coveragepercent DocumentationDocs


🪻 About

Prose formats Python source to be legible at a glance. It aligns equals signs and colons vertically across consecutive lines, places one entry per line in dictionaries and lists, alphabetizes methods and fields within their groups, applies a singleton rule for colon padding, and treats code like prose rather than minified text.

[!NOTE] Prose is still pre-1.0. The rule catalog and configuration facets continue to grow across release lines.


🗞️ Philosophy

Code is read far more often than it is written. A reader's eye moves down a page and across adjacent lines looking for parallels, patterns, and shape. When every = sits at a different column and every collection is compressed onto one line, that shape disappears, forcing the eye to slow down. Prose restores it, with aligned columns letting the eye skim, one-per-line collections making each entry a unit, and alphabetized groupings giving every reader the same landmarks.

The trade-offs minimalist formatters were built to avoid (wider diffs, more vertical scrolling, occasional re-alignment churn) no longer dominate the equation. Agentic assistants do much of the typing, and every modern code host offers whitespace-ignoring diffs. What remains is the daily experience of reading code.


🪄 Install & Usage

uv tool install prose-formatter

The binary exposes format, check, rules, server, cache, completions, and schema:

prose format path/             # rewrite files in place
prose check path/              # exit non-zero on violations
prose format --diff path/      # show the diff without writing
prose check --stdin < file.py  # read from stdin
prose format - < file.py       # `-` reads from stdin too
prose rules                    # list the rules in pipeline order
prose schema                   # print the config's JSON Schema
prose server                   # language server over stdio

📰 Further Reading

The full edition lives at prose.fyi:


🗜️ Development

Prose is a Rust crate that ships as a Python wheel through maturin, with mise managing the Rust toolchain, Python interpreter, and every supporting CLI through a single mise config. After installing mise and activating it in your shell, the rest provisions from a clone:

git clone https://github.com/Jybbs/prose.git
cd prose
mise install
mise x -- uv venv crate/.venv

mise tasks lists every available task, and mise ci runs the full local sweep that mirrors GitHub Actions. CONTRIBUTING.md at the repository root walks from a bug report to the fixture case a fix is reviewed against, and covers the branch and pull-request flow.

For the architecture, the primitive surface walks every public type (Source, Pipeline, BindingAnalysis, SuppressionMap, RuleId, Edit), and the pipeline order explains how each rule reads a settled AST between reparses.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prose_formatter-0.9.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

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

prose_formatter-0.9.0-py3-none-win_arm64.whl (3.5 MB view details)

Uploaded Python 3Windows ARM64

prose_formatter-0.9.0-py3-none-win_amd64.whl (3.7 MB view details)

Uploaded Python 3Windows x86-64

prose_formatter-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

prose_formatter-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

prose_formatter-0.9.0-py3-none-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

prose_formatter-0.9.0-py3-none-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file prose_formatter-0.9.0.tar.gz.

File metadata

  • Download URL: prose_formatter-0.9.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0.tar.gz
Algorithm Hash digest
SHA256 c80417139809325849714b2a97232031b60d16e4a0534ebff82883d537223bfc
MD5 fd1c5ce128ff75462964e701ce6840a2
BLAKE2b-256 260e99e2d4ccc24f1fee017bf5401dfeef0d7c6746737d3a9660e750007cad1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0.tar.gz:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prose_formatter-0.9.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: prose_formatter-0.9.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6f9076d7ea5fe30081297382253199309dd0e9d847a033e0c9174563c1d6f8d1
MD5 ea1a086feea4f4f84d7977b9b7994999
BLAKE2b-256 9f3d547588b97433a702286182292477bdc994fa9c7af2a7cb7254e9fe8a49b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0-py3-none-win_arm64.whl:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prose_formatter-0.9.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: prose_formatter-0.9.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ee2568718e8242b44f0054d4459e8f2c35dd761d057666697a83afe8a7ae346a
MD5 56831c102226f9cd3b172b2d68b13a14
BLAKE2b-256 ee856f68b08aab3b68065430477558b275e3248a060c620e404b60ebdb79521b

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0-py3-none-win_amd64.whl:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prose_formatter-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prose_formatter-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17a9cfde6bda129e502bf11f9cb2b85984b1711da7793fc23b2e3f981a34fae1
MD5 e16f717c82b62d4a5884a176bd5af401
BLAKE2b-256 3ab4a0a94ae3b46c1c31c624459eca8fb4a57be5cee8a8647d1efa269ef7608e

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prose_formatter-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: prose_formatter-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4a3b8acddef04f5cbe40a1e9a81ef3f3599bb379b92807119053745951d06a36
MD5 e41c8041f5cc9955bed011d74464022a
BLAKE2b-256 17db8084e8dedbb2a77a56cfeab9618493df9a681b0ead6b7c90dea69fab501d

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prose_formatter-0.9.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: prose_formatter-0.9.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 deb1b3b755fcfea612b6352bc52fc5186952757518741039327addfb680b4a8e
MD5 a6954711913f5e1ebcbc615735e4df04
BLAKE2b-256 7e549448825a5cee1ed5553c7778b337b1cb4f7674b7780d8977bc9191337c3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prose_formatter-0.9.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: prose_formatter-0.9.0-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prose_formatter-0.9.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e1e145330786ef596f46086b3466f9badb9dc81229a0b12e8840f99220bcb74b
MD5 2982d2890d6090e26103b01b690b537a
BLAKE2b-256 b1ad7e5f843fe5ce2bb8cbe680335dd519b303b37425d91ccfcc44084e3f9a1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for prose_formatter-0.9.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on Jybbs/prose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.9.0 This release

7 files

0.8.3

6 files

0.8.2

6 files

0.8.1

6 files

0.8.0

6 files

0.7.0

6 files

0.6.0

6 files

0.5.0

6 files

0.4.0

6 files

0.3.0

6 files

0.2.3

6 files

0.2.2

6 files

0.2.1

6 files

0.2.0

6 files

0.1.2

6 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