Skip to main content

A formatter for reStructuredText

Project description

Not to be confused with rustfmt.

Description

rstfmt is a tool for automatically formatting reStructuredText files in a consistent way.

Like Black and gofmt, the motivation is to provide a format that is reasonable and minimally configurable to prevent teams from wasting time on style discussions (or individuals on manually doing formatting, for that matter).

Currently, rstfmt is in an early stage of development. Not all reST constructs are covered and the interface or formatting may change at any time without warning.

To get a feel for the output of rstfmt, see the sample file.

Usage

# Install directly from the repository.
pip install git+https://github.com/dzhu/rstfmt

# Install from PyPI.
pip install rstfmt

# Read a file from stdin and write the formatted version to stdout.
rstfmt

# Don't edit any files; exit with a nonzero status code if any files are not formatted.
rstfmt --check <file>...

# Print diffs for all files that are not formatted (implies --check).
rstfmt --diff <file>...

# Format the given files in place.
rstfmt <file>...

# Format all files with the `rst` or `txt` extension inside a directory.
rstfmt <directory>...
rstfmt --ext txt <directory>...

# Wrap paragraphs to the given line length (default 72).
rstfmt -w <width>

Like Black’s blackd, there is also a daemon that provides formatting via HTTP requests to avoid the cost of starting and importing everything on every run.

# Install.
pip install 'git+https://github.com/dzhu/rstfmt#egg=rstfmt[d]'
pip install 'rstfmt[d]'

# Start the daemon (binds to localhost:5219 by default).
rstfmtd --bind-host=<host> --bind-port=<port>

# Print the formatted version of a file.
curl http://locahost:5219 --data-binary @<file>

# Specify the line length (default 72).
curl -H 'X-Line-Length: 72' http://locahost:5219 --data-binary @<file>

# Mimic the standalone tool: read from stdin, write to stdout, exit with
# a nonzero status code if there are errors.
curl -fsS http://locahost:5219 --data-binary @/dev/stdin

With editors

The default behavior of reading from stdin and writing to stdout should integrate well with other systems, such as on-save hooks in editors. For example, here’s a configuration for reformatter.el, including both standalone and daemon modes:

;; Run the standalone tool.
(reformatter-define rstfmt
  :program "rstfmt")
(add-hook 'rst-mode-hook #'rstfmt-on-save-mode)

;; Query the daemon.
(reformatter-define client-rstfmt
  :program "curl"
  :args '("-fsS" "http://localhost:5219" "--data-binary" "@/dev/stdin"))
(add-hook 'rst-mode-hook #'client-rstfmt-on-save-mode)

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

rstfmt-0.0.14.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

rstfmt-0.0.14-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file rstfmt-0.0.14.tar.gz.

File metadata

  • Download URL: rstfmt-0.0.14.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for rstfmt-0.0.14.tar.gz
Algorithm Hash digest
SHA256 5dd5e6988386f21fd89adc015baca64588c38fa89a87ab691f81c7675162b3d2
MD5 eaaabfdd88a1b181277b8c6ee58d9ed9
BLAKE2b-256 a5c7544357eee7b190946bdb92626d0a56ce0c7784a1fc9b04320f95516508d8

See more details on using hashes here.

File details

Details for the file rstfmt-0.0.14-py3-none-any.whl.

File metadata

  • Download URL: rstfmt-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for rstfmt-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 5488be45c457239cf512239899caebd5f67bbff562e826fe3eb2059335535b2a
MD5 00fb9f50de6b267ee3f1b667cdfc2fcf
BLAKE2b-256 b7d80fd8c425ae8afa1076c98bef8b3916a46046d157ea1b61da1fee62baeeaa

See more details on using hashes here.

Supported by

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