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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

fatou-0.11.1-py3-none-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fatou-0.11.1-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.11.1.tar.gz.

File metadata

  • Download URL: fatou-0.11.1.tar.gz
  • Upload date:
  • Size: 701.2 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.1.tar.gz
Algorithm Hash digest
SHA256 60eaba2ef5f87b3ed4df22f8ae93914e319672861c03e260fd1d3f97294fa163
MD5 c740bb59c6008c794664756a2d546a91
BLAKE2b-256 70ca362bfca03dda1ba77355d5e011b1d1e0b8031eb9b070d34918923b64f619

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: fatou-0.11.1-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.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6753fd0da341bbfbdf5285856224729eec283b873a2e009d2ea58d3c2a1fb270
MD5 410efba1671782fc21c01375ef5b8a8d
BLAKE2b-256 7e8b9a0ee58f9653bdb3a1018351b6d5f8994c54a73b64f7359f20c9b02ba0c1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: fatou-0.11.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ab2446d6d78dba7149272344f775572dc54dab68bc455dd62400450f64690a5f
MD5 c8a09bd53ae583b7aff4895213606109
BLAKE2b-256 26895cc1014f8e4e1898a15d767bcac94cf2979d965231f64fa15ee0b6867e21

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 27790447ece0a14aba0d1a630bcf897dfe4171e1c282a129faebfeac30629c46
MD5 c6f2dcf4335cb15a53d08a76562ae1ca
BLAKE2b-256 bc20d83fd820b260a21f8ff9bd6d92bac702eb9ce8e536de41b88a024301ac01

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.1-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 25ca79abfc4edf4fbf289fa4f0100e22c5ccd3f55676eee9cc3cdddcb27278fc
MD5 ce09bd75362fcedcb53cf869a25ecd1c
BLAKE2b-256 4a56ca0f304b4c793d9d93815565b58a94fd1587114df2aadd3cbc2f29d81c24

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd696dd4d571754b04c3c5f57f62f2546a59124200a54a1e981a40fddcbda296
MD5 adcb88394cafd1d59c47d1c1e81c0ec6
BLAKE2b-256 a2ed300e7efa240b6224630c440ff57dd90721fd40878161c35fe553895b7ac2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f3641547f5653b67b8af2b6287f7e1708c2f5a04472d973d1d17fb389f437af0
MD5 56638403e10f439ef027f4e38063bc73
BLAKE2b-256 794cfc1d5633b4ccd61b2a4dab7ba7e4b578bff443eacf490a9708bd2b50bab6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0929d3953de79dd7aba51cacd2de8d124fe403685e8fc5ccd575edd475f39406
MD5 27db530bae6109d17f9ccdd700837bd2
BLAKE2b-256 8716cad73388319ec4ef3c7fec9e5c91394370b290cf75af15d3520ac18018b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fatou-0.11.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 944a198a172189795b93b914130ada112921518daae57627ce0de10607f5e0fe
MD5 0d5896eca8766c4ee5abd10e90590fc6
BLAKE2b-256 f0fd1d2e3bd16750e718d137910ccb117d9491bfc62c15359fcbf1b06623ceb3

See more details on using hashes here.

Provenance

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