alef 0.49.0

Opinionated polyglot binding generator for Rust libraries
Documentation
# Shared poly base for alef-generated polyglot binding repos.
#
# Consumers inherit this via `extends` (see poly ADR 0020). It holds only the
# blocks that are byte-identical across every adopter, so a consumer's effective
# config is unchanged by adopting it — the consumer keeps everything repo-specific
# (discovery, builtin excludes, per-file-ignores, uncomment, typos, markdown) local.
#
# Adopters: crawlberg, html-to-markdown, liter-llm, tree-sitter-language-pack, xberg.
# Deep-merge is table-wise; arrays REPLACE — so only fully-identical blocks live here.

[lint.python.ruff]
select = [
  "F",
  "E",
  "W",
  "I",
  "N",
  "D",
  "UP",
  "ANN",
  "ASYNC",
  "S",
  "B",
  "A",
  "C4",
  "DTZ",
  "T10",
  "T20",
  "ISC",
  "ICN",
  "PIE",
  "PT",
  "Q",
  "RSE",
  "RET",
  "SIM",
  "TID",
  "TC",
  "ARG",
  "PTH",
  "PGH",
  "PL",
  "PERF",
  "FURB",
  "RUF",
]
ignore = [
  "ANN401",
  "ASYNC109",
  "ASYNC110",
  "D100",
  "D104",
  "D107",
  "D205",
  "E501",
  "ISC001",
  "PGH003",
  "PLR2004",
  "PLW0603",
  "S104",
  "S110",
  "S603",
]
mccabe_max_complexity = 15
pydocstyle_convention = "google"
pylint_max_args = 10
pylint_max_branches = 15
pylint_max_returns = 10

[lint.php.mago]
select = ["correctness", "security"]
ignore = ["strict-assertions", "use-specific-assertions", "no-redundant-variable", "sensitive-parameter"]
php_version = "8.2"

[tools.clang-format]
enabled = true

[hooks.pre-commit.commands.pyrefly]
run = "pyrefly check packages/python"
workspace = true
files = "packages/python/**/*.py"

[hooks.pre-commit.commands.rubocop]
run = "bundle exec rubocop"
root = "packages/ruby"
workspace = true
files = "packages/ruby/**/*.rb"

[hooks.pre-commit.commands.steep]
run = "bundle exec steep check"
root = "packages/ruby"
workspace = true
files = "packages/ruby/**/*.rb"

[hooks.pre-commit.commands.golangci-lint]
run = "golangci-lint run ./..."
root = "packages/go"
workspace = true
files = "packages/go/**/*.go"

[hooks.pre-commit.commands.checkstyle]
run = "mvn -q checkstyle:check"
root = "packages/java"
workspace = true
files = "packages/java/**/*.java"

[hooks.pre-commit.commands.dart-analyze]
run = "dart analyze"
root = "packages/dart"
workspace = true
files = "packages/dart/**/*.dart"

[hooks.pre-commit.commands.credo]
run = "mix credo --strict"
root = "packages/elixir"
workspace = true
files = "packages/elixir/**/*.{ex,exs}"