|
1 | 1 | # Changelog
|
2 | 2 |
|
| 3 | +## 0.5.0 |
| 4 | + |
| 5 | +Check out the [blog post](https://astral.sh/blog/ruff-v0.5.0) for a migration guide and overview of the changes! |
| 6 | + |
| 7 | +### Breaking changes |
| 8 | + |
| 9 | +See also, the "Remapped rules" section which may result in disabled rules. |
| 10 | + |
| 11 | +- Follow the XDG specification to discover user-level configurations on macOS (same as on other Unix platforms) |
| 12 | +- Selecting `ALL` now excludes deprecated rules |
| 13 | +- The released archives now include an extra level of nesting, which can be removed with `--strip-components=1` when untarring. |
| 14 | +- The release artifact's file name no longer includes the version tag. This enables users to install via `/latest` URLs on GitHub. |
| 15 | + |
| 16 | +### Deprecations |
| 17 | + |
| 18 | +The following rules are now deprecated: |
| 19 | + |
| 20 | +- [`syntax-error`](https://docs.astral.sh/ruff/rules/syntax-error/) (`E999`): Syntax errors are now always shown |
| 21 | + |
| 22 | +### Remapped rules |
| 23 | + |
| 24 | +The following rules have been remapped to new rule codes: |
| 25 | + |
| 26 | +- [`blocking-http-call-in-async-function`](https://docs.astral.sh/ruff/rules/blocking-http-call-in-async-function/): `ASYNC100` to `ASYNC210` |
| 27 | +- [`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` |
| 28 | +- [`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` |
| 29 | +- [`trio-timeout-without-await`](https://docs.astral.sh/ruff/rules/trio-timeout-without-await/): `TRIO100` to `ASYNC100` |
| 30 | +- [`trio-sync-call`](https://docs.astral.sh/ruff/rules/trio-sync-call/): `TRIO105` to `ASYNC105` |
| 31 | +- [`trio-async-function-with-timeout`](https://docs.astral.sh/ruff/rules/trio-async-function-with-timeout/): `TRIO109` to `ASYNC109` |
| 32 | +- [`trio-unneeded-sleep`](https://docs.astral.sh/ruff/rules/trio-unneeded-sleep/): `TRIO110` to `ASYNC110` |
| 33 | +- [`trio-zero-sleep-call`](https://docs.astral.sh/ruff/rules/trio-zero-sleep-call/): `TRIO115` to `ASYNC115` |
| 34 | +- [`repeated-isinstance-calls`](https://docs.astral.sh/ruff/rules/repeated-isinstance-calls/): `PLR1701` to `SIM101` |
| 35 | + |
| 36 | +### Stabilization |
| 37 | + |
| 38 | +The following rules have been stabilized and are no longer in preview: |
| 39 | + |
| 40 | +- [`mutable-fromkeys-value`](https://docs.astral.sh/ruff/rules/mutable-fromkeys-value/) (`RUF024`) |
| 41 | +- [`default-factory-kwarg`](https://docs.astral.sh/ruff/rules/default-factory-kwarg/) (`RUF026`) |
| 42 | +- [`django-extra`](https://docs.astral.sh/ruff/rules/django-extra/) (`S610`) |
| 43 | +- [`manual-dict-comprehension`](https://docs.astral.sh/ruff/rules/manual-dict-comprehension/) (`PERF403`) |
| 44 | +- [`print-empty-string`](https://docs.astral.sh/ruff/rules/print-empty-string/) (`FURB105`) |
| 45 | +- [`readlines-in-for`](https://docs.astral.sh/ruff/rules/readlines-in-for/) (`FURB129`) |
| 46 | +- [`if-expr-min-max`](https://docs.astral.sh/ruff/rules/if-expr-min-max/) (`FURB136`) |
| 47 | +- [`bit-count`](https://docs.astral.sh/ruff/rules/bit-count/) (`FURB161`) |
| 48 | +- [`redundant-log-base`](https://docs.astral.sh/ruff/rules/redundant-log-base/) (`FURB163`) |
| 49 | +- [`regex-flag-alias`](https://docs.astral.sh/ruff/rules/regex-flag-alias/) (`FURB167`) |
| 50 | +- [`isinstance-type-none`](https://docs.astral.sh/ruff/rules/isinstance-type-none/) (`FURB168`) |
| 51 | +- [`type-none-comparison`](https://docs.astral.sh/ruff/rules/type-none-comparison/) (`FURB169`) |
| 52 | +- [`implicit-cwd`](https://docs.astral.sh/ruff/rules/implicit-cwd/) (`FURB177`) |
| 53 | +- [`hashlib-digest-hex`](https://docs.astral.sh/ruff/rules/hashlib-digest-hex/) (`FURB181`) |
| 54 | +- [`list-reverse-copy`](https://docs.astral.sh/ruff/rules/list-reverse-copy/) (`FURB187`) |
| 55 | +- [`bad-open-mode`](https://docs.astral.sh/ruff/rules/bad-open-mode/) (`PLW1501`) |
| 56 | +- [`empty-comment`](https://docs.astral.sh/ruff/rules/empty-comment/) (`PLR2044`) |
| 57 | +- [`global-at-module-level`](https://docs.astral.sh/ruff/rules/global-at-module-level/) (`PLW0604`) |
| 58 | +- [`misplaced-bare-raise`](https://docs.astral.sh/ruff/rules/misplaced-bare-raise%60/) (`PLE0744`) |
| 59 | +- [`non-ascii-import-name`](https://docs.astral.sh/ruff/rules/non-ascii-import-name/) (`PLC2403`) |
| 60 | +- [`non-ascii-name`](https://docs.astral.sh/ruff/rules/non-ascii-name/) (`PLC2401`) |
| 61 | +- [`nonlocal-and-global`](https://docs.astral.sh/ruff/rules/nonlocal-and-global/) (`PLE0115`) |
| 62 | +- [`potential-index-error`](https://docs.astral.sh/ruff/rules/potential-index-error/) (`PLE0643`) |
| 63 | +- [`redeclared-assigned-name`](https://docs.astral.sh/ruff/rules/redeclared-assigned-name/) (`PLW0128`) |
| 64 | +- [`redefined-argument-from-local`](https://docs.astral.sh/ruff/rules/redefined-argument-from-local/) (`PLR1704`) |
| 65 | +- [`repeated-keyword-argument`](https://docs.astral.sh/ruff/rules/repeated-keyword-argument/) (`PLE1132`) |
| 66 | +- [`super-without-brackets`](https://docs.astral.sh/ruff/rules/super-without-brackets/) (`PLW0245`) |
| 67 | +- [`unnecessary-list-index-lookup`](https://docs.astral.sh/ruff/rules/unnecessary-list-index-lookup/) (`PLR1736`) |
| 68 | +- [`useless-exception-statement`](https://docs.astral.sh/ruff/rules/useless-exception-statement/) (`PLW0133`) |
| 69 | +- [`useless-with-lock`](https://docs.astral.sh/ruff/rules/useless-with-lock/) (`PLW2101`) |
| 70 | + |
| 71 | +The following behaviors have been stabilized: |
| 72 | + |
| 73 | +- [`is-literal`](https://docs.astral.sh/ruff/rules/is-literal/) (`F632`) now warns for identity checks against list, set or dictionary literals |
| 74 | +- [`needless-bool`](https://docs.astral.sh/ruff/rules/needless-bool/) (`SIM103`) now detects `if` expressions with implicit `else` branches |
| 75 | +- [`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 |
| 76 | +- [`type-comparison`](https://docs.astral.sh/ruff/rules/type-comparison/) (`E721`) now allows idioms such as `type(x) is int` |
| 77 | +- [`yoda-condition`](https://docs.astral.sh/ruff/rules/yoda-conditions/) (`SIM300`) now flags a wider range of expressions |
| 78 | + |
| 79 | +### Removals |
| 80 | + |
| 81 | +The following deprecated settings have been removed: |
| 82 | + |
| 83 | +- `output-format=text`; use `output-format=concise` or `output-format=full` |
| 84 | +- `tab-size`; use `indent-width` |
| 85 | + |
| 86 | +The following deprecated CLI options have been removed: |
| 87 | + |
| 88 | +- `--show-source`; use `--output-format=full` |
| 89 | +- `--no-show-source`; use `--output-format=concise` |
| 90 | + |
| 91 | +The following deprecated CLI commands have been removed: |
| 92 | + |
| 93 | +- `ruff <path>`; use `ruff check <path>` |
| 94 | +- `ruff --clean`; use `ruff clean` |
| 95 | +- `ruff --generate-shell-completion`; use `ruff generate-shell-completion` |
| 96 | + |
| 97 | +### Preview features |
| 98 | + |
| 99 | +- \[`ruff`\] Add `assert-with-print-message` rule ([#11981](https://github.com/astral-sh/ruff/pull/11981)) |
| 100 | + |
| 101 | +### CLI |
| 102 | + |
| 103 | +- Use rule name rather than message in `--statistics` ([#11697](https://github.com/astral-sh/ruff/pull/11697)) |
| 104 | +- Use the output format `full` by default ([#12010](https://github.com/astral-sh/ruff/pull/12010)) |
| 105 | +- Don't log syntax errors to the console ([#11902](https://github.com/astral-sh/ruff/pull/11902)) |
| 106 | + |
| 107 | +### Rule changes |
| 108 | + |
| 109 | +- \[`ruff`\] Fix false positives if `gettext` is imported using an alias (`RUF027`) ([#12025](https://github.com/astral-sh/ruff/pull/12025)) |
| 110 | +- \[`npy`\] Update `trapz` and `in1d` deprecation (`NPY201`) ([#11948](https://github.com/astral-sh/ruff/pull/11948)) |
| 111 | +- \[`flake8-bandit`\] Modify diagnostic ranges for shell-related rules ([#10667](https://github.com/astral-sh/ruff/pull/10667)) |
| 112 | + |
| 113 | +### Server |
| 114 | + |
| 115 | +- Closing an untitled, unsaved notebook document no longer throws an error ([#11942](https://github.com/astral-sh/ruff/pull/11942)) |
| 116 | +- Support the usage of tildes and environment variables in `logFile` ([#11945](https://github.com/astral-sh/ruff/pull/11945)) |
| 117 | +- Add option to configure whether to show syntax errors ([#12059](https://github.com/astral-sh/ruff/pull/12059)) |
| 118 | + |
| 119 | +### Bug fixes |
| 120 | + |
| 121 | +- \[`pycodestyle`\] Avoid `E203` for f-string debug expression ([#12024](https://github.com/astral-sh/ruff/pull/12024)) |
| 122 | +- \[`pep8-naming`\] Match import-name ignores against both name and alias (`N812`, `N817`) ([#12033](https://github.com/astral-sh/ruff/pull/12033)) |
| 123 | +- \[`pyflakes`\] Detect assignments that shadow definitions (`F811`) ([#11961](https://github.com/astral-sh/ruff/pull/11961)) |
| 124 | + |
| 125 | +### Parser |
| 126 | + |
| 127 | +- Emit a syntax error for an empty type parameter list ([#12030](https://github.com/astral-sh/ruff/pull/12030)) |
| 128 | +- Avoid consuming the newline for unterminated strings ([#12067](https://github.com/astral-sh/ruff/pull/12067)) |
| 129 | +- Do not include the newline in the unterminated string range ([#12017](https://github.com/astral-sh/ruff/pull/12017)) |
| 130 | +- Use the correct range to highlight line continuation errors ([#12016](https://github.com/astral-sh/ruff/pull/12016)) |
| 131 | +- Consider 2-character EOL before line continuations ([#12035](https://github.com/astral-sh/ruff/pull/12035)) |
| 132 | +- Consider line continuation character for re-lexing ([#12008](https://github.com/astral-sh/ruff/pull/12008)) |
| 133 | + |
| 134 | +### Other changes |
| 135 | + |
| 136 | +- Upgrade the Unicode table used for measuring the line-length ([#11194](https://github.com/astral-sh/ruff/pull/11194)) |
| 137 | +- Remove the deprecation error message for the nursery selector ([#10172](https://github.com/astral-sh/ruff/pull/10172)) |
| 138 | + |
3 | 139 | ## 0.4.10
|
4 | 140 |
|
5 | 141 | ### Parser
|
|
0 commit comments