Skip to main content

Fatou

Build and Test Crates.io Open VSX VS Code PyPI version npm version

Fatou is a language server, formatter, and linter for Julia that never has to run Julia itself.

It parses Julia once and serves three tools from that tree:

  • Formatter (fatou format): deterministic, rule-based layout.
  • Linter (fatou lint): diagnostics with source snippets.
  • Language server (fatou lsp): both, live in your editor.

Written in Rust, Fatou is fast, safe, and easy to embed in editors and tooling. The architecture follows rust-analyzer: a lossless rowan CST that reconstructs the input byte-for-byte, salsa for incremental recomputation, and lsp-server for the language-server transport. It is named after the French mathematician Pierre Fatou, whose Fatou set is the complement of the Julia set.

Installation

Fatou is available from several sources:

  • crates.io: cargo install fatou
  • Homebrew: brew install jolars/tap/fatou
  • npm: npm install -g fatou-cli (bundles a prebuilt binary)
  • PyPI: uv tool install fatou/pipx install fatou
  • AUR (Arch Linux): paru -S fatou-bin (or any other AUR helper)
  • NixOS: the fatou package is available in the Nixpkgs repository
  • Prebuilt binaries: from the releases page
  • VS Code/Open VSX: the Fatou extension (Marketplace, Open VSX); also works in Positron

Install Script

If you prefer a one-liner installer that picks the right release artifact for your platform, you can use the installer scripts below. These scripts are fetched directly from this repository and then download the latest matching Fatou release asset for your platform, installing to a user-local directory by default. If you prefer, download and inspect the script before running it.

For macOS and Linux:

curl --proto '=https' --tlsv1.2 -LsSf \
    https://github.com/jolars/fatou/releases/latest/download/fatou-installer.sh | sh

For Windows PowerShell:

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://github.com/jolars/fatou/releases/latest/download/fatou-installer.ps1 | iex"

Usage

# Print the CST (reads stdin if no file)
fatou parse file.jl

# Format to stdout (reads stdin if omitted)
fatou format file.jl

# Verify formatting without writing—exits non-zero if anything would change
fatou format --check src/

# Lint (exits non-zero if there are any findings)
fatou lint src/

# Run the language server over stdio
fatou lsp

Configuration lives in fatou.toml: [format] sets line and indent widths, [lint] selects or ignores rules. Fatou walks up from the file's directory to find one, stopping at the repository root, then falls back to $FATOU_CONFIG and to a global user config at ~/.config/fatou/fatou.toml.

Editor Integration

