Fatou 
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
fatoupackage 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/schemafeatures.
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4db542aff2743a7ee8f4c7533699a53412d3605145cd3ebf78c73fac19f98927
|
|
| MD5 |
aae591ea76277bcbaee42cd08f1946df
|
|
| BLAKE2b-256 |
71ba92c19f10de6f80bacdb065e3ca14e698ba70dc56a8132b7808b411579062
|
Provenance
The following attestation bundles were made for fatou-0.11.0.tar.gz:
Publisher:
publish-pypi.yml on jolars/fatou
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0.tar.gz -
Subject digest:
4db542aff2743a7ee8f4c7533699a53412d3605145cd3ebf78c73fac19f98927 - Sigstore transparency entry: 2366502682
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1d0412a35be3f050a35747599f7a8f0755980bb92ddba6b490fe341107d03e7
|
|
| MD5 |
66f6ba3fddbf895f9dc8fa0496ee43aa
|
|
| BLAKE2b-256 |
8ecabf64e9371caf0f897b922bb8eb8126056de65da370c6de23a58e0b14a01c
|
Provenance
The following attestation bundles were made for fatou-0.11.0-py3-none-win_arm64.whl:
Publisher:
publish-pypi.yml on jolars/fatou
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-win_arm64.whl -
Subject digest:
c1d0412a35be3f050a35747599f7a8f0755980bb92ddba6b490fe341107d03e7 - Sigstore transparency entry: 2366507006
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0978cd3f4d7d9ee1cf5f7f7978ca503eac7bd91826728b08c8e4ddbe594dc253
|
|
| MD5 |
7638204b33f5dd4b26f316ee7cfad803
|
|
| BLAKE2b-256 |
f9afa9d335c9c588fbacfa19f18bd4f6d698a098e5a0198803f031ccdcab9929
|
Provenance
The following attestation bundles were made for fatou-0.11.0-py3-none-win_amd64.whl:
Publisher:
publish-pypi.yml on jolars/fatou
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-win_amd64.whl -
Subject digest:
0978cd3f4d7d9ee1cf5f7f7978ca503eac7bd91826728b08c8e4ddbe594dc253 - Sigstore transparency entry: 2366505001
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
File details
Details for the file fatou-0.11.0-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: fatou-0.11.0-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.6 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ac24a79cee3fac81a3dec0db83c988a43ebc5b0b79f9b33ebc06e31c72bae91
|
|
| MD5 |
c721d4755ba828587313b0ac520cfe70
|
|
| BLAKE2b-256 |
b547a7f4aa9a5efdb7a74708e4c7373056303ae7c3466a200c0941e3e0d9780a
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-musllinux_1_2_x86_64.whl -
Subject digest:
5ac24a79cee3fac81a3dec0db83c988a43ebc5b0b79f9b33ebc06e31c72bae91 - Sigstore transparency entry: 2366507675
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
File details
Details for the file fatou-0.11.0-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: fatou-0.11.0-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.3 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0de21642ed83abf843d16ad6457ecedfa4e41946d09606364710bc4acaecbb18
|
|
| MD5 |
9ad2e8bb8dd75183a5dad3bfd569a8bd
|
|
| BLAKE2b-256 |
bf111e72f7c48e54f3922528d061d627f7226abc4709148f3a472534df0637f2
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-musllinux_1_2_aarch64.whl -
Subject digest:
0de21642ed83abf843d16ad6457ecedfa4e41946d09606364710bc4acaecbb18 - Sigstore transparency entry: 2366503521
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
File details
Details for the file fatou-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: fatou-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4c103334286b0d7de0082f991b30fccd0f3abaa5613f8535f66eb34cd6113ac
|
|
| MD5 |
74d37f5b625398502798904a0f4ea0cc
|
|
| BLAKE2b-256 |
a30ef4d1e57e608998cd7da1e9c86ee47d8eb97eba04dc564e302159eb2a04c9
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
a4c103334286b0d7de0082f991b30fccd0f3abaa5613f8535f66eb34cd6113ac - Sigstore transparency entry: 2366504479
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
File details
Details for the file fatou-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: fatou-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 3.3 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24dc4e43d082ccf3ad64f35481e27f1acfe5e652c719f6fbcdd7549d1e5ef7e8
|
|
| MD5 |
a9d380b95245a5ed553fddc8c39a22b9
|
|
| BLAKE2b-256 |
4662205245f6231de483a87f3c4cabff8d711ea6f80185a31015e0d873cd06ab
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
24dc4e43d082ccf3ad64f35481e27f1acfe5e652c719f6fbcdd7549d1e5ef7e8 - Sigstore transparency entry: 2366503944
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
File details
Details for the file fatou-0.11.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: fatou-0.11.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.3 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f85395a52583f50d3f93b851b8d3bc27dcfc23adbf08d5760fd134ac4263b8db
|
|
| MD5 |
8f473383459672de363280147bdaa241
|
|
| BLAKE2b-256 |
8c8a1b83d7b9a9f62a8fe51c5c2fac03e66e06179d225bde969750c67f86a562
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-macosx_11_0_arm64.whl -
Subject digest:
f85395a52583f50d3f93b851b8d3bc27dcfc23adbf08d5760fd134ac4263b8db - Sigstore transparency entry: 2366505711
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type:
File details
Details for the file fatou-0.11.0-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: fatou-0.11.0-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.4 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0ade1abc03e29e9787b2feaa9e78df51b11a3499a6d7f87e6b40fab0b4bda39
|
|
| MD5 |
93d44d444cbc9f40b8527a4f99607283
|
|
| BLAKE2b-256 |
12593cfad5e77f4c922f418dd225ae20b3b65b1fa0172dcfc1a6287423412bae
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fatou-0.11.0-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
d0ade1abc03e29e9787b2feaa9e78df51b11a3499a6d7f87e6b40fab0b4bda39 - Sigstore transparency entry: 2366506417
- Sigstore integration time:
-
Permalink:
jolars/fatou@e03459351a312ce6d778838b4610364ac8a50f7f -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/jolars
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e03459351a312ce6d778838b4610364ac8a50f7f -
Trigger Event:
push
-
Statement type: