Skip to main content

Maximally-strict ruff + pyright + ESLint configs for sarj-ai Python/TypeScript projects.

Project description

sarj-lint-configs

Ships the maximally-strict ruff / pyright / ESLint configs from sarj-ai/standards as a pip-installable package.

uv add --dev sarj-lint-configs
uv run sarj-lint-configs sync --only ruff      # writes .ruff-strict.toml
uv run sarj-lint-configs sync --only pyright   # writes .pyright-strict.json
uv run sarj-lint-configs sync --only eslint    # writes eslint.strict.mjs

Then reference the synced file:

# pyproject.toml
[tool.ruff]
extend = ".ruff-strict.toml"
// pyrightconfig.json
{ "extends": ".pyright-strict.json" }
// eslint.config.mjs
import strict from "./eslint.strict.mjs";
export default [...strict];

Re-run sync with --force after upgrading. Programmatic access via from sarj_lint_configs import RUFF_STRICT, PYRIGHT_STRICT, ESLINT_STRICT (returns pathlib.Path into the wheel).

0.8.0 — PLC2701 moved out of ruff

PLC2701 import-private-name is now in the ignore list. It cannot tell a private name of ours from a private name of a dependency's: its exemption is "same top-level package", so from livekit.agents.inference_runner import _InferenceRunner — an API livekit made private in 1.6.6, with no public replacement — is flagged identically to a first-party helper someone forgot to export. Ruff has no configuration surface that separates them.

The check is replaced by SARJ048 in sarj-python-lint ≥ 0.19.0, which resolves the imported module against your project tree and fires only on first-party modules:

- repo: https://github.com/sarj-ai/standards
  rev: python-v0.19.0
  hooks:
    - id: sarj-no-first-party-private-import

If you are not running the sarj-python-lint hooks, re-enable PLC2701 in your own [tool.ruff.lint] extend-select — an over-firing check beats no check.

Attribute access (session._stt) is unchanged: ruff's SLF001 and pyright's reportPrivateUsage both still fire, and neither can make the first/third-party distinction. Both configs carry the rationale and the escape hatches inline.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sarj_lint_configs-0.8.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sarj_lint_configs-0.8.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file sarj_lint_configs-0.8.0.tar.gz.

File metadata

  • Download URL: sarj_lint_configs-0.8.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sarj_lint_configs-0.8.0.tar.gz
Algorithm Hash digest
SHA256 9bf4f8b9382399f0e08df9e293da3c2af572fd154c677136bfb5468e629a6606
MD5 7f93602eb6220a8e3f6622485f24d3b2
BLAKE2b-256 c4204ac67a356868d3cb29fcb3decd11ed2eaff4067e1f68b38b4e7e8d1417ca

See more details on using hashes here.

File details

Details for the file sarj_lint_configs-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: sarj_lint_configs-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sarj_lint_configs-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efdd68d79b254f807f05c27fe0fde8d60a75a166200c380bec5887b7416f6012
MD5 6b9485c8a3d526e6c6fea3c36cb140e5
BLAKE2b-256 370518709a976f6b90295916c76ea1e20012e66acb1cb4674987534e522f33d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page