90 Commits
Author SHA1 Message Date
renovate[bot] 5bc8cb3e06 Update dependency unidiff to v1.0.1 (#29565) 2026-10-20 19:48:28 -07:00
Zanie Blueandzaniebot c79af46103 Require hashes for build dependencies (#29336)
Enable `require-build-hashes` for the Python projects and inline scripts
so isolated builds require declared hashes for their build dependencies.
Pin the build backends and their dependencies with hashes.

---------

Co-authored-by: zaniebot <242828183+zaniebot@users.noreply.github.com>
2026-10-15 20:15:23 +01:00
Brent Westbrook d2e733fd3a Temporarily remove sphinx from ecosystem projects (#28997)
Summary
--

While looking at #28887, I noticed a repeated ecosystem check failure
caused by a git error:

> Failed to commit: fatal: failed to encode
'tests/roots/test-root/wrongenc.inc' from iso-8859 to UTF-8

This is caused by a known upstream bug (sphinx-doc/sphinx#14364) with an
open PR (sphinx-doc/sphinx#14467), but the PR is waiting for the next
release milestone, I think, so it seemed easiest just to temporarily
remove the project to unblock CI checks.

Test Plan
--

CI on this PR
2026-09-29 13:32:05 -04:00
Brent Westbrook 947179d7c6 Enable lint.preview and missing default rules in our Ruff config (#28112)
Summary
--

This PR updates our ruff-pre-commit dependency to 0.16.5, which supports
the new category selectors,
and then enables `lint.preview` and the new default categories so that
we can dogfood them on our
code. There were 66 diagnostics initially, which I also fixed or
ignored:

```
28	FURB113 	[ ] repeated-append
12	ASYNC240	[ ] blocking-path-method-in-async-function
 6	RUF105  	[*] noqa-comments
 5	PLW1510 	[ ] subprocess-run-without-check
 3	PLW0108 	[ ] unnecessary-lambda
 2	EXE001  	[ ] shebang-not-executable
 2	RUF039  	[*] unraw-re-pattern
 1	B024    	[ ] abstract-base-class-without-abstract-method
 1	FURB142 	[*] for-loop-set-mutations
 1	PERF102 	[ ] incorrect-dict-iterator
 1	PLC0207 	[*] missing-maxsplit-arg
 1	PLW0127 	[ ] self-assigning-variable
 1	TRY004  	[ ] type-check-without-type-error
 1	PLW0120 	[*] useless-else-on-loop
 1	TRY201  	[ ] verbose-raise
 ```

Of these, I ignored `repeated-append` and `blocking-path-method-in-async-function`. I think they are
still reasonable defaults, just less useful/important in our uses.

0.16.5 also includes https://github.com/astral-sh/ruff-pre-commit/pull/159, so I removed `markdown` from our main `ruff-format` hook, leaving it for the later mdtest formatting stage.

I also had to make a few changes related to config discovery in tests:
- move our cached ecosystem checkouts to `$RUNNER_TEMP` instead of inside of our checkout
- convert some CLI tests to use the `CliTest` helpers
- add `configurationPreference: editorOnly` to some notebook tests

In these cases, our own Ruff settings were being inherited by test code. This likely affects many other tests, but I only updated the obviously failing ones for now. I'm least confident about the notebook tests, but as far as I can tell from the history (https://github.com/astral-sh/ruff/pull/11944, https://github.com/astral-sh/ruff/pull/22810), the specific diagnostics are not the important parts being asserted.

Test Plan
--

CI on this PR
2026-08-28 12:24:36 -04:00
Brent Westbrook aad0e909ef Allow rules without codes (#28049)
Summary
--

This PR allows adding rules that only belong to categories and only have
names rather than requiring
a linter group and code.

The first non-empty commit uses `Rule::name` instead of
`Rule::noqa_code` throughout the linter tests, causing a huge number of
file renames without changes.

The second commit updates `FixTable` from a mapping of `SecondaryCode ->
(name, fix_count)` to
`DiagnosticId -> (Option<SecondaryCode>, fix_count)`. This doesn't
really change its usage but
involves minor diffs to a substantial number of lines. It also allows us
to drop some of the special
`hashbrown` handling and the `hashbrown` dependency in `ruff_linter`,
which is nice.

The third commit contains the bulk of the change, including the macro
changes needed to support
`map_codes` entries like that for the `pytest-fixture-autouse` rule in
the fourth commit:

```rust
() => rules::ruff::rules::PytestFixtureAutouse,
```

These changes are pretty mechanical overall, just handling cases where
the linter or noqa code could
be missing, which fortunately seemed pretty straightforward in every
case.

The fourth commit takes advantage of these changes to reinstate `RUF076`
as our first purely
`pedantic` rule. I'm happy to drop that if it's too controversial or
opens too many questions about
the previously-removed rule and its code, but I thought it was nice to
have a motivating example. We
moved this rule from `preview` to `removed` because it was too pedantic
for the `RUF` category, even
in preview, so it's exactly the kind of rule we can support now with the
categories.

Finally, the fifth commit updates the contributing docs to reflect that
linters and codes are
optional. This may need to be adjusted if we back out the `RUF076`
change.

Test Plan
--

Existing tests, plus a few new ones for `pytest-fixture-autouse`
2026-08-27 11:26:35 -04:00
Alex Waygood 88ffbca35c Use build backends with fewer dependencies for Python tooling (#27886) 2026-08-19 15:21:56 +00:00
zaniebotandzaniebot 6dd1fa88eb Require wheels for Python tooling dependencies (#27861)
Python tooling can currently build third-party source distributions. Set
`no-build` in the maintained Python projects and PEP 723 scripts,
retaining named exceptions for Git-pinned tooling and the local
ecosystem runner. Pin the isolated build dependencies for those
exceptions, including their transitive requirements.

Follows merged astral-sh/ruff#27856, which gives the legacy `ruff-lsp`
suite a dedicated, locked Python 3.12 test environment.

Follow-up to astral-sh/ruff#27843. Replaces astral-sh/ruff#27840, which
closed when the merged docs branch was deleted.

Co-authored-by: zaniebot <242828183+zaniebot@users.noreply.github.com>
2026-08-19 14:31:32 +00:00
renovate[bot] f76455dda8 Update dependency unidiff to v1 (#27491) 2026-08-05 08:06:38 +02:00
Avasam 64a4f10853 Add pywin32 to Ruff ecosystem checks (#27437)
<!--
Thank you for contributing to Ruff/ty! To help us out with reviewing,
please consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title? (Please prefix
with `[ty]` for ty pull
  requests.)
- Does this pull request include references to any relevant issues?
- Does this PR follow our AI policy
(https://github.com/astral-sh/.github/blob/main/AI_POLICY.md)?
-->

## Summary

As a pywin32 maintainer and Ruff user, I'd like to add pywin32 to the
ecosystem checks.

I think that pywin32 would be a good fit given its age, size,
popularity, and importance to the Python on Windows ecosystem. As well
as my efforts in the past 3 years modernizing its Python codebase.

Most of the Ruff issues / requests I opened have come from using it in
setuptools and pywin32.

## Test Plan

N/A ?
2026-08-03 20:17:06 -04:00
Andrej730 f3c869da1b [ruff] reintroduce demisto/content to ruff-ecosystem (#27305)
## Summary

Reintroducing `demisto/content` back to `ruff-ecosystem`, it's a huge
repo with 4.5K py file and 2.5M loc, so may have catch some cases for
ecosystem report. It was previously commented out in
https://github.com/astral-sh/ruff/pull/12129 due to the use of removed
`E999`

Issue with the use of removed rules upstream is resolved, though
apparently `E999` was dropped from selection a while ago and new issue
with the use of removed `UP038` occurred, but it's resolved now too -
https://github.com/demisto/content/pull/45227

Syntax error in still present in
https://github.com/demisto/content/blob/master/Packs/ThreatQ/Integrations/ThreatQ/ThreatQ.py,
so keeping `exclude`. Though apparently it doesn't break
`ruff-ecosystem` anymore, but keeping it safe for now. I've submitted a
fix upstream https://github.com/demisto/content/pull/45275, so `exclude`
can be removed later too.


## Test Plan

Tested running `ruff-ecosystem` locally, no issues found.
2026-07-29 15:42:43 -04:00
Andrej730 03f3c04d1b [ruff] reintroduce sphinx-doc/sphinx to ruff-ecosystem (#27175)
<!--
Thank you for contributing to Ruff/ty! To help us out with reviewing,
please consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title? (Please prefix
with `[ty]` for ty pull
  requests.)
- Does this pull request include references to any relevant issues?
- Does this PR follow our AI policy
(https://github.com/astral-sh/.github/blob/main/AI_POLICY.md)?
-->

## Summary

Previously disabled in https://github.com/astral-sh/ruff/pull/9854

Not sure which preview rule was the blocker exactly, but apparently it's
now stabilized and we can use `sphinx` in `ruff-ecosystem`.


## Test Plan

I ran `ruff-ecosystem` locally with and without `--force-preview` and it
worked without issues.
2026-07-25 09:24:01 -07:00
Andrej730 53958952ac [ruff] Drop ruff-ecosystem override for apache/airflow (#27174)
<!--
Thank you for contributing to Ruff/ty! To help us out with reviewing,
please consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title? (Please prefix
with `[ty]` for ty pull
  requests.)
- Does this pull request include references to any relevant issues?
- Does this PR follow our AI policy
(https://github.com/astral-sh/.github/blob/main/AI_POLICY.md)?
-->

## Summary

This reverts commit dd16d689ab (#23921),
since issue upstream is fixed in
https://github.com/apache/airflow/pull/64920 and workaround is no longer
needed.


https://patch-diff.githubusercontent.com/raw/apache/airflow/pull/64920.diff

```diff
diff --git a/task-sdk/src/airflow/sdk/_shared/AGENTS.md b/task-sdk/src/airflow/sdk/_shared/AGENTS.md
index 8d2c7cf9d3367..57a3a75046e45 120000
--- a/task-sdk/src/airflow/sdk/_shared/AGENTS.md
+++ b/task-sdk/src/airflow/sdk/_shared/AGENTS.md
@@ -1 +1 @@
-../../../../../airflow-core/src/airflow/_shared/AGENTS..md
\ No newline at end of file
+../../../../../airflow-core/src/airflow/_shared/AGENTS.md
\ No newline at end of file
```

So workaround is no longer needed.

## Test Plan

`ruff-ecosystem` runs without issues.
2026-07-25 09:23:51 -07:00
Brent Westbrook 77be1b6e53 Normalize rule selectors in ecosystem checks (#27158)
Summary
--

Now that we allow rule names in selectors in preview, we need to
normalize them back to codes to
allow running on stable. This PR implements this normalization as one of
our config overrides,
using the comparison executable to extract the rule mapping from `ruff
rule`.

Test Plan
--

CI on this PR and then #27154
2026-07-24 14:45:26 +00:00
Brent Westbrook bd75eb1cc4 Update branch for jrnl (#27007)
Summary
--

Ecosystem checks started failing this morning for a missing branch, for
example:


https://github.com/astral-sh/ruff/actions/runs/29745997326/job/88364078381?pr=26770

main now seems to be their default branch:
https://github.com/jrnl-org/jrnl

Test Plan
--

Second commit with a small whitespace change to trigger an ecosystem run
2026-07-20 10:09:22 -04:00
Andrej730 67ffd19e1f ruff-ecosystem: bump bokeh/bokeh branch to branch-3.10 (#26987) 2026-07-19 21:17:58 +01:00
Brent WestbrookandMicha Reiser a907a12075 [ruff] Add rule to replace noqa comments with ruff:ignore (RUF105) (#26423)
Summary
--

This is the first in a series of migration rules to help users move from
`noqa` comments with rule
codes to `ruff:ignore` comments with names. This rule simply replaces
`noqa: codes` with
`ruff:ignore[codes]` (and the file-level variants), deferring the
transformation of codes to names
to a follow-up rule. This rule may be useful on its own without the
codes -> names rule, assuming we
stabilize `ruff:ignore` in the next minor release without stabilizing
human-readable names.

The rule skips any comment consisting entirely of known `external`
selectors, while still emitting diagnostics for totally unknown codes.
We also skip file-level `flake8: noqa` directives assuming they are
intended to be shared with flake8.

I initially wrote a small, standalone implementation in the rule file
itself, but it had to be
combined with the `RUF100` implementation to leave unused `noqa` codes
out of `RUF105` to be cleaned
up by `RUF100` instead, as I note in the mdtest for this case.

Test Plan
--

New mdtests

I also expect a huge number of ecosystem results on this PR, possibly so
many that the check times out.

---------

Co-authored-by: Micha Reiser <micha@reiser.io>
2026-07-09 16:45:20 -04:00
Brent Westbrook b90a0300df Revert severity normalization in ecosystem check (#26112)
## Summary

Follow up to #26050 to clean up the ecosystem check script now that
diagnostics without severity are the baseline again. This reverts both
the temporary normalization code from that PR and the earlier regex
change from https://github.com/astral-sh/ruff/pull/23845.

## Test Plan

CI on this PR
2026-06-18 06:55:39 -07:00
Brent Westbrook 02b49d930c Revert "Display output severity in preview" (#26050)
Summary
--

This reverts #23845 since we're now prioritizing the human-readable
names and category work before getting back to severity.

I had to revert (the revert of) the changes to the ecosystem check
script and then add another normalization pass again to get CI to pass.
I can follow up immediately to revert these changes once this is the
baseline.

Test Plan
--

Existing tests updated following #25937

I said I didn't love diagnostics like this:

```
fib.py:1:8: unused-import: [*] `os` imported but unused
```

with both a human-readable name and a fix indicator on that PR, but I
think it's not actually that
bad, and I haven't thought of a better alternative, so I think it's fine
for now.
2026-06-17 13:35:56 +00:00
Brent Westbrook 3f4aa76139 Revert rule name normalization changes in preview (#26044)
Summary
--

Reverts the name normalization part of #25937 now that human-readable
names are also present in the
baseline for future ecosystem check runs.

Test Plan
--

CI on this PR
2026-06-16 07:52:36 -07:00
Brent Westbrook a9dce57b1e Use human-readable names in CLI output (#25937)
## Summary

This PR updates all of our CLI output formats to use human-readable
names instead of rule codes in preview.

## Test Plan

The first commit adds a new CLI test and then each following commit
updates one output format and the associated snapshots.

The last commit also updates the ecosystem check to normalize rule names
back to codes to avoid a huge diff that causes the check to time out.
Alternatively, we may just want to accept the time out on this PR so
that we can see the un-normalized report in the future.
2026-06-16 07:38:04 -07:00
Brent Westbrook b31a5d35eb Match 5-character rule codes in ecosystem check (#25677)
Summary
--

I noticed while extending the regex to match human-readable names that
it also didn't cover the
ASYNC rules, which have five letters in the rule code. For example,
#24644 revealed no new
diagnostics in the ecosystem, but a local run on my cached ecosystem
repos revealed many
diagnostics. This won't show up as a diff in CI on this PR but should
help with ecosystem checks on
the ASYNC rules in the future.
2026-06-08 05:55:07 -07:00
renovate[bot] ba38778aa5 Update dependency tomli to v2.4.1 (#24432) 2026-04-05 22:05:01 -04:00
Dylan 5f1a12e015 Display output severity in preview (#23845)
This is just the "aesthetic" part of implementing `warning` severities.
Configuration changes are in
https://github.com/astral-sh/ruff/pull/23846

It's expected that the `preview` ecosystem check times out here.
2026-03-13 09:56:56 -05:00
Brent Westbrook dd16d689ab Exclude broken symlink in ecosystem check (#23921)
Summary
--

This should resolve the ecosystem errors in #23919.

Test Plan
--

This PR, first with the exclude commented out, then included.
2026-03-12 18:27:42 -04:00
Brent Westbrook d7efaf45e3 Fail CI on new linter ecosystem panics (#23597)
Summary
--

The huge number of changes in
https://github.com/astral-sh/ruff/pull/22205#issuecomment-3696660639
should have
obviously been a red flag, but I think it would be nice if CI failed
when new
ecosystem panics were introduced. This PR adds a check for diagnostic
lines that
start with `panic: Panicked at crates/`, raises a `ToolError` if any are
found
in the results from the comparison executable, and then ~~also exits
non-zero if
any errors are returned~~ fails the CI run if the corresponding error
message
was printed.

After trying this out in CI, I opted not to change the script's exit
code itself
because that suppressed the ecosystem comment. It feels a little hackier
this way but preserves the behavior I wanted of both failing CI and
still getting
the ecosystem comment to help with debugging.

Test Plan
--

Local testing on the 0.15.3 tag showing that ruff-ecosystem exited
non-zero and
some manual testing in CI, as you can see below.
2026-03-04 11:14:10 -05:00
renovate[bot]andAlex Waygood 7cd738a029 Update prek dependencies (#23661)
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
|
[astral-sh/ruff-pre-commit](https://redirect.github.com/astral-sh/ruff-pre-commit)
| repository | patch | `v0.15.1` → `v0.15.2` | `v0.15.4` (+1) |
| [crate-ci/typos](https://redirect.github.com/crate-ci/typos) |
repository | patch | `v1.43.4` → `v1.43.5` | `v1.44.0` |
|
[python-jsonschema/check-jsonschema](https://redirect.github.com/python-jsonschema/check-jsonschema)
| repository | patch | `0.36.1` → `0.36.2` | `0.37.0` |

Note: The `pre-commit` manager in Renovate is not supported by the
`pre-commit` maintainers or community. Please do not report any problems
there, instead [create a Discussion in the Renovate
repository](https://redirect.github.com/renovatebot/renovate/discussions/new)
if you have any questions.

---

### Release Notes

<details>
<summary>astral-sh/ruff-pre-commit (astral-sh/ruff-pre-commit)</summary>

###
[`v0.15.2`](https://redirect.github.com/astral-sh/ruff-pre-commit/releases/tag/v0.15.2)

[Compare
Source](https://redirect.github.com/astral-sh/ruff-pre-commit/compare/v0.15.1...v0.15.2)

See: <https://github.com/astral-sh/ruff/releases/tag/0.15.2>

</details>

<details>
<summary>crate-ci/typos (crate-ci/typos)</summary>

###
[`v1.43.5`](https://redirect.github.com/crate-ci/typos/blob/HEAD/CHANGELOG.md#014---2019-11-03)

[Compare
Source](https://redirect.github.com/crate-ci/typos/compare/v1.43.4...v1.43.5)

##### Bug Fixes

- Ignore numbers as identifiers
([a00831c8](https://redirect.github.com/crate-ci/typos/commit/a00831c847b7efd81be520ea9b5d02f70555351f))
- Improve the organization of --help
([a48a457c](https://redirect.github.com/crate-ci/typos/commit/a48a457cc3ca817850118e2a2fb8b20fecdd40b8))

##### Features

- Dump files, identifiers, and words
([ce365ae1](https://redirect.github.com/crate-ci/typos/commit/ce365ae12e12fddfb6fc42a7f1e5ea71834d6051),
closes
[#&#8203;41](https://redirect.github.com/crate-ci/typos/issues/41))
- Give control over allowed identifier characters for leading vs rest
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd))

##### Performance

- Use standard identifier rules to avoid doing umber checks
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd))
- Only do hex check if digits are in identifiers
([68cd36d0](https://redirect.github.com/crate-ci/typos/commit/68cd36d0de90226dbc9d31c2ce6d8bf6b69adb5c))

<!-- next-url -->

[Unreleased]:
https://redirect.github.com/crate-ci/typos/compare/v1.43.5...HEAD

[1.43.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.43.4...v1.43.5

[1.43.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.43.3...v1.43.4

[1.43.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.43.2...v1.43.3

[1.43.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.43.1...v1.43.2

[1.43.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.43.0...v1.43.1

[1.43.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.42.3...v1.43.0

[1.42.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.42.2...v1.42.3

[1.42.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.42.1...v1.42.2

[1.42.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.42.0...v1.42.1

[1.42.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.41.0...v1.42.0

[1.41.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.40.1...v1.41.0

[1.40.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.40.0...v1.40.1

[1.40.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.39.2...v1.40.0

[1.39.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.39.1...v1.39.2

[1.39.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.39.0...v1.39.1

[1.39.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.38.1...v1.39.0

[1.38.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.38.0...v1.38.1

[1.38.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.3...v1.38.0

[1.37.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.2...v1.37.3

[1.37.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.1...v1.37.2

[1.37.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.0...v1.37.1

[1.37.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.3...v1.37.0

[1.36.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.2...v1.36.3

[1.36.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.1...v1.36.2

[1.36.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.0...v1.36.1

[1.36.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.8...v1.36.0

[1.35.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.7...v1.35.8

[1.35.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.6...v1.35.7

[1.35.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.5...v1.35.6

[1.35.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.4...v1.35.5

[1.35.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.3...v1.35.4

[1.35.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.2...v1.35.3

[1.35.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.1...v1.35.2

[1.35.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.0...v1.35.1

[1.35.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.34.0...v1.35.0

[1.34.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.1...v1.34.0

[1.33.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.0...v1.33.1

[1.33.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.32.0...v1.33.0

[1.32.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.2...v1.32.0

[1.31.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.1...v1.31.2

[1.31.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.0...v1.31.1

[1.31.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.3...v1.31.0

[1.30.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.2...v1.30.3

[1.30.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.1...v1.30.2

[1.30.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.0...v1.30.1

[1.30.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.10...v1.30.0

[1.29.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.9...v1.29.10

[1.29.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.8...v1.29.9

[1.29.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.7...v1.29.8

[1.29.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.6...v1.29.7

[1.29.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.5...v1.29.6

[1.29.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.4...v1.29.5

[1.29.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.3...v1.29.4

[1.29.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.2...v1.29.3

[1.29.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.1...v1.29.2

[1.29.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.0...v1.29.1

[1.29.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.4...v1.29.0

[1.28.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.3...v1.28.4

[1.28.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.2...v1.28.3

[1.28.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.1...v1.28.2

[1.28.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.0...v1.28.1

[1.28.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.3...v1.28.0

[1.27.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.2...v1.27.3

[1.27.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.1...v1.27.2

[1.27.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.0...v1.27.1

[1.27.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.8...v1.27.0

[1.26.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.7...v1.26.8

[1.26.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.6...v1.26.7

[1.26.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.5...v1.26.6

[1.26.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.4...v1.26.5

[1.26.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.3...v1.26.4

[1.26.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.2...v1.26.3

[1.26.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.1...v1.26.2

[1.26.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.0...v1.26.1

[1.26.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.25.0...v1.26.0

[1.25.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.6...v1.25.0

[1.24.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.5...v1.24.6

[1.24.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.4...v1.24.5

[1.24.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.3...v1.24.4

[1.24.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.2...v1.24.3

[1.24.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.1...v1.24.2

[1.24.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.0...v1.24.1

[1.24.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.7...v1.24.0

[1.23.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.6...v1.23.7

[1.23.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.5...v1.23.6

[1.23.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.4...v1.23.5

[1.23.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.3...v1.23.4

[1.23.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.2...v1.23.3

[1.23.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.1...v1.23.2

[1.23.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.0...v1.23.1

[1.23.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.9...v1.23.0

[1.22.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.8...v1.22.9

[1.22.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.7...v1.22.8

[1.22.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.6...v1.22.7

[1.22.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.5...v1.22.6

[1.22.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.4...v1.22.5

[1.22.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.3...v1.22.4

[1.22.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.2...v1.22.3

[1.22.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.1...v1.22.2

[1.22.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.0...v1.22.1

[1.22.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.21.0...v1.22.0

[1.21.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.10...v1.21.0

[1.20.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.9...v1.20.10

[1.20.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.8...v1.20.9

[1.20.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.7...v1.20.8

[1.20.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.6...v1.20.7

[1.20.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.5...v1.20.6

[1.20.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.4...v1.20.5

[1.20.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.3...v1.20.4

[1.20.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.2...v1.20.3

[1.20.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.1...v1.20.2

[1.20.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.0...v1.20.1

[1.20.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.19.0...v1.20.0

[1.19.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.2...v1.19.0

[1.18.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.1...v1.18.2

[1.18.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.0...v1.18.1

[1.18.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.2...v1.18.0

[1.17.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.1...v1.17.2

[1.17.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.0...v1.17.1

[1.17.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.26...v1.17.0

[1.16.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.25...v1.16.26

[1.16.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.24...v1.16.25

[1.16.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.23...v1.16.24

[1.16.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.22...v1.16.23

[1.16.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.21...v1.16.22

[1.16.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.20...v1.16.21

[1.16.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.19...v1.16.20

[1.16.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.18...v1.16.19

[1.16.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.17...v1.16.18

[1.16.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.16...v1.16.17

[1.16.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.15...v1.16.16

[1.16.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.14...v1.16.15

[1.16.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.13...v1.16.14

[1.16.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.12...v1.16.13

[1.16.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.11...v1.16.12

[1.16.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.10...v1.16.11

[1.16.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.9...v1.16.10

[1.16.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.8...v1.16.9

[1.16.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.7...v1.16.8

[1.16.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.6...v1.16.7

[1.16.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.5...v1.16.6

[1.16.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.4...v1.16.5

[1.16.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.3...v1.16.4

[1.16.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.2...v1.16.3

[1.16.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.1...v1.16.2

[1.16.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.0...v1.16.1

[1.16.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.10...v1.16.0

[1.15.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.9...v1.15.10

[1.15.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.8...v1.15.9

[1.15.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.7...v1.15.8

[1.15.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.6...v1.15.7

[1.15.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.5...v1.15.6

[1.15.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.4...v1.15.5

[1.15.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.3...v1.15.4

[1.15.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.2...v1.15.3

[1.15.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.1...v1.15.2

[1.15.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.0...v1.15.1

[1.15.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.12...v1.15.0

[1.14.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.11...v1.14.12

[1.14.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.10...v1.14.11

[1.14.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.9...v1.14.10

[1.14.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.8...v1.14.9

[1.14.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.7...v1.14.8

[1.14.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.6...v1.14.7

[1.14.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.5...v1.14.6

[1.14.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.4...v1.14.5

[1.14.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.3...v1.14.4

[1.14.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.2...v1.14.3

[1.14.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.1...v1.14.2

[1.14.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.0...v1.14.1

[1.14.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.26...v1.14.0

[1.13.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.25...v1.13.26

[1.13.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.24...v1.13.25

[1.13.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.23...v1.13.24

[1.13.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.22...v1.13.23

[1.13.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.21...v1.13.22

[1.13.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.20...v1.13.21

[1.13.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.19...v1.13.20

[1.13.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.18...v1.13.19

[1.13.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.17...v1.13.18

[1.13.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.16...v1.13.17

[1.13.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.15...v1.13.16

[1.13.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.14...v1.13.15

[1.13.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.13...v1.13.14

[1.13.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.12...v1.13.13

[1.13.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.11...v1.13.12

[1.13.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.10...v1.13.11

[1.13.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.9...v1.13.10

[1.13.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.8...v1.13.9

[1.13.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.7...v1.13.8

[1.13.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.6...v1.13.7

[1.13.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.5...v1.13.6

[1.13.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.4...v1.13.5

[1.13.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.3...v1.13.4

[1.13.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.2...v1.13.3

[1.13.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.1...v1.13.2

[1.13.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.0...v1.13.1

[1.13.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.14...v1.13.0

[1.12.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.13...v1.12.14

[1.12.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.12...v1.12.13

[1.12.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.11...v1.12.12

[1.12.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.10...v1.12.11

[1.12.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.9...v1.12.10

[1.12.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.8...v1.12.9

[1.12.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.7...v1.12.8

[1.12.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.6...v1.12.7

[1.12.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.5...v1.12.6

[1.12.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.4...v1.12.5

[1.12.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.3...v1.12.4

[1.12.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.2...v1.12.3

[1.12.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.1...v1.12.2

[1.12.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.0...v1.12.1

[1.12.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.5...v1.12.0

[1.11.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.4...v1.11.5

[1.11.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.3...v1.11.4

[1.11.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.2...v1.11.3

[1.11.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.1...v1.11.2

[1.11.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.0...v1.11.1

[1.11.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.3...v1.11.0

[1.10.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.2...v1.10.3

[1.10.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.1...v1.10.2

[1.10.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.0...v1.10.1

[1.10.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.9.0...v1.10.0

[1.9.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.1...v1.9.0

[1.8.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.0...v1.8.1

[1.8.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.3...v1.8.0

[1.7.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.2...v1.7.3

[1.7.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.1...v1.7.2

[1.7.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.0...v1.7.1

[1.7.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.6.0...v1.7.0

[1.6.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.5.0...v1.6.0

[1.5.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.1...v1.5.0

[1.4.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.0...v1.4.1

[1.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.9...v1.4.0

[1.3.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.8...v1.3.9

[1.3.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.7...v1.3.8

[1.3.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.6...v1.3.7

[1.3.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.5...v1.3.6

[1.3.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.4...v1.3.5

[1.3.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.3...v1.3.4

[1.3.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.2...v1.3.3

[1.3.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.1...v1.3.2

[1.3.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.0...v1.3.1

[1.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.1...v1.3.0

[1.2.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.0...v1.2.1

[1.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.9...v1.2.0

[1.1.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.8...v1.1.9

[1.1.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.7...v1.1.8

[1.1.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.6...v1.1.7

[1.1.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.5...v1.1.6

[1.1.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.4...v1.1.5

[1.1.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.3...v1.1.4

[1.1.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.2...v1.1.3

[1.1.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.1...v1.1.2

[1.1.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.0...v1.1.1

[1.1.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.11...v1.1.0

[1.0.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.10...v1.0.11

[1.0.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.9...v1.0.10

[1.0.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.8...v1.0.9

[1.0.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.7...v1.0.8

[1.0.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.6...v1.0.7

[1.0.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.5...v1.0.6

[1.0.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.4...v1.0.5

[1.0.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.3...v1.0.4

[1.0.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.2...v1.0.3

[1.0.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.1...v1.0.2

[1.0.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.0...v1.0.1

[1.0.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.4.0...v1.0.0

[0.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.3.0...v0.4.0

[0.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.2.0...v0.3.0

[0.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.1.4...v0.2.0

</details>

<details>
<summary>python-jsonschema/check-jsonschema
(python-jsonschema/check-jsonschema)</summary>

###
[`v0.36.2`](https://redirect.github.com/python-jsonschema/check-jsonschema/blob/HEAD/CHANGELOG.rst#0362)

[Compare
Source](https://redirect.github.com/python-jsonschema/check-jsonschema/compare/0.36.1...0.36.2)

- Update vendored schemas: circle-ci, gitlab-ci, mergify, renovate,
snapcraft,
  woodpecker-ci (2026-02-15)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNDMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2026-03-02 09:04:24 -05:00
Brent Westbrook 45cba9624c Add home-assistant to ecosystem projects (#23132)
Summary
--

I think Micha suggested this before, but I couldn't find the message.
This also
may have helped to catch #23125.

Test Plan
--

CI on this PR. I think this is a pretty large repo, so I want to make
sure it
doesn't cause too much of a slowdown, in addition to the job passing.
However,
it only takes ~4 seconds to check locally compared to ~22 for airflow,
despite
containing more files (16k vs 6.5k) and more lines of code (3 million vs
1.2
million).
2026-02-09 09:06:29 -05:00
renovate[bot] 77da8a68be Update dependency tomli to v2.4.0 (#22708) 2026-01-18 20:53:00 -05:00
Micha Reiser 84a810736d Rebuild ruff binary instead of sharing it across jobs (#21361) 2025-11-10 14:27:07 +01:00
renovate[bot] 3493c9b67a Update dependency tomli to v2.3.0 (#21240)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 03:17:38 +00:00
Dan Parizher 980b4c55b2 [ruff-ecosystem] Fix CLI crash on Python 3.14 (#21092) 2025-10-29 21:37:39 +00:00
Brent Westbrook 78e5fe0a51 Allow hiding the diagnostic severity in ruff_db (#19644)
## Summary

This PR is a spin-off from https://github.com/astral-sh/ruff/pull/19415.
It enables replacing the severity and lint name in a ty-style
diagnostic:

```
error[unused-import]: `os` imported but unused
```

with the noqa code and optional fix availability icon for a Ruff
diagnostic:

```
F401 [*] `os` imported but unused
F821 Undefined name `a`
```

or nothing at all for a Ruff syntax error:

```
SyntaxError: Expected one or more symbol names after import
```

Ruff adds the `SyntaxError` prefix to these messages manually.

Initially (d912458), I just passed a `hide_severity` flag through a
bunch of calls to get it into `annotate-snippets`, but after looking at
it again today, I think reusing the `None` severity/level gave a nicer
result. As I note in a lengthy code comment, I think all of this code
should be temporary and reverted when Ruff gets real severities, so
hopefully it's okay if it feels a little hacky.

I think the main visible downside of this approach is that we can't
style the asterisk in the fix availabilty icon in cyan, as in Ruff's
current output. It's part of the message in this PR and any styling gets
overwritten in `annotate-snippets`.

<img width="400" height="342" alt="image"
src="https://github.com/user-attachments/assets/57542ec9-a81c-4a01-91c7-bd6d7ec99f99"
/>

Hmm, I guess reusing `Level::None` also means the `F401` isn't red
anymore. Maybe my initial approach was better after all. In any case,
the rest of the PR should be basically the same, it just depends how we
want to toggle the severity.

## Test Plan

New `ruff_db` tests. These snapshots should be compared to the two tests
just above them (`hide_severity_output` vs `output` and
`hide_severity_syntax_errors` against `syntax_errors`).
2025-08-05 09:56:18 -04:00
Brent Westbrook 9af8597608 Skip notebook with errors in ecosystem check (#19491)
Summary
--

I've been noticing this failure in the formatter ecosystem check and
decided to
look into it. We fail to parse the
[notebook](https://github.com/openai/openai-cookbook/blob/main/examples/mcp/databricks_mcp_cookbook.ipynb)
because some of the `code` cells
have non-Python code in them. `ruff format` only reports one of these,
corresponding to a shell snippet, but `ruff check` emits some additional
errors
about JS code later in the file too:

```
databricks_mcp_cookbook.ipynb:cell 21:1:11: SyntaxError: Simple statements must be separated by newlines or semicolons
databricks_mcp_cookbook.ipynb:cell 21:1:19: SyntaxError: Simple statements must be separated by newlines or semicolons
databricks_mcp_cookbook.ipynb:cell 21:1:50: SyntaxError: Simple statements must be separated by newlines or semicolons
databricks_mcp_cookbook.ipynb:cell 30:4:7: SyntaxError: Simple statements must be separated by newlines or semicolons
databricks_mcp_cookbook.ipynb:cell 30:4:41: E703 Statement ends with an unnecessary semicolon
databricks_mcp_cookbook.ipynb:cell 30:5:14: SyntaxError: Expected ':', found '{'
databricks_mcp_cookbook.ipynb:cell 30:6:9: SyntaxError: Expected ',', found '{'
databricks_mcp_cookbook.ipynb:cell 30:6:25: SyntaxError: Expected ',', found '='
databricks_mcp_cookbook.ipynb:cell 30:6:46: SyntaxError: Expected ',', found ';'
databricks_mcp_cookbook.ipynb:cell 30:6:47: SyntaxError: Expected '}', found newline
databricks_mcp_cookbook.ipynb:cell 30:7:1: SyntaxError: Unexpected indentation
databricks_mcp_cookbook.ipynb:cell 30:7:13: SyntaxError: Expected ':', found 'break'
databricks_mcp_cookbook.ipynb:cell 30:7:18: E703 Statement ends with an unnecessary semicolon
databricks_mcp_cookbook.ipynb:cell 30:8:28: SyntaxError: Simple statements must be separated by newlines or semicolons
databricks_mcp_cookbook.ipynb:cell 30:8:55: E703 Statement ends with an unnecessary semicolon
databricks_mcp_cookbook.ipynb:cell 30:9:18: SyntaxError: Expected an expression
databricks_mcp_cookbook.ipynb:cell 30:10:11: SyntaxError: Expected ',', found name
databricks_mcp_cookbook.ipynb:cell 30:10:16: SyntaxError: Expected ',', found '='
databricks_mcp_cookbook.ipynb:cell 30:10:22: SyntaxError: Expected ',', found name
databricks_mcp_cookbook.ipynb:cell 30:10:24: SyntaxError: Expected ',', found ';'
databricks_mcp_cookbook.ipynb:cell 30:11:27: SyntaxError: Expected ',', found '='
databricks_mcp_cookbook.ipynb:cell 30:11:34: SyntaxError: Expected ',', found name
databricks_mcp_cookbook.ipynb:cell 30:11:48: SyntaxError: Expected ',', found ';'
databricks_mcp_cookbook.ipynb:cell 30:11:49: SyntaxError: Expected '}', found NonLogicalNewline
databricks_mcp_cookbook.ipynb:cell 30:12:1: SyntaxError: Unexpected indentation
databricks_mcp_cookbook.ipynb:cell 30:12:16: E703 Statement ends with an unnecessary semicolon
databricks_mcp_cookbook.ipynb:cell 30:13:3: SyntaxError: Expected a statement
databricks_mcp_cookbook.ipynb:cell 30:13:4: SyntaxError: Expected a statement
databricks_mcp_cookbook.ipynb:cell 30:13:5: SyntaxError: Expected a statement
databricks_mcp_cookbook.ipynb:cell 30:13:5: E703 Statement ends with an unnecessary semicolon
databricks_mcp_cookbook.ipynb:cell 30:13:6: SyntaxError: Expected a statement
databricks_mcp_cookbook.ipynb:cell 30:14:1: SyntaxError: Expected a statement
databricks_mcp_cookbook.ipynb:cell 30:14:2: SyntaxError: Expected a statement
```

Test Plan
--

This PR
2025-07-22 12:29:38 -04:00
Brent Westbrook 40fd52dde0 Exclude broken symlinks from meson-python ecosystem check (#17993)
Summary
--

This should resolve the formatter ecosystem errors we've been seeing
lately. https://github.com/mesonbuild/meson-python/pull/728 added the
links, which I think are intentionally broken for testing purposes.

Test Plan
--

Ecosystem check on this PR
2025-05-09 16:59:00 -04:00
Brent Westbrook 67602512b6 Recognize SyntaxError: as an error code for ecosystem checks (#16879)
Summary
--

This updates the regex in `ruff-ecosystem` to catch syntax errors in an
effort to prevent bugs like #16874. This should catch `ParseError`s,
`UnsupportedSyntaxError`s, and the upcoming `SemanticSyntaxError`s.

Test Plan
--

I ran the ecosystem check locally comparing v0.11.0 and v0.11.1 and saw
a large number (2757!) of new syntax errors. I also manually tested the
regex on a few lines before that.

If we merge this before #16878, I'd expect to see that number decrease
substantially in that PR too, as another test.
2025-03-20 17:25:40 -04:00
Dhruv Manilawala 613951d848 Ignore notebook with syntax error in ecosystem (#15604)
I'll open a PR in `openai/openai-cookbook` to fix these syntax errors
later but for now let's just ignore the notebook.

<img width="2560" alt="Screenshot 2025-01-20 at 10 17 43 AM"
src="https://github.com/user-attachments/assets/075127e4-956d-43f9-b175-b492600dbdee"
/>
2025-01-20 04:53:22 +00:00
renovate[bot] 070c160fd5 Update dependency tomli_w to v1.2.0 (#15600)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [tomli_w](https://redirect.github.com/hukkin/tomli-w)
([changelog](https://redirect.github.com/hukkin/tomli-w/blob/master/CHANGELOG.md))
| `==1.1.0` -> `==1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/tomli-w/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/tomli-w/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/tomli-w/1.1.0/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tomli-w/1.1.0/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>hukkin/tomli-w (tomli_w)</summary>

###
[`v1.2.0`](https://redirect.github.com/hukkin/tomli-w/blob/HEAD/CHANGELOG.md#120)

[Compare
Source](https://redirect.github.com/hukkin/tomli-w/compare/1.1.0...1.2.0)

-   Added
    -   Always preserve `decimal.Decimal` type in parse round trips
-   Improved
    -   Better `TypeError` message on invalid mapping keys
    -   Unify type representation in error messages
-   Performance
    -   Improve import time by removing `typing` import
    -   Improve import time by removing `string` import
    -   Improve import time by lazy importing `decimal`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 10:18:43 +05:30
Charlie Marsh 5567e7c26b Use uv consistently throughout the documentation (#15302)
## Summary

Closes
https://github.com/astral-sh/ruff/issues/15301#issuecomment-2573350821.
2025-01-07 14:43:25 +00:00
Enric Calabuig bafe8714a8 Don't fix in ecosystem check (#15267) 2025-01-06 10:21:34 +01:00
renovate[bot] 48d33595b9 Update dependency tomli to v2.2.1 (#14718) 2024-12-02 01:22:18 +00:00
InSync e5c7d87461 Add @astropy/astropy to ecosystem checks (#14565) 2024-11-24 12:47:11 +01:00
Micha Reiser e9079e7d95 Remove the deprecated E999 rule code (#14428) 2024-11-20 13:11:51 +01:00
renovate[bot] 80f5cdcf66 Update dependency tomli to v2.1.0 (#14418) 2024-11-18 01:56:05 +00:00
renovate[bot] 28e995023d Update dependency tomli_w to v1.1.0 (#13849)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [tomli_w](https://redirect.github.com/hukkin/tomli-w)
([changelog](https://redirect.github.com/hukkin/tomli-w/blob/master/CHANGELOG.md))
| `==1.0.0` -> `==1.1.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/tomli_w/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/tomli_w/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/tomli_w/1.0.0/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tomli_w/1.0.0/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>hukkin/tomli-w (tomli_w)</summary>

###
[`v1.1.0`](https://redirect.github.com/hukkin/tomli-w/blob/HEAD/CHANGELOG.md#110)

[Compare
Source](https://redirect.github.com/hukkin/tomli-w/compare/1.0.0...1.1.0)

-   Removed
    -   Support for Python 3.7 and 3.8
-   Added
- Accept generic `collections.abc.Mapping`, not just `dict`, as input.
Thank you [Watal M. Iwasaki](https://redirect.github.com/heavywatal) for
the
        [PR](https://redirect.github.com/hukkin/tomli-w/pull/46).
- `indent` keyword argument for customizing indent width of arrays.
Thank you [Wim Jeantine-Glenn](https://redirect.github.com/wimglenn) for
the
        [PR](https://redirect.github.com/hukkin/tomli-w/pull/49).
-   Type annotations
- Type annotate `dump` function's output stream object as
`typing.IO[bytes]` (previously `typing.BinaryIO`)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xMjAuMSIsInVwZGF0ZWRJblZlciI6IjM4LjEyMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-21 09:05:30 +05:30
renovate[bot] 98878c9bf2 Update dependency tomli to v2.0.2 (#13649)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 10:16:43 +01:00
renovate[bot]andAlex Waygood 346dbf45b5 Update pre-commit dependencies (#13289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-09-09 11:11:01 +00:00
Dhruv Manilawala f4bed22b05 Ignore invalid notebook in ecosystem checks (#13211) 2024-09-02 16:22:51 +05:30
Dhruv Manilawala 89c8b49027 Update OpenAI excluded notebooks from ecosystem checks (#12867)
## Summary

Follow-up to #12864, we don't need to exclude these notebooks anymore.

## Test plan

- [x] Make sure that ecosystem checks are green.
2024-08-14 08:03:25 +05:30
ember91andEmil Berg 9296bd4e3f Fix a typo (#12633)
Co-authored-by: Emil Berg <emil.berg@ericsson.com>
2024-08-02 16:39:27 +01:00
Chris Krycho c1bc7f4dee Remove ecosystem_ci flag from Ruff CLI (#12596)
## Summary

@zanieb noticed while we were discussing #12595 that this flag is now
unnecessary, so remove it and the flags which reference it.

## Test Plan

Question for maintainers: is there a test to add *or* remove here? (I’ve
opened this as a draft PR with that in view!)
2024-07-31 11:40:03 -05:00