From a8b48fce7e32b35538072ccd55dac64e158d1e34 Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Thu, 27 Jun 2024 16:46:44 +0200 Subject: [PATCH] Release v0.5.0 (#12068) Co-authored-by: Alex Waygood --- BREAKING_CHANGES.md | 7 ++ CHANGELOG.md | 136 ++++++++++++++++++++++++++++++ CONTRIBUTING.md | 7 +- Cargo.lock | 4 +- README.md | 2 +- crates/ruff/Cargo.toml | 2 +- crates/ruff_linter/Cargo.toml | 2 +- docs/integrations.md | 6 +- pyproject.toml | 2 +- scripts/benchmarks/pyproject.toml | 2 +- 10 files changed, 155 insertions(+), 15 deletions(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 4aae32aa031eb..c83869fe9233d 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -1,5 +1,12 @@ # Breaking Changes +## 0.5.0 + +- Follow the XDG specification to discover user-level configurations on macOS (same as on other Unix platforms) +- Selecting `ALL` now excludes deprecated rules +- The released archives now include an extra level of nesting, which can be removed with `--strip-components=1` when untarring. +- The release artifact's file name no longer includes the version tag. This enables users to install via `/latest` URLs on GitHub. + ## 0.3.0 ### Ruff 2024.2 style diff --git a/CHANGELOG.md b/CHANGELOG.md index e820f346c6f5b..21e59203ab661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,141 @@ # Changelog +## 0.5.0 + +Check out the [blog post](https://astral.sh/blog/ruff-v0.5.0) for a migration guide and overview of the changes! + +### Breaking changes + +See also, the "Remapped rules" section which may result in disabled rules. + +- Follow the XDG specification to discover user-level configurations on macOS (same as on other Unix platforms) +- Selecting `ALL` now excludes deprecated rules +- The released archives now include an extra level of nesting, which can be removed with `--strip-components=1` when untarring. +- The release artifact's file name no longer includes the version tag. This enables users to install via `/latest` URLs on GitHub. + +### Deprecations + +The following rules are now deprecated: + +- [`syntax-error`](https://docs.astral.sh/ruff/rules/syntax-error/) (`E999`): Syntax errors are now always shown + +### Remapped rules + +The following rules have been remapped to new rule codes: + +- [`blocking-http-call-in-async-function`](https://docs.astral.sh/ruff/rules/blocking-http-call-in-async-function/): `ASYNC100` to `ASYNC210` +- [`open-sleep-or-subprocess-in-async-function`](https://docs.astral.sh/ruff/rules/open-sleep-or-subprocess-in-async-function/): `ASYNC101` split into `ASYNC220`, `ASYNC221`, `ASYNC230`, and `ASYNC251` +- [`blocking-os-call-in-async-function`](https://docs.astral.sh/ruff/rules/blocking-os-call-in-async-function/): `ASYNC102` has been merged into `ASYNC220` and `ASYNC221` +- [`trio-timeout-without-await`](https://docs.astral.sh/ruff/rules/trio-timeout-without-await/): `TRIO100` to `ASYNC100` +- [`trio-sync-call`](https://docs.astral.sh/ruff/rules/trio-sync-call/): `TRIO105` to `ASYNC105` +- [`trio-async-function-with-timeout`](https://docs.astral.sh/ruff/rules/trio-async-function-with-timeout/): `TRIO109` to `ASYNC109` +- [`trio-unneeded-sleep`](https://docs.astral.sh/ruff/rules/trio-unneeded-sleep/): `TRIO110` to `ASYNC110` +- [`trio-zero-sleep-call`](https://docs.astral.sh/ruff/rules/trio-zero-sleep-call/): `TRIO115` to `ASYNC115` +- [`repeated-isinstance-calls`](https://docs.astral.sh/ruff/rules/repeated-isinstance-calls/): `PLR1701` to `SIM101` + +### Stabilization + +The following rules have been stabilized and are no longer in preview: + +- [`mutable-fromkeys-value`](https://docs.astral.sh/ruff/rules/mutable-fromkeys-value/) (`RUF024`) +- [`default-factory-kwarg`](https://docs.astral.sh/ruff/rules/default-factory-kwarg/) (`RUF026`) +- [`django-extra`](https://docs.astral.sh/ruff/rules/django-extra/) (`S610`) +- [`manual-dict-comprehension`](https://docs.astral.sh/ruff/rules/manual-dict-comprehension/) (`PERF403`) +- [`print-empty-string`](https://docs.astral.sh/ruff/rules/print-empty-string/) (`FURB105`) +- [`readlines-in-for`](https://docs.astral.sh/ruff/rules/readlines-in-for/) (`FURB129`) +- [`if-expr-min-max`](https://docs.astral.sh/ruff/rules/if-expr-min-max/) (`FURB136`) +- [`bit-count`](https://docs.astral.sh/ruff/rules/bit-count/) (`FURB161`) +- [`redundant-log-base`](https://docs.astral.sh/ruff/rules/redundant-log-base/) (`FURB163`) +- [`regex-flag-alias`](https://docs.astral.sh/ruff/rules/regex-flag-alias/) (`FURB167`) +- [`isinstance-type-none`](https://docs.astral.sh/ruff/rules/isinstance-type-none/) (`FURB168`) +- [`type-none-comparison`](https://docs.astral.sh/ruff/rules/type-none-comparison/) (`FURB169`) +- [`implicit-cwd`](https://docs.astral.sh/ruff/rules/implicit-cwd/) (`FURB177`) +- [`hashlib-digest-hex`](https://docs.astral.sh/ruff/rules/hashlib-digest-hex/) (`FURB181`) +- [`list-reverse-copy`](https://docs.astral.sh/ruff/rules/list-reverse-copy/) (`FURB187`) +- [`bad-open-mode`](https://docs.astral.sh/ruff/rules/bad-open-mode/) (`PLW1501`) +- [`empty-comment`](https://docs.astral.sh/ruff/rules/empty-comment/) (`PLR2044`) +- [`global-at-module-level`](https://docs.astral.sh/ruff/rules/global-at-module-level/) (`PLW0604`) +- [`misplaced-bare-raise`](https://docs.astral.sh/ruff/rules/misplaced-bare-raise%60/) (`PLE0744`) +- [`non-ascii-import-name`](https://docs.astral.sh/ruff/rules/non-ascii-import-name/) (`PLC2403`) +- [`non-ascii-name`](https://docs.astral.sh/ruff/rules/non-ascii-name/) (`PLC2401`) +- [`nonlocal-and-global`](https://docs.astral.sh/ruff/rules/nonlocal-and-global/) (`PLE0115`) +- [`potential-index-error`](https://docs.astral.sh/ruff/rules/potential-index-error/) (`PLE0643`) +- [`redeclared-assigned-name`](https://docs.astral.sh/ruff/rules/redeclared-assigned-name/) (`PLW0128`) +- [`redefined-argument-from-local`](https://docs.astral.sh/ruff/rules/redefined-argument-from-local/) (`PLR1704`) +- [`repeated-keyword-argument`](https://docs.astral.sh/ruff/rules/repeated-keyword-argument/) (`PLE1132`) +- [`super-without-brackets`](https://docs.astral.sh/ruff/rules/super-without-brackets/) (`PLW0245`) +- [`unnecessary-list-index-lookup`](https://docs.astral.sh/ruff/rules/unnecessary-list-index-lookup/) (`PLR1736`) +- [`useless-exception-statement`](https://docs.astral.sh/ruff/rules/useless-exception-statement/) (`PLW0133`) +- [`useless-with-lock`](https://docs.astral.sh/ruff/rules/useless-with-lock/) (`PLW2101`) + +The following behaviors have been stabilized: + +- [`is-literal`](https://docs.astral.sh/ruff/rules/is-literal/) (`F632`) now warns for identity checks against list, set or dictionary literals +- [`needless-bool`](https://docs.astral.sh/ruff/rules/needless-bool/) (`SIM103`) now detects `if` expressions with implicit `else` branches +- [`module-import-not-at-top-of-file`](https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file/) (`E402`) now allows `os.environ` modifications between import statements +- [`type-comparison`](https://docs.astral.sh/ruff/rules/type-comparison/) (`E721`) now allows idioms such as `type(x) is int` +- [`yoda-condition`](https://docs.astral.sh/ruff/rules/yoda-conditions/) (`SIM300`) now flags a wider range of expressions + +### Removals + +The following deprecated settings have been removed: + +- `output-format=text`; use `output-format=concise` or `output-format=full` +- `tab-size`; use `indent-width` + +The following deprecated CLI options have been removed: + +- `--show-source`; use `--output-format=full` +- `--no-show-source`; use `--output-format=concise` + +The following deprecated CLI commands have been removed: + +- `ruff `; use `ruff check ` +- `ruff --clean`; use `ruff clean` +- `ruff --generate-shell-completion`; use `ruff generate-shell-completion` + +### Preview features + +- \[`ruff`\] Add `assert-with-print-message` rule ([#11981](https://github.com/astral-sh/ruff/pull/11981)) + +### CLI + +- Use rule name rather than message in `--statistics` ([#11697](https://github.com/astral-sh/ruff/pull/11697)) +- Use the output format `full` by default ([#12010](https://github.com/astral-sh/ruff/pull/12010)) +- Don't log syntax errors to the console ([#11902](https://github.com/astral-sh/ruff/pull/11902)) + +### Rule changes + +- \[`ruff`\] Fix false positives if `gettext` is imported using an alias (`RUF027`) ([#12025](https://github.com/astral-sh/ruff/pull/12025)) +- \[`npy`\] Update `trapz` and `in1d` deprecation (`NPY201`) ([#11948](https://github.com/astral-sh/ruff/pull/11948)) +- \[`flake8-bandit`\] Modify diagnostic ranges for shell-related rules ([#10667](https://github.com/astral-sh/ruff/pull/10667)) + +### Server + +- Closing an untitled, unsaved notebook document no longer throws an error ([#11942](https://github.com/astral-sh/ruff/pull/11942)) +- Support the usage of tildes and environment variables in `logFile` ([#11945](https://github.com/astral-sh/ruff/pull/11945)) +- Add option to configure whether to show syntax errors ([#12059](https://github.com/astral-sh/ruff/pull/12059)) + +### Bug fixes + +- \[`pycodestyle`\] Avoid `E203` for f-string debug expression ([#12024](https://github.com/astral-sh/ruff/pull/12024)) +- \[`pep8-naming`\] Match import-name ignores against both name and alias (`N812`, `N817`) ([#12033](https://github.com/astral-sh/ruff/pull/12033)) +- \[`pyflakes`\] Detect assignments that shadow definitions (`F811`) ([#11961](https://github.com/astral-sh/ruff/pull/11961)) + +### Parser + +- Emit a syntax error for an empty type parameter list ([#12030](https://github.com/astral-sh/ruff/pull/12030)) +- Avoid consuming the newline for unterminated strings ([#12067](https://github.com/astral-sh/ruff/pull/12067)) +- Do not include the newline in the unterminated string range ([#12017](https://github.com/astral-sh/ruff/pull/12017)) +- Use the correct range to highlight line continuation errors ([#12016](https://github.com/astral-sh/ruff/pull/12016)) +- Consider 2-character EOL before line continuations ([#12035](https://github.com/astral-sh/ruff/pull/12035)) +- Consider line continuation character for re-lexing ([#12008](https://github.com/astral-sh/ruff/pull/12008)) + +### Other changes + +- Upgrade the Unicode table used for measuring the line-length ([#11194](https://github.com/astral-sh/ruff/pull/11194)) +- Remove the deprecation error message for the nursery selector ([#10172](https://github.com/astral-sh/ruff/pull/10172)) + ## 0.4.10 ### Parser diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8aaac671cace..4cb78d8bc534e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -348,7 +348,6 @@ even patch releases may contain [non-backwards-compatible changes](https://semve 1. Merge the PR 1. Run the [release workflow](https://github.com/astral-sh/ruff/actions/workflows/release.yaml) with: - The new version number (without starting `v`) - - The commit hash of the merged release pull request on `main` 1. The release workflow will do the following: 1. Build all the assets. If this fails (even though we tested in step 4), we haven't tagged or uploaded anything, you can restart after pushing a fix. If you just need to rerun the build, @@ -360,10 +359,8 @@ even patch releases may contain [non-backwards-compatible changes](https://semve 1. Attach artifacts to draft GitHub release 1. Trigger downstream repositories. This can fail non-catastrophically, as we can run any downstream jobs manually if needed. -1. Publish the GitHub release - 1. Open the draft release in the GitHub release section - 1. Copy the changelog for the release into the GitHub release - - See previous releases for formatting of section headers +1. Verify the GitHub release: + 1. The Changelog should match the content of `CHANGELOG.md` 1. Append the contributors from the `bump.sh` script 1. If needed, [update the schemastore](https://github.com/astral-sh/ruff/blob/main/scripts/update_schemastore.py). 1. One can determine if an update is needed when diff --git a/Cargo.lock b/Cargo.lock index 8869d8bef06da..fc0c35f537593 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1985,7 +1985,7 @@ dependencies = [ [[package]] name = "ruff" -version = "0.4.10" +version = "0.5.0" dependencies = [ "anyhow", "argfile", @@ -2164,7 +2164,7 @@ dependencies = [ [[package]] name = "ruff_linter" -version = "0.4.10" +version = "0.5.0" dependencies = [ "aho-corasick", "annotate-snippets 0.9.2", diff --git a/README.md b/README.md index ed891050da57a..b5820c3d577ba 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ Ruff can also be used as a [pre-commit](https://pre-commit.com/) hook via [`ruff ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.4.10 + rev: v0.5.0 hooks: # Run the linter. - id: ruff diff --git a/crates/ruff/Cargo.toml b/crates/ruff/Cargo.toml index 59fafbc123def..59d7ad11790ac 100644 --- a/crates/ruff/Cargo.toml +++ b/crates/ruff/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ruff" -version = "0.4.10" +version = "0.5.0" publish = true authors = { workspace = true } edition = { workspace = true } diff --git a/crates/ruff_linter/Cargo.toml b/crates/ruff_linter/Cargo.toml index c88c12188c920..51c30774761e0 100644 --- a/crates/ruff_linter/Cargo.toml +++ b/crates/ruff_linter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ruff_linter" -version = "0.4.10" +version = "0.5.0" publish = false authors = { workspace = true } edition = { workspace = true } diff --git a/docs/integrations.md b/docs/integrations.md index 10f97dfc2b4d9..269a42dda6aea 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -14,7 +14,7 @@ Ruff can be used as a [pre-commit](https://pre-commit.com) hook via [`ruff-pre-c ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.4.10 + rev: v0.5.0 hooks: # Run the linter. - id: ruff @@ -27,7 +27,7 @@ To enable lint fixes, add the `--fix` argument to the lint hook: ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.4.10 + rev: v0.5.0 hooks: # Run the linter. - id: ruff @@ -41,7 +41,7 @@ To run the hooks over Jupyter Notebooks too, add `jupyter` to the list of allowe ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.4.10 + rev: v0.5.0 hooks: # Run the linter. - id: ruff diff --git a/pyproject.toml b/pyproject.toml index 2d2241930ca36..6cf31024a5834 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "ruff" -version = "0.4.10" +version = "0.5.0" description = "An extremely fast Python linter and code formatter, written in Rust." authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }] readme = "README.md" diff --git a/scripts/benchmarks/pyproject.toml b/scripts/benchmarks/pyproject.toml index 706ec98a8959a..bc35b584e4c8a 100644 --- a/scripts/benchmarks/pyproject.toml +++ b/scripts/benchmarks/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "scripts" -version = "0.4.10" +version = "0.5.0" description = "" authors = ["Charles Marsh "]