-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ruff rule --all
subcommand (with JSON output)
#5059
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
PR Check ResultsEcosystem✅ ecosystem check detected no changes. BenchmarkLinux
Windows
|
ruff rules-json
subcommandruff rules
subcommand (with JSON output)
Sorry for the ping, but... ping, @charliermarsh? 😅 |
Thank you for the ping and sorry @akx. What do you think about adding an |
@charliermarsh Sure, that sounds good to me too, I'll rework this :) |
ruff rules
subcommand (with JSON output)ruff rule --all
subcommand (with JSON output)
|
||
/// Explain a `Rule` to the user. | ||
pub(crate) fn rule(rule: Rule, format: HelpFormat) -> Result<()> { | ||
let mut stdout = BufWriter::new(io::stdout().lock()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dhruvmanila is it OK if we use stdout
here or should this command also support forwarding to a file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's fine to use stdout
here. We can always add it in the future if there's a use case.
if rule.is_nursery() { | ||
output.push_str(&format!( | ||
r#"This rule is part of the **nursery**, a collection of newer lints that are | ||
still under development. As such, it must be enabled by explicitly selecting |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the JSON
and human readable text have the same fields? IT seems that the nursery
information is only available in the human readable output?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a nursery
boolean to the JSON output (and TBH I thought I had done that before...).
output.push_str(&format!("# {} ({})", rule.as_ref(), rule.noqa_code())); | ||
output.push('\n'); | ||
output.push('\n'); | ||
fn format_rule_text(rule: Rule) -> String { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: You could instead also implement Display
for e.g. Explanation
(this would also ensure that the JSON output and the human-readable output contain the same information).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I'll leave that for a future refactoring (I think the docs-generation code could be unified with this too?).
Co-authored-by: Micha Reiser <[email protected]>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [docs/MarkDown](https://togithub.com/Python-Markdown/markdown) ([changelog](https://togithub.com/Python-Markdown/markdown/blob/master/docs/change_log/index.md)) | `==3.3.7` -> `==3.4.3` | [![age](https://badges.renovateapi.com/packages/pypi/docs%2fMarkDown/3.4.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/docs%2fMarkDown/3.4.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/docs%2fMarkDown/3.4.3/compatibility-slim/3.3.7)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/docs%2fMarkDown/3.4.3/confidence-slim/3.3.7)](https://docs.renovatebot.com/merge-confidence/) | | [docs/mkdocs-material](https://togithub.com/squidfunk/mkdocs-material) | `==9.1.17` -> `==9.1.18` | [![age](https://badges.renovateapi.com/packages/pypi/docs%2fmkdocs-material/9.1.18/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/docs%2fmkdocs-material/9.1.18/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/docs%2fmkdocs-material/9.1.18/compatibility-slim/9.1.17)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/docs%2fmkdocs-material/9.1.18/confidence-slim/9.1.17)](https://docs.renovatebot.com/merge-confidence/) | | [misc-lint/ruff](https://beta.ruff.rs/docs) ([source](https://togithub.com/astral-sh/ruff), [changelog](https://togithub.com/astral-sh/ruff/releases)) | `==0.0.276` -> `==0.0.277` | [![age](https://badges.renovateapi.com/packages/pypi/misc-lint%2fruff/0.0.277/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/misc-lint%2fruff/0.0.277/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/misc-lint%2fruff/0.0.277/compatibility-slim/0.0.276)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/misc-lint%2fruff/0.0.277/confidence-slim/0.0.276)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>Python-Markdown/markdown (docs/MarkDown)</summary> ### [`v3.4.3`](https://togithub.com/Python-Markdown/markdown/compare/3.4.2...3.4.3) [Compare Source](https://togithub.com/Python-Markdown/markdown/compare/3.4.2...3.4.3) ### [`v3.4.2`](https://togithub.com/Python-Markdown/markdown/compare/3.4.1...3.4.2) [Compare Source](https://togithub.com/Python-Markdown/markdown/compare/3.4.1...3.4.2) ### [`v3.4.1`](https://togithub.com/Python-Markdown/markdown/compare/3.4...3.4.1) [Compare Source](https://togithub.com/Python-Markdown/markdown/compare/3.4...3.4.1) ### [`v3.4`](https://togithub.com/Python-Markdown/markdown/compare/3.3.7...3.4) [Compare Source](https://togithub.com/Python-Markdown/markdown/compare/3.3.7...3.4) </details> <details> <summary>squidfunk/mkdocs-material (docs/mkdocs-material)</summary> ### [`v9.1.18`](https://togithub.com/squidfunk/mkdocs-material/releases/tag/9.1.18): mkdocs-material-9.1.18 [Compare Source](https://togithub.com/squidfunk/mkdocs-material/compare/9.1.17...9.1.18) - Updated Danish translations - Added support for installing user requirements in Docker image - Fixed [#​5655](https://togithub.com/squidfunk/mkdocs-material/issues/5655): Search separator with lookbehind breaks highlighting </details> <details> <summary>astral-sh/ruff (misc-lint/ruff)</summary> ### [`v0.0.277`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.277) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.276...v0.0.277) <!-- Release notes generated using configuration in .github/release.yml at v0.0.277 --> #### What's Changed ##### Breaking Changes - Add .ipynb_checkpoints, .pyenv, .pytest_cache, and .vscode to default excludes by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5513](https://togithub.com/astral-sh/ruff/pull/5513) ##### Rules - \[`pylint`] Implement Pylint `typevar-name-mismatch` (`C0132`) by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5501](https://togithub.com/astral-sh/ruff/pull/5501) ##### Settings - Add `ruff rule --all` subcommand (with JSON output) by [@​akx](https://togithub.com/akx) in [https://github.com/astral-sh/ruff/pull/5059](https://togithub.com/astral-sh/ruff/pull/5059) ##### Bug Fixes - Fix eval detection for suspicious-eval-usage by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5506](https://togithub.com/astral-sh/ruff/pull/5506) - Avoid PERF rules for iteration-dependent assignments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5508](https://togithub.com/astral-sh/ruff/pull/5508) - Avoid returning first-match for rule prefixes by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5511](https://togithub.com/astral-sh/ruff/pull/5511) **Full Changelog**: astral-sh/ruff@v0.0.276...v0.0.277 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every 3 months on the first day of the month" (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://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/AlexWaygood/typeshed-stats). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNDQuMiIsInVwZGF0ZWRJblZlciI6IjM2LjUuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Alex Waygood <[email protected]>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://beta.ruff.rs/docs) ([source](https://togithub.com/astral-sh/ruff), [changelog](https://togithub.com/astral-sh/ruff/releases)) | `==0.0.275` -> `==0.0.278` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.278/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.278/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.278/compatibility-slim/0.0.275)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.278/confidence-slim/0.0.275)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>astral-sh/ruff (ruff)</summary> ### [`v0.0.278`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.278) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.277...v0.0.278) <!-- Release notes generated using configuration in .github/release.yml at main --> See the [release blog post](https://astral.sh/blog/ruff-v0.0.278) for more, including detailed descriptions of any newly added rules. #### What's Changed ##### Rules - \[`pylint`] Implement `typevar-bivariance` (`PLC0131`) by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5517](https://togithub.com/astral-sh/ruff/pull/5517) - \[`flake8-pyi`] Implement `unnecessary-literal-union` (`PYI030`) by [@​zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/5570](https://togithub.com/astral-sh/ruff/pull/5570) - \[`pylint`] Implement `type-name-incorrect-variance` (`PLC0105`) by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5651](https://togithub.com/astral-sh/ruff/pull/5651) - \[`ruff`] Implement `unnecessary-list-allocation-for-first-element` (`RUF015`) by [@​evanrittenhouse](https://togithub.com/evanrittenhouse) in [https://github.com/astral-sh/ruff/pull/5549](https://togithub.com/astral-sh/ruff/pull/5549) - \[`flake8-bugbear`] Implement `re-sub-positional-args` (`B034`) by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5669](https://togithub.com/astral-sh/ruff/pull/5669) - \[`ruff`] Implement `invalid-index-type` (`RUF016`) by [@​zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/5602](https://togithub.com/astral-sh/ruff/pull/5602) ##### Settings - \[`isort`] Add `--case-sensitive` flag by [@​qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/5539](https://togithub.com/astral-sh/ruff/pull/5539) - \[`isort`] Support globbing in `isort` options by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5473](https://togithub.com/astral-sh/ruff/pull/5473) ##### Bug Fixes - Support autofix for some multiline `str.format` calls by [@​harupy](https://togithub.com/harupy) in [https://github.com/astral-sh/ruff/pull/5638](https://togithub.com/astral-sh/ruff/pull/5638) - Avoid triggering `unnecessary-map` (`C417`) for late-bound lambdas by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5520](https://togithub.com/astral-sh/ruff/pull/5520) - Avoid triggering DTZ001-006 when using `.astimezone()` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5524](https://togithub.com/astral-sh/ruff/pull/5524) - Enable attribute lookups via semantic model by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5536](https://togithub.com/astral-sh/ruff/pull/5536) - Avoid syntax errors when rewriting str(dict) in f-strings by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5538](https://togithub.com/astral-sh/ruff/pull/5538) - Differentiate between runtime and typing-time annotations by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5575](https://togithub.com/astral-sh/ruff/pull/5575) - Only run pyproject.toml lint rules when enabled by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5578](https://togithub.com/astral-sh/ruff/pull/5578) - Refactor isort directive skips to use iterators by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5623](https://togithub.com/astral-sh/ruff/pull/5623) - Allow descriptor instantiations in dataclass fields by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5537](https://togithub.com/astral-sh/ruff/pull/5537) - Refactor `noqa` directive parsing away from regex-based implementation by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5554](https://togithub.com/astral-sh/ruff/pull/5554) - Emit warnings for invalid `# noqa` directives by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5571](https://togithub.com/astral-sh/ruff/pull/5571) - Support individual codes on `# flake8: noqa` directives by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5618](https://togithub.com/astral-sh/ruff/pull/5618) - Add `tkinter` import convention by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5626](https://togithub.com/astral-sh/ruff/pull/5626) - Avoid `PERF401` if conditional depends on list var by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5603](https://togithub.com/astral-sh/ruff/pull/5603) - Fix typo in complex-if-statement-in-stub message by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5635](https://togithub.com/astral-sh/ruff/pull/5635) - Make TRY301 trigger only if a `raise` throws a caught exception by [@​evanrittenhouse](https://togithub.com/evanrittenhouse) in [https://github.com/astral-sh/ruff/pull/5455](https://togithub.com/astral-sh/ruff/pull/5455) - Skip flake8-future-annotations checks in stub files by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5652](https://togithub.com/astral-sh/ruff/pull/5652) - Always allow PEP 585 and PEP 604 rewrites in stub files by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5653](https://togithub.com/astral-sh/ruff/pull/5653) - Add support for `Union` declarations without `|` to PYI016 by [@​zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/5598](https://togithub.com/astral-sh/ruff/pull/5598) - Ignore `_name_` and `_value_` accesses in `flake8-self` rules by [@​monosans](https://togithub.com/monosans) in [https://github.com/astral-sh/ruff/pull/5663](https://togithub.com/astral-sh/ruff/pull/5663) - Refactor `repeated_keys()` to use `ComparableExpr` by [@​qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/5696](https://togithub.com/astral-sh/ruff/pull/5696) #### New Contributors - [@​karosis88](https://togithub.com/karosis88) made their first contribution in [https://github.com/astral-sh/ruff/pull/5560](https://togithub.com/astral-sh/ruff/pull/5560) - [@​petermattia](https://togithub.com/petermattia) made their first contribution in [https://github.com/astral-sh/ruff/pull/5579](https://togithub.com/astral-sh/ruff/pull/5579) - [@​DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos) made their first contribution in [https://github.com/astral-sh/ruff/pull/5607](https://togithub.com/astral-sh/ruff/pull/5607) **Full Changelog**: astral-sh/ruff@v0.0.277...v0.0.278 ### [`v0.0.277`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.277) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.276...v0.0.277) <!-- Release notes generated using configuration in .github/release.yml at v0.0.277 --> #### What's Changed ##### Breaking Changes - Add .ipynb_checkpoints, .pyenv, .pytest_cache, and .vscode to default excludes by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5513](https://togithub.com/astral-sh/ruff/pull/5513) ##### Rules - \[`pylint`] Implement Pylint `typevar-name-mismatch` (`C0132`) by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5501](https://togithub.com/astral-sh/ruff/pull/5501) ##### Settings - Add `ruff rule --all` subcommand (with JSON output) by [@​akx](https://togithub.com/akx) in [https://github.com/astral-sh/ruff/pull/5059](https://togithub.com/astral-sh/ruff/pull/5059) ##### Bug Fixes - Fix eval detection for suspicious-eval-usage by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5506](https://togithub.com/astral-sh/ruff/pull/5506) - Avoid PERF rules for iteration-dependent assignments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5508](https://togithub.com/astral-sh/ruff/pull/5508) - Avoid returning first-match for rule prefixes by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5511](https://togithub.com/astral-sh/ruff/pull/5511) **Full Changelog**: astral-sh/ruff@v0.0.276...v0.0.277 ### [`v0.0.276`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.276) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.275...v0.0.276) <!-- Release notes generated using configuration in .github/release.yml at v0.0.276 --> See the [release blog post](https://astral.sh/blog/ruff-v0.0.276) for more, including detailed descriptions of any newly added rules. #### What's Changed Highlights include: experimental support for linting Jupyter Notebooks. To opt-in to linting Jupyter Notebook files, add the `*.ipynb` pattern to your [`include`](settings.md#include) setting, like so: ```toml [tool.ruff] ### Allow Ruff to discover `*.ipynb` files. include = ["*.py", "*.pyi", "**/pyproject.toml", "*.ipynb"] ``` This will prompt Ruff to discover Jupyter Notebook files in any specified directories, and lint them accordingly. Jupyter Notebook support is currently opt-in and experimental. We'd love your help testing it out. Have feedback? Run into issues? [Let us know!](https://togithub.com/astral-sh/ruff/issues/new) ##### New Rules - \[`flake8-pyi`] Implement `PYI002`, `PYI003`, `PYI004`, `PYI005` by [@​density](https://togithub.com/density) in [https://github.com/astral-sh/ruff/pull/5457](https://togithub.com/astral-sh/ruff/pull/5457) - \[`numpy`] Implement `numpy-deprecated-function` (`NPY003`) by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5468](https://togithub.com/astral-sh/ruff/pull/5468) - \[`perflint`] Implement `unnecessary-list-cast` (`PERF101`) by [@​qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/5121](https://togithub.com/astral-sh/ruff/pull/5121) - \[`perflint`] Implement `try-except-in-loop` (`PERF203`) by [@​evanrittenhouse](https://togithub.com/evanrittenhouse) in [https://github.com/astral-sh/ruff/pull/5166](https://togithub.com/astral-sh/ruff/pull/5166) - \[`perflint`] Implement `manual-list-comprehension` (`PERF401`) and `manual-list-copy` (`PERF402`) rules by [@​qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/5298](https://togithub.com/astral-sh/ruff/pull/5298) - \[`pylint`] Implement Pylint `single-string-used-for-slots` (`C0205`) as `single-string-slots` (`PLC0205`) by [@​tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/5399](https://togithub.com/astral-sh/ruff/pull/5399) ##### Jupyter - Experimental release for Jupyter notebook integration by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5363](https://togithub.com/astral-sh/ruff/pull/5363) - Enable --watch for Jupyter notebooks by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5394](https://togithub.com/astral-sh/ruff/pull/5394) - Consider Jupyter index for code frames (`--show-source`) by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5402](https://togithub.com/astral-sh/ruff/pull/5402) - fixup! Consider Jupyter index for code frames (`--show-source`) ([#​5402](https://togithub.com/astral-sh/ruff/issues/5402)) by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5414](https://togithub.com/astral-sh/ruff/pull/5414) ##### Settings - \[`pyupgrade`] Restore the `keep-runtime-typing` setting by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5470](https://togithub.com/astral-sh/ruff/pull/5470) - Add `PythonVersion::Py312` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5316](https://togithub.com/astral-sh/ruff/pull/5316) ##### Bug Fixes - Support `pydantic.BaseSettings` in `mutable-class-default` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5312](https://togithub.com/astral-sh/ruff/pull/5312) - Allow `__slots__` assignments in `mutable-class-default` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5314](https://togithub.com/astral-sh/ruff/pull/5314) - Avoid syntax errors when removing f-string prefixes by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5319](https://togithub.com/astral-sh/ruff/pull/5319) - Ignore unpacking in `iteration-over-set` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5392](https://togithub.com/astral-sh/ruff/pull/5392) - Replace same length equal line with dash line in D407 by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5383](https://togithub.com/astral-sh/ruff/pull/5383) - Exclude docstrings from PYI053 by [@​intgr](https://togithub.com/intgr) in [https://github.com/astral-sh/ruff/pull/5405](https://togithub.com/astral-sh/ruff/pull/5405) - Use "manual" fixability for E731 in shadowed context by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5430](https://togithub.com/astral-sh/ruff/pull/5430) - Detect consecutive, non-newline-delimited NumPy sections by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5467](https://togithub.com/astral-sh/ruff/pull/5467) - Fix `unnecessary-encode-utf8` to fix `encode` on parenthesized strings correctly by [@​harupy](https://togithub.com/harupy) in [https://github.com/astral-sh/ruff/pull/5478](https://togithub.com/astral-sh/ruff/pull/5478) - Allow `Final` assignments in stubs by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5490](https://togithub.com/astral-sh/ruff/pull/5490) - Respect `abc` decorators when classifying function types by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5315](https://togithub.com/astral-sh/ruff/pull/5315) - Allow `@Author` format for "Missing Author" rule in `flake8-todos` by [@​mayrholu](https://togithub.com/mayrholu) in [https://github.com/astral-sh/ruff/pull/4903](https://togithub.com/astral-sh/ruff/pull/4903) - Ignore type aliases for RUF013 by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/5344](https://togithub.com/astral-sh/ruff/pull/5344) - Change W605 autofix to use raw strings if possible by [@​hauntsaninja](https://togithub.com/hauntsaninja) in [https://github.com/astral-sh/ruff/pull/5352](https://togithub.com/astral-sh/ruff/pull/5352) - Add space when migrating to raw string by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5358](https://togithub.com/astral-sh/ruff/pull/5358) - Update the `invalid-escape-sequence` rule by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5359](https://togithub.com/astral-sh/ruff/pull/5359) - Include BaseException in B017 rule by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5466](https://togithub.com/astral-sh/ruff/pull/5466) - \[`flake8-django`] Skip duplicate violations in `DJ012` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/5469](https://togithub.com/astral-sh/ruff/pull/5469) #### New Contributors - [@​mayrholu](https://togithub.com/mayrholu) made their first contribution in [https://github.com/astral-sh/ruff/pull/4903](https://togithub.com/astral-sh/ruff/pull/4903) - [@​hauntsaninja](https://togithub.com/hauntsaninja) made their first contribution in [https://github.com/astral-sh/ruff/pull/5352](https://togithub.com/astral-sh/ruff/pull/5352) - [@​ethunk](https://togithub.com/ethunk) made their first contribution in [https://github.com/astral-sh/ruff/pull/5397](https://togithub.com/astral-sh/ruff/pull/5397) - [@​LouisDISPA](https://togithub.com/LouisDISPA) made their first contribution in [https://github.com/astral-sh/ruff/pull/5475](https://togithub.com/astral-sh/ruff/pull/5475) **Full Changelog**: astral-sh/ruff@v0.0.275...v0.0.276 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/allenporter/flux-local). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNTkuNyIsInVwZGF0ZWRJblZlciI6IjM2LjUuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Summary
This adds a
ruff rule --all
switch that prints out a human-readable Markdown or a machine-readable JSON document of the lint rules known to Ruff.I needed a machine-readable document of the rules for a project, and figured it could be useful for other people – or tooling! – to be able to interrogate Ruff about its arcane knowledge.
The JSON output is an array of the same objects printed by
ruff rule --format=json
.Test Plan
I ran
ruff rule --all --format=json
. I think more might be needed, but maybe a snapshot test is overkill?