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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

fatou-0.11.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.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

fatou-0.11.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.11.0.tar.gz.

File metadata

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

File hashes

Hashes for fatou-0.11.0.tar.gz
Algorithm Hash digest
SHA256 4db542aff2743a7ee8f4c7533699a53412d3605145cd3ebf78c73fac19f98927
MD5 aae591ea76277bcbaee42cd08f1946df
BLAKE2b-256 71ba92c19f10de6f80bacdb065e3ca14e698ba70dc56a8132b7808b411579062

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: fatou-0.11.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.11.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 c1d0412a35be3f050a35747599f7a8f0755980bb92ddba6b490fe341107d03e7
MD5 66f6ba3fddbf895f9dc8fa0496ee43aa
BLAKE2b-256 8ecabf64e9371caf0f897b922bb8eb8126056de65da370c6de23a58e0b14a01c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: fatou-0.11.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.11.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0978cd3f4d7d9ee1cf5f7f7978ca503eac7bd91826728b08c8e4ddbe594dc253
MD5 7638204b33f5dd4b26f316ee7cfad803
BLAKE2b-256 f9afa9d335c9c588fbacfa19f18bd4f6d698a098e5a0198803f031ccdcab9929

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5ac24a79cee3fac81a3dec0db83c988a43ebc5b0b79f9b33ebc06e31c72bae91
MD5 c721d4755ba828587313b0ac520cfe70
BLAKE2b-256 b547a7f4aa9a5efdb7a74708e4c7373056303ae7c3466a200c0941e3e0d9780a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0de21642ed83abf843d16ad6457ecedfa4e41946d09606364710bc4acaecbb18
MD5 9ad2e8bb8dd75183a5dad3bfd569a8bd
BLAKE2b-256 bf111e72f7c48e54f3922528d061d627f7226abc4709148f3a472534df0637f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4c103334286b0d7de0082f991b30fccd0f3abaa5613f8535f66eb34cd6113ac
MD5 74d37f5b625398502798904a0f4ea0cc
BLAKE2b-256 a30ef4d1e57e608998cd7da1e9c86ee47d8eb97eba04dc564e302159eb2a04c9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 24dc4e43d082ccf3ad64f35481e27f1acfe5e652c719f6fbcdd7549d1e5ef7e8
MD5 a9d380b95245a5ed553fddc8c39a22b9
BLAKE2b-256 4662205245f6231de483a87f3c4cabff8d711ea6f80185a31015e0d873cd06ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f85395a52583f50d3f93b851b8d3bc27dcfc23adbf08d5760fd134ac4263b8db
MD5 8f473383459672de363280147bdaa241
BLAKE2b-256 8c8a1b83d7b9a9f62a8fe51c5c2fac03e66e06179d225bde969750c67f86a562

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d0ade1abc03e29e9787b2feaa9e78df51b11a3499a6d7f87e6b40fab0b4bda39
MD5 93d44d444cbc9f40b8527a4f99607283
BLAKE2b-256 12593cfad5e77f4c922f418dd225ae20b3b65b1fa0172dcfc1a6287423412bae

See more details on using hashes here.

Provenance

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