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, 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.12.0.tar.gz (733.7 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.12.0-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

fatou-0.12.0-py3-none-musllinux_1_2_aarch64.whl (3.3 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

fatou-0.12.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fatou-0.12.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

fatou-0.12.0-py3-none-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fatou-0.12.0-py3-none-macosx_10_12_x86_64.whl (3.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for fatou-0.12.0.tar.gz
Algorithm Hash digest
SHA256 9555f577a71280f623da34b2abb6b044f712f45b9f4b8098f83852f96348bf34
MD5 ebff822b22c3325c432b7a40c14ea3a9
BLAKE2b-256 a66bbd455d0f7c84d246b2563bdf35f58d582a61b2dfb1632aa12981cc33989b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: fatou-0.12.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.12.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 30ced74d5a6f2233c8574a59fdfa6b0677381c4a0ee01ef0af92edc66769aeef
MD5 0374d36f64359eab376c5750592a48a8
BLAKE2b-256 3020616cdc514be9cc21bc6a2596cc8f60949d3641affe02f26865658da319f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: fatou-0.12.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.12.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a349e6c47cd14095627b65f381cc285d59d9c8803a9baccc5be0bc8ca1f3122e
MD5 388e22149cdb9173fd54d34c809d4145
BLAKE2b-256 eaedc7e6460923227d8f0eb7a6d402c248234e69178e488869a13e5605f1761c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fatou-0.12.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 06d2e3e85475398158cc723cce9b5bd066ea31f308da80318e2896610944502a
MD5 b2eff7243ab1e9c33a2c4b7cac675a43
BLAKE2b-256 43d521fbae90928b6a9c3920ac40fc66b578ba017ad56898a3e11956c7546689

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for fatou-0.12.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c93e619190c9e1176a6cddddb2bd17ef2c76569f42ad1cd6896ed6ef2b5db44f
MD5 930585d61403a4313e1f9ec3d5ef00ce
BLAKE2b-256 58d681b0afe40f7e04da7814a865a763f927f02afe9412dadfd6158c94a97ded

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fatou-0.12.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2f5685c18622ab0da1baf5593765a9a64c4c7c949b495bfe641bd91557b90af
MD5 c9e9960629774af42ca3374be79e6230
BLAKE2b-256 fe4859ef9d8b36a894d1ffbd2132aae43f2f4042ca5dbca58f1c92ada4f24ad7

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fatou-0.12.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c14436bf969d43573fad7bcfb78459edafff5faea27e80907c16337ce5dc093b
MD5 e1463dbc0515203649a23e8d3863fad4
BLAKE2b-256 73e544c4aa8f704b0814849d820012ca5524bbaac617123435cab30ae949f1aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fatou-0.12.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 51a0168f406fd6cd977d5eaada2368454ba575310b9f14107e8462d7b2e4d4b1
MD5 2e4974b690c8919a2f27fdb74cd0c6f9
BLAKE2b-256 175ccb6149579fd8fbd0c4cfce40f74e09cf0ac748879b74e2ca738b51063311

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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.12.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fatou-0.12.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f3ac60a60edffc663a6abe51de34909c00bd5ad3811790c9b5c7a3e7a5f77e96
MD5 ed1787a4f3dc4390d1a3f1d1710b03ba
BLAKE2b-256 d85449e3aa0c4a4a46cce9f1d84627e46e53d4e7d467a43acbbff9e72bce6403

See more details on using hashes here.

Provenance

The following attestation bundles were made for fatou-0.12.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