Skip to main content

Fast YAML linter (Rust) packaged for PyPI

Project description

ryl

ryl - the Rust Yaml Linter is intended to ultimately be a drop in replacement for yamllint. It is usable today, but parity and edge-case behavior are still maturing.

Compatibility note:

  • ryl aims to match yamllint behavior and includes many parity tests.
  • ryl uses the saphyr parser stack, while yamllint uses the PyYAML parser stack.
  • saphyr and PyYAML do not always agree on which files are valid YAML.

Usage

ryl accepts one or more paths: files and/or directories.

Basic:

ryl <PATH_OR_FILE> [PATH_OR_FILE...]

Behavior:

  • Files: parsed as YAML even if the extension is not .yml/.yaml.
  • Directories: recursively lints .yml and .yaml files.
    • Respects .gitignore, global git ignores, and git excludes.
    • Does not follow symlinks.

Exit codes:

  • 0 when all parsed files are valid (or no files found).
  • 1 when any invalid YAML is found.
  • 2 for CLI usage errors (for example, no paths provided).

Examples:

# Single file
ryl myfile.yml

# Multiple inputs (mix files and directories)
ryl config/ another.yml

# Multiple directories
ryl dir1 dir2

# Explicit non-YAML extension (parsed as YAML)
ryl notes.txt

Help and version:

  • ryl -h or ryl --help shows auto-generated help.
  • ryl -V or ryl --version prints the version.

The CLI is built with clap, which auto-generates --help and --version.

Performance benchmarking

This repo includes a standalone benchmark script that compares PyPI ryl and yamllint using synthetic YAML corpora and hyperfine.

Prerequisites:

  • uv
  • hyperfine

Run a quick sample:

uv run scripts/benchmark_perf_vs_yamllint.py --file-counts 25,100 --file-sizes-kib 1,8 --runs 5 --warmup 1

Run a fuller matrix (explicit lists):

uv run scripts/benchmark_perf_vs_yamllint.py --file-counts 25,100,400,1000 --file-sizes-kib 1,8,32,128 --runs 10 --warmup 2

Run a fuller matrix (ranges with increments):

uv run scripts/benchmark_perf_vs_yamllint.py --file-count-start 100 --file-count-end 1000 --file-count-step 100 --file-size-start-kib 4 --file-size-end-kib 64 --file-size-step-kib 4 --runs 10 --warmup 2

The script uses Typer; use --help for all options.

Artifacts are written under manual_outputs/benchmarks/<UTC_TIMESTAMP>/:

  • benchmark.png and benchmark.svg: side-by-side facet plot with shared Y axis.
  • summary.csv: aggregated timing table.
  • meta.json: tool versions and run parameters.
  • hyperfine-json/: raw results from hyperfine.

Example benchmark figure (5x5 matrix, 5 runs per point):

Benchmark: ryl vs yamllint scaling (5x5 matrix, 5 runs per point)

Configuration

  • Flags:
    • -c, --config-file <FILE>: path to a YAML config file.
    • -d, --config-data <YAML>: inline YAML config (highest precedence).
    • --list-files: print files that would be linted after applying ignores and exit.
    • -f, --format, -s, --strict, --no-warnings: reserved for compatibility.
  • Discovery precedence: inline --config-data > --config-file > env YAMLLINT_CONFIG_FILE (global) > nearest project config up the tree (.yamllint, .yamllint.yml, .yamllint.yaml) > user-global ($XDG_CONFIG_HOME/yamllint/config or ~/.config/yamllint/config) > built-in defaults.
  • Per-file behavior: unless a global config is set via --config-data, --config-file, or YAMLLINT_CONFIG_FILE, each file discovers its nearest project config. Ignores apply to directory scans and explicit files (parity).
  • Presets and extends: supports yamllint’s built-in default, relaxed, and empty via extends. Rule maps are deep-merged; scalars/sequences overwrite.

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

ryl-0.3.4.tar.gz (154.1 kB view details)

Uploaded Source

Built Distributions

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

ryl-0.3.4-py3-none-win_arm64.whl (2.5 MB view details)

Uploaded Python 3Windows ARM64

ryl-0.3.4-py3-none-win_amd64.whl (2.7 MB view details)

Uploaded Python 3Windows x86-64

ryl-0.3.4-py3-none-musllinux_1_2_x86_64.whl (3.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ryl-0.3.4-py3-none-musllinux_1_2_aarch64.whl (3.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ryl-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ryl-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

ryl-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

ryl-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

ryl-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

ryl-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ryl-0.3.4-py3-none-macosx_11_0_arm64.whl (3.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file ryl-0.3.4.tar.gz.

File metadata

  • Download URL: ryl-0.3.4.tar.gz
  • Upload date:
  • Size: 154.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ryl-0.3.4.tar.gz
Algorithm Hash digest
SHA256 a8639f3e823ff96f6c21111e57f71a14e6cbe1bc7d918bb2f7db3d6e8eda327f
MD5 e4dfa116715ecfbd64e1c66b2a69d247
BLAKE2b-256 6eb862851be402b707fc3add87e6362ad724816cab0d17a7fb87beb3eaa55551

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4.tar.gz:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-win_arm64.whl.

File metadata

  • Download URL: ryl-0.3.4-py3-none-win_arm64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ryl-0.3.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 f7ddd37e5dfef5eb275b80831c131c70aaa0c3776bd8910d4bb06366fc15d4c0
MD5 8dc3e49002972920f08c60bab12c5e0d
BLAKE2b-256 1cd40789c742d8058ae406e7adcbbf9c1434316aa6a3590d2a11831edf873430

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-win_arm64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: ryl-0.3.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ryl-0.3.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 87680f33dc61c8343d032233053352003ae854e2e5f617059f8d020b54e1dfe6
MD5 d4deeca85f497aa06d74c9cd4537d5e8
BLAKE2b-256 3d19951560e962d2ddd04844093782c2d9482ae1f4e47ef028041e6674877583

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-win_amd64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: ryl-0.3.4-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ryl-0.3.4-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9854d50a6e8a59827d5303ff5efba021ee71d741a5dbff44942d89303ed3a167
MD5 8beda1f5277ee48100a83add96f70adb
BLAKE2b-256 498692cb80abb7ba024dae30ce5b7b5970e38ae68e0195ff397e89b7d199a62b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-musllinux_1_2_x86_64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: ryl-0.3.4-py3-none-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ryl-0.3.4-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b44db50286dfbacf57315a5eadca54e41d6bb089d02550f1c4cdb04ac3a0c702
MD5 1dd16d56aa9c01ce1520fa5fd2d92cad
BLAKE2b-256 ea43b5dfc545fddda76ac6fcb7960fd8708258af4ef93716d83d85a13b11e157

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-musllinux_1_2_aarch64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ryl-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ffd341d84c6d776380b69c760c494c0879890061f8d0ce63ffa98427c957062
MD5 6521f962f66bc64157a11ddd01aa1258
BLAKE2b-256 4cf26bd3e0b222a78ccd5ecb4e6f16bf32bdfd042fbc686cbb9eb7a597bb1ff9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for ryl-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3dc4072fbaeef0fe6e1e8f1eac8536231ebdb7498102453302d224f09d35b175
MD5 e5e440e23fab2750dfb1d3e1e119df4c
BLAKE2b-256 d2ba35923c9fb3d0a69717d3d7bf2fdc2856a1c3d48363b9263f6d2bcfcf623e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for ryl-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 db5848a7212016e0536a5eb9fe5999c27ed90e24f6cc64936424281530dadbf5
MD5 5b2b37e38d544c1d43b5ae14cfaa2608
BLAKE2b-256 3c39a269099702be8155104eb0e105ef596a876a724bff28012be01a190cbd11

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ryl-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 538d3c57aec0750ced71e0981414822a718150d14e62e6ee7847337461451057
MD5 75f8211fa0c10117d0fd86b76665a249
BLAKE2b-256 d08f8725382b7176590d9c4591ab36ba0d9e96c4943bf7b63047438a8da071e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ryl-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 db2e048d5df786484bd7552409c8345726ec0b588fe28c51834ca38ce387cd5e
MD5 71ecffc5b98f9fd402bfb819f4f545ed
BLAKE2b-256 c6c902e2988b51eb8de2a18a44e0c910960f23e4a6f196f02613101536bf7a56

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ryl-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6c1ab7681e8c4bf8107497c7ededcd628aa3af9ce98e4bf437fefdcf847abe1f
MD5 0467df3c38aaab2e4154e245b55eac68
BLAKE2b-256 589201f7a187426a91e052bc4867cf048d802474052552edff9c1b03004e82bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ryl-0.3.4-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: ryl-0.3.4-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ryl-0.3.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a5ec5a7bf43c5d6972c237e8f702641b16787d0321aa35eb718fa1a65b4744e8
MD5 52fb043919a1c835a9227f40794e8d2c
BLAKE2b-256 51aa88c03754cc82a748a27dffc2eb6a99eb71e6fc7f1d303fc029cebdb52967

See more details on using hashes here.

Provenance

The following attestation bundles were made for ryl-0.3.4-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on owenlamont/ryl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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