The language server (fatou lsp) runs over stdio and provides a broad set of features: completion (including the REPL's LaTeX and emoji input sequences, so \alpha inserts α), hover, go-to-definition, find references and document highlights, rename (of symbols, and of files and folders — moving a file rewrites the include paths that name it), document and workspace symbols, call and type hierarchy, signature help, code actions, folding and selection ranges, document links, and semantic tokens, alongside formatting (whole-document and range) and diagnostics (push and pull).

The Fatou extension for VS Code and Open VSX (Marketplace, Open VSX) bundles the binary and starts the server automatically; it also works in Positron. See editors/code for the extension, or the editor setup guide for Neovim and other editors.

Integrations

Run format and lint checks in GitHub Actions with fatou-action, which installs a prebuilt, checksum- and provenance-verified binary:

- uses: jolars/fatou-action@v1

Or as pre-commit hooks with fatou-pre-commit:

repos:
  - repo: https://github.com/jolars/fatou-pre-commit
    # fatou version
    rev: v0.7.0
    hooks:
      - id: fatou-lint
      - id: fatou-format

Library Crates

The parser and formatter are published as standalone, wasm-compatible crates for embedding in other tools:

  • fatou-parser: lossless CST parser, typed AST wrappers, and incremental reparser.
  • fatou-formatter: the formatting engine, with optional serde/schema features.

Documentation

See https://fatou.dev/ for the full documentation.

Contributing

See CONTRIBUTING.md.

License

MIT, see LICENSE.

Download files

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

Source Distribution

fatou-0.13.0.tar.gz (763.8 kB view details)

Uploaded Source

Built Distributions

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

fatou-0.13.0-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3Windows ARM64

fatou-0.13.0-py3-none-win_amd64.whl (3.5 MB view details)

Uploaded Python 3Windows x86-64

fatou-0.13.0-py3-none-musllinux_1_2_x86_64.whl (3.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

fatou-0.13.0-py3-none-musllinux_1_2_aarch64.whl (3.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

fatou-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fatou-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

fatou-0.13.0-py3-none-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fatou-0.13.0-py3-none-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file fatou-0.13.0.tar.gz.

File metadata

  • Download URL: fatou-0.13.0.tar.gz
  • Upload date:
  • Size: 763.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fatou-0.13.0.tar.gz
Algorithm Hash digest
SHA256 bb45b263989b7384a174ceefbd16b01af2e83932eefa9a3d2761608767fe9a97
MD5 0b08adeaa35dc9034dd5f7b048c8a2a8
BLAKE2b-256 a73745784088347f947fa93bf507441f5e0ba4d185000c64d4e49d1f77694423

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0.tar.gz:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: fatou-0.13.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fatou-0.13.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 30a07f7a63a32109785c713ce8f269ed77b291a0a275210626d68cd986dc811a
MD5 c8eaa295a419687662e4bee1db4d9ee5
BLAKE2b-256 3bdfff8a1b16e9c1f7effa7b1166ae76b05ed9394c7ec80b5da2c9661350a5e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-win_arm64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: fatou-0.13.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fatou-0.13.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 10bd89c53411d076285998053fa35b6ab1783568516a987cc08bb1b0fb54e3e7
MD5 3cb516441d3a25f9390c343737fde6fe
BLAKE2b-256 68ea32121c00eaf7b276498e5d6b71d257a5fed1c695021f41fe0532e4e56c94

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-win_amd64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fatou-0.13.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0cfaf0c8c0a7a41dd39a2a670318ebbf36b19d51468b747f7a20226827189896
MD5 4a839a8b00be5bfe76832be3efa16102
BLAKE2b-256 9b25d79ecc9659563eff579ea09246d820b2859ba17556ac1e8d68e716362436

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-musllinux_1_2_x86_64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for fatou-0.13.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e229a4d11929cc64f8be164de45316764b88596ce7d138d53645dc9cde735c00
MD5 c7ff007cc8cd80fb3efef0d964ec6e11
BLAKE2b-256 8d566ff611d47e49108a7a36e98d722242d36a39d84e60a84f8d0f5219e84d59

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-musllinux_1_2_aarch64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fatou-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f8876e2dfec488f39ec1d420d3fd1a45720a081a3e8175c54160cb1460fba1f
MD5 4181df71697cc9ae46166b9ac68f29d4
BLAKE2b-256 1ba5a5b1cccb858239e6b6abdaf6544e66856e37d4e1d33c4d56e354801df369

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fatou-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b5a82533277e6cbce6784f88aab3c4501cda58242d3ccc204f156f6072f94a05
MD5 73e570280608b3205288745c6d2f4a45
BLAKE2b-256 0ced682b4449a3f221ef1fae471fface81c17a202a7006e22d754a4dbf9e6313

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fatou-0.13.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6eda10a65c50a5b20671bb04c3d851099adc5d76eafb5a77134c90ca3e17bff
MD5 2c42b7143358b68afd0c319c3199d7d3
BLAKE2b-256 6e7e9ff810a8a49eba6c343c12dfc62fb4f4f688530de22e39a2578079ac8a15

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

File details

Details for the file fatou-0.13.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fatou-0.13.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a2f0f04ebb73fb21ee93638351f68d0b20d135bf00b0dc3cefc8791e68a7e2d4
MD5 ff6970587bfcf6f393f6fff3635dcb49
BLAKE2b-256 90fafa58dc42082461457717511a1735796f59c2d570010f768b27e24d9a4453

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.13.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on jolars/fatou

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

Supported by

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