A language server, formatter, and linter for R
Project description
Arity 
Arity is a language server, formatter, and linter for the R programming language, built in Rust 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 toward the tidyverse style guide, with idempotent output and roxygen support.
- Linter: a growing set of 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.
Runs on Linux, macOS, and Windows (x86_64 and arm64).
Installation
Arity is available from several sources:
- crates.io:
cargo install arity - npm:
npm install -g arity-cli(bundles a prebuilt binary) - PyPI:
uv tool install arity/pipx install arity - Prebuilt binaries: from the releases page
- VS Code/Open VSX: the Arity extension (also works in Positron)
- Arch Linux:
pacman -S arity-bin(orarity) (from the AUR:arity-bin,arity)
From npm
Install with npx or npm:
# One-shot run, no install:
npx arity-cli format file.R
# Persistent install:
npm install -g arity-cli
The package detects your platform at install time and pulls in a prebuilt binary via npm's optional dependencies; no Rust toolchain required.
From crates.io
If you have Rust installed:
cargo install arity
Formatter
To format your code, you can use:
arity format [file]arity format --verify [file]arity format --check <path> [<path> ...]
Linter
To lint your code, you can use:
arity lint <path> [<path> ...]
arity lint reads from stdin when given no paths, and exits non-zero when it
reports any findings.
Configuration
Arity reads an optional arity.toml, 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.
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:
Project details
Release history Release notifications | RSS feed
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 arity-0.11.0.tar.gz.
File metadata
- Download URL: arity-0.11.0.tar.gz
- Upload date:
- Size: 793.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a109b5f44392816d64d7f424fbc7aa30c90484b10c9adf7d968c7e6ce2971337
|
|
| MD5 |
c7d69214da61b408cd7a7b95fc559266
|
|
| BLAKE2b-256 |
448d82e466d50fd7a74b2f37378759a53b0248dbef9a3ef0ae7b6fa34332d266
|
Provenance
The following attestation bundles were made for arity-0.11.0.tar.gz:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0.tar.gz -
Subject digest:
a109b5f44392816d64d7f424fbc7aa30c90484b10c9adf7d968c7e6ce2971337 - Sigstore transparency entry: 2114448508
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-win_arm64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-win_arm64.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7127cc85aaa6a7925a8d191af9ea85c75f0e1b94c307f2ead7572ed040289dd
|
|
| MD5 |
894dbdfa83258a404b0fe6902a1dd5cb
|
|
| BLAKE2b-256 |
3c4aba83ed70990a7831306ce1cedc291fb1f64548d1e17eebad1fe425802788
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-win_arm64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-win_arm64.whl -
Subject digest:
b7127cc85aaa6a7925a8d191af9ea85c75f0e1b94c307f2ead7572ed040289dd - Sigstore transparency entry: 2114449019
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-win_amd64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-win_amd64.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a7a34fd99fb4ce706d7e1b89976c27167717be129f5e01de19d0edef1f30647
|
|
| MD5 |
36726a9aad3319d75a93ecd3df30f4eb
|
|
| BLAKE2b-256 |
ad627f27c23d12ea3f81ad7d343236f221fe9602f0c4110506f9f4587c0f2638
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-win_amd64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-win_amd64.whl -
Subject digest:
3a7a34fd99fb4ce706d7e1b89976c27167717be129f5e01de19d0edef1f30647 - Sigstore transparency entry: 2114448657
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 4.6 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d11e23a12ee0a92e32fcb800f1ae70cd55ee1d4461efdf2b43543c3f9232801b
|
|
| MD5 |
2bc78d00e2f2450920d981e031241c07
|
|
| BLAKE2b-256 |
3cce9aa2abcd65623c7ec2b20b1082c11c01dca5da6f16785b42f170fa481c12
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-musllinux_1_2_x86_64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-musllinux_1_2_x86_64.whl -
Subject digest:
d11e23a12ee0a92e32fcb800f1ae70cd55ee1d4461efdf2b43543c3f9232801b - Sigstore transparency entry: 2114448942
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2877376111802e725e71f66916b3e245fa1ed7df7f7ad65edc9fb4d53d33c959
|
|
| MD5 |
442c427f897ecacc4a716521ae26e6cd
|
|
| BLAKE2b-256 |
5e70098d4db017a2d558672c6e191ecd6852336f8f03ed3ea4d74709f83d0025
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-musllinux_1_2_aarch64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-musllinux_1_2_aarch64.whl -
Subject digest:
2877376111802e725e71f66916b3e245fa1ed7df7f7ad65edc9fb4d53d33c959 - Sigstore transparency entry: 2114448792
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94a97697fbb00da75e6d706851bcdde6ab214658f8b35bf04fcacbcfea73003b
|
|
| MD5 |
8078f5b05fe5fd4c8b624fb923c66738
|
|
| BLAKE2b-256 |
8a11c77e8c14d5fc8f486459ebab76ddc72a6536baff147140dfe1b62c1fe488
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
94a97697fbb00da75e6d706851bcdde6ab214658f8b35bf04fcacbcfea73003b - Sigstore transparency entry: 2114449102
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64092ac0354492c9d42b1bae2c32864f459d51ee46777ee8b08db49bf140342b
|
|
| MD5 |
800777f4bbabd3939b6129f65b6004f0
|
|
| BLAKE2b-256 |
f779b2a7f795e7ef29c38d527e6a2be3158e6519528a5289bb763615d36f1f58
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
64092ac0354492c9d42b1bae2c32864f459d51ee46777ee8b08db49bf140342b - Sigstore transparency entry: 2114448736
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e083dac0a25ae12a0e2a9fa10056f5e98e0e62785a302856e9a0251396303318
|
|
| MD5 |
6c6973c43d1ff1243248fc9f462bf861
|
|
| BLAKE2b-256 |
19ed0913d6e66005aa68c02e19f089f508c84c1e577cd26d66b1654996613927
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-macosx_11_0_arm64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-macosx_11_0_arm64.whl -
Subject digest:
e083dac0a25ae12a0e2a9fa10056f5e98e0e62785a302856e9a0251396303318 - Sigstore transparency entry: 2114448862
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arity-0.11.0-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: arity-0.11.0-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0443eac71677a0678dfba74c5a5721bf4a34ad86deb085ebe8fa0620a4bfbb9
|
|
| MD5 |
c1da68d26b537d00e5165a34e8ca8651
|
|
| BLAKE2b-256 |
a4e67e13b04b05a1e677cbce6cd77d0ab9224e1d9ae513338ace2a9adc44c3d6
|
Provenance
The following attestation bundles were made for arity-0.11.0-py3-none-macosx_10_12_x86_64.whl:
Publisher:
publish-pypi.yml on jolars/arity
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arity-0.11.0-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
c0443eac71677a0678dfba74c5a5721bf4a34ad86deb085ebe8fa0620a4bfbb9 - Sigstore transparency entry: 2114448583
- Sigstore integration time:
-
Permalink:
jolars/arity@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
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@c10444b41710cdbbf498232d4ee0cd86b1d53418 -
Trigger Event:
push
-
Statement type: