Skip to main content

Arity

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

Arity is a language server, formatter, and linter for the R programming language, built on a lossless, incremental parser. It provides a fast, deterministic development experience that integrates with popular code editors and IDEs.

  • Formatter: deterministic, rule-based formatting based on the tidyverse style guide, with idempotent output and support for roxygen and DESCRIPTION (.dcf) files.
  • Linter: project-aware linting, with correctness, readability, and performance rules, many with safe autofixes.
  • Language server: formatting, diagnostics with quick fixes, hover, completion, signature help, go-to-definition and references, rename, document and workspace symbols, semantic tokens, folding, and call hierarchy.

Installation

Arity is available from several sources:

  • crates.io: cargo install arity
  • Homebrew: brew install jolars/tap/arity
  • npm: npm install -g arity-cli (bundles a prebuilt binary)
  • PyPI: uv tool install arity/pipx install arity
  • Aqua: aqua install jolars/arity
  • Prebuilt binaries: from the releases page
  • VS Code/Open VSX: the Arity extension (also works in Positron)
  • Arch Linux: pacman -S arity-bin (or arity) (from the AUR: arity-bin, arity)
  • NixOS: the arity package is available in nixpkgs

Install Script

The installer scripts pick the right release artifact for your platform and install to a user-local directory by default. They download the matching Arity CLI release asset and verify its checksum. If you prefer, download and inspect the script before running it.

For macOS and Linux:

curl --proto '=https' --tlsv1.2 -sSf https://arity.cc/install | sh

For Windows PowerShell:

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://arity.cc/install.ps1 | iex"

Set ARITY_INSTALL_DIR to change the destination, ARITY_TAG to pin a version, ARITY_LIBC (gnu or musl) to override the detected libc on Linux, and ARITY_VERIFY_CHECKSUM=false to skip checksum verification.

Usage

# Format in place
arity format file.R

# Verify formatting without writing
arity format --check src/

# Lint a project directory
arity lint src/

# Fix lint findings in place
arity lint --fix file.R

arity lint reads from stdin when given - (or when piped with no paths), and exits non-zero when it reports any findings.

Configuration

Configure Arity with arity.toml, which is discovered by walking up from each file's directory to the repository root. Run arity init to scaffold a commented starter file. See the configuration reference for every key.

Editor Integration

arity lsp starts a stdio-based language server offering formatting, diagnostics with quick fixes, hover, completion, signature help, go-to-definition and references, rename, document and workspace symbols, semantic tokens, folding, and call hierarchy.

The Arity extension for VS Code/Open VSX (and Positron) bundles the binary and starts the server automatically. For Neovim, Helix, and other editors, see the editor setup guide.

Pre-Commit Hook

arity-pre-commit provides pre-commit hooks for linting and formatting. It installs a prebuilt binary wheel from PyPI, so no Rust toolchain or R installation is required:

repos:
  - repo: https://github.com/jolars/arity-pre-commit
    # arity version
    rev: v0.18.0
    hooks:
      # Lint .R files
      - id: arity-lint
      # Format the same files in place
      - id: arity-format

GitHub Actions

arity-action installs Arity and runs format and lint checks in CI:

jobs:
  arity:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: jolars/arity-action@v1

Crates

The parsing and formatting engines are published as standalone crates for use in other tools: arity-parser (lossless CST parser, typed AST wrappers, incremental reparser) and arity-formatter (the formatter, with optional serde/schemars support for embedders). Both are versioned independently of the CLI.

Acknowledgements

The core architecture of Arity is entirely based on rust-analyzer, using salsa for incremental computation and rowan for lossless syntax trees. Arity also owes a great debt to air, on which it is heavily inspired and from which it has borrowed tests, rules, and formatting style. It is also inspired by jarl and has borrowed rules from it as well as some of its architecture.

Documentation

Full documentation lives at arity.cc:

Release files for arity 0.21.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arity 0.21.0
File Size Uploaded
arity-0.21.0.tar.gz 1.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for arity 0.21.0
File
arity-0.21.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
arity-0.21.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
arity-0.21.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
arity-0.21.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
arity-0.21.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
arity-0.21.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
arity-0.21.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
arity-0.21.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size:42.9 MB

