Skip to main content

Arity

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

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:

  • CRAN: install.packages("arity") in R (formatter bindings; see R package usage)
  • 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
  • mise/Aqua: see the installation guide
  • Prebuilt binaries: from the releases page
  • VS Code/Open VSX: the Arity extension (also works in Positron)
  • Arch Linux: paru -S arity-bin (or another AUR helper; packages: 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.

In RStudio, the development R package provides a Format with arity addin for selections and unsaved documents. The CRAN package supports formatting saved files from the console. See RStudio setup for installation and configuration.

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
    rev: v0.25.0
    hooks:
      - id: arity-lint
      - id: arity-format

See the integration guide for file coverage, optional fixes, and updates.

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:

Citation

If you use Arity in your research, please cite the release you used. Select that release in the Zenodo archive and export its citation. To cite Arity generally, use the concept DOI 10.5281/zenodo.20662733.

Machine-readable metadata is available in CITATION.cff.

Metadata

Release files for arity 0.29.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.29.0
File Size Uploaded Provenance Actions
arity-0.29.0.tar.gz 1.4 MB With provenance Details for arity-0.29.0.tar.gz

Built distributions (wheels)

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

Total release size: 43.4 MB

Release files / arity-0.29.0.tar.gz

Download URL arity-0.29.0.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
085063d341d0f48b2618f049897cffb4cde4c05952e3f073d4aa3fd681f255aa
BLAKE2b-256 checksum
How to use checksums
3d8691b08e9adc4784aa2df9dc33d8bb96c3d9d611c845cc325f98ff15219885
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

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

Download URL arity-0.29.0-py3-none-win_arm64.whl
Size 5.1 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
287cce83fcf813540655b6a8270e2ed78fc20468528289566f7262edfeb66f38
BLAKE2b-256 checksum
How to use checksums
6ed8cfac6f5357fb60e5e665bf6994aebedc4a8271d7b23e3fcd434b4550ef45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

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

Download URL arity-0.29.0-py3-none-win_amd64.whl
Size 5.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
d82c789371faeec7f59f21b233ee7d3438da09dd5e691894159cea2125bdc18d
BLAKE2b-256 checksum
How to use checksums
e03d6c53d185362c47989891e154450362fb4336f1a04daa21ea200950d71055
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

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

Download URL arity-0.29.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
d7f7ae6a5e3853c5dd1022b0a8533531b972c9e3e062f35972b968813e0b5071
BLAKE2b-256 checksum
How to use checksums
3746cb30714568cc7919c7c04df5097cb3afcf7aae2dea733651e6b3082d3d56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

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

Download URL arity-0.29.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
31e4899acce61de8c7e5955efb59b1df89da5c449fa4a237436853579166c56c
BLAKE2b-256 checksum
How to use checksums
912fa38fec0d6d4b5aa73a552c9d9d42db2c04676973042f5f8ac61eba40f421
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

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

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

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 Oct 30, 2026.

Transparency log

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

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

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 Oct 30, 2026.

Transparency log

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

Download URL arity-0.29.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
24dd00b8e38532991607e6ea61bf4d657e71d3262b3a8539613c538cb6d10ea0
BLAKE2b-256 checksum
How to use checksums
aa9cf802ce1f05f43398903c487f418b10bcfa32d4f7da6f02ecad8a50f757ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

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

Download URL arity-0.29.0-py3-none-macosx_10_12_x86_64.whl
Size 5.3 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e2d09705c62af13aacbe247cae874036f264953fde621858f032fc06dfccea1b
BLAKE2b-256 checksum
How to use checksums
77358477d4c9775ebd09880d99f8433bf10b26ff5e9aae0d81ba1480ed81536b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 30, 2026.

Transparency log

Security for arity 0.29.0

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.

Full provenance

All 9 files in this release have been uploaded with provenance metadata.

Select from 9 files

Attestation for arity-0.29.0.tar.gz

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 Oct 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.29.0 This release

9 release files Full provenance

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