Release files / arity-0.21.0.tar.gz

Download URL arity-0.21.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
b88356525621c3cd2f93993fc8c604c5a785c124954b06415ec063014ebbe8de
BLAKE2b-256 checksum
How to use checksums
d0f244b9878f18dab62756081eb5581c9dd006b03e0f27ecd054ceed1c124182
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-win_arm64.whl

Download URL arity-0.21.0-py3-none-win_arm64.whl
Size 5.0 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
2d38ccd5d5a771798acbf041901a50cbe07421fc48c5677e6b574e622fd68154
BLAKE2b-256 checksum
How to use checksums
6a1d096f7d6a6d910d57d116c5b8b6741922354ef46efb80738b80987159f7c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-win_amd64.whl

Download URL arity-0.21.0-py3-none-win_amd64.whl
Size 5.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
20befb706eb1024b1b0c95112eb6bf32c518f4028ac18d21deff04b7a97e8427
BLAKE2b-256 checksum
How to use checksums
9bde9a2d27474e2ec0d3d0c4897cf784f9f8600e9a5ae100e4b89e9c9a5368c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-musllinux_1_2_x86_64.whl

Download URL arity-0.21.0-py3-none-musllinux_1_2_x86_64.whl
Size 5.5 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
f20a8bdc7444432d4d97cae91dede05b184cb2f073c4bce06f742aceaec0c9d6
BLAKE2b-256 checksum
How to use checksums
6e6b42fe7fa57528691c9ec95909f83e58314328f4f46fd761d61e73b739bcfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-musllinux_1_2_aarch64.whl

Download URL arity-0.21.0-py3-none-musllinux_1_2_aarch64.whl
Size 5.1 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
96f2df5b2a062fbd6d5b205094e5c850648c9e504dd11db119a1135dcb09f817
BLAKE2b-256 checksum
How to use checksums
0ff89b9da7bc4efe808b17f3854027562e059b3888c996844ff0b903941c7dd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL arity-0.21.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e42bfc72c2ed020c8af5abd8b820eb6ff9cf98cc5e75ae5373ffbe5e7ec07b78
BLAKE2b-256 checksum
How to use checksums
e29a33d2bf817a0b7b1e83c85d0f3fea26c6155612ef06018e1e7f45d9100f4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL arity-0.21.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
ccc40fcffcfedc5ca992df2d806b03986232d1edfe527e6cc26ca6705f54ac4a
BLAKE2b-256 checksum
How to use checksums
2c265e359c1795d6c28270c8a2cc1cccdd07f974abf062b93f4658b340a954ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-macosx_11_0_arm64.whl

Download URL arity-0.21.0-py3-none-macosx_11_0_arm64.whl
Size 5.0 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d832ed3e74fde7f6f50e0d7f57500b9253d58c669368084c6d72ea2b9b1c85b9
BLAKE2b-256 checksum
How to use checksums
3ab085ef352c7bab59f4756beb833c8b66e72405b444191c52dac039ac6b88b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / arity-0.21.0-py3-none-macosx_10_12_x86_64.whl

Download URL arity-0.21.0-py3-none-macosx_10_12_x86_64.whl
Size 5.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6ae13aad076348af2a2bcb6e0a8b94ddb328c634f020aad4e997e9a4c93ddcfc
BLAKE2b-256 checksum
How to use checksums
cc8f78b9b0c090915ac675b4052fdd94f55b541dae0ea9559b6ec55c0e92eee1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release history Release notifications | RSS feed

0.22.0

9 release files

This release

0.21.0 This release

9 release files

0.20.0

9 release files

0.19.1

9 release files

0.19.0

9 release files

0.18.0

9 release files

0.14.0

9 release files

0.13.0

9 release files

0.12.0

9 release files

0.9.0

9 release files

0.8.0

9 release files

0.7.0

9 release files

0.6.0

9 release files

0.5.0

9 release files

0.4.0

9 release files

0.3.0

9 release files

0.2.0

9 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page