Skip to content
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

Airflow upgrade dag schedule argument #1

Closed
wants to merge 64 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
5f09d4a
[`ruff`] `re` and `regex` calls with unraw string as first argument (…
InSyncWithFoo Nov 19, 2024
dbbe7a7
Mark UP043 fix unsafe when the type annotation contains any comments …
MichaReiser Nov 19, 2024
9bbeb79
Specify the wasm-pack version explicitly (#14465)
zanieb Nov 20, 2024
582857f
Use Depot 8-core runner for ecosystem tests (#14463)
zanieb Nov 20, 2024
9e79d64
Use Depot 16-core runner for testing on Linux (#14460)
zanieb Nov 20, 2024
42c35b6
Use larger GitHub runner for testing on Windows (#14461)
zanieb Nov 20, 2024
6a4d207
[red-knot] Refactoring the inference logic of lexicographic compariso…
cake-monotone Nov 20, 2024
b9c53a7
[`pycodestyle`] Exempt `pytest.importorskip()` calls (`E402`) (#14474)
InSyncWithFoo Nov 20, 2024
b0c88a2
Only test release builds on main (#14475)
zanieb Nov 20, 2024
48680e1
Watch for changes to the generated file during documentation serve (#…
dhruvmanila Nov 20, 2024
0dbcecc
Only build the `fuzz` crate on `main` (#14478)
zanieb Nov 20, 2024
a6deca4
Rename the parser fuzz job for consistency with the rest of CI (#14479)
zanieb Nov 20, 2024
5f6607b
[ruff 0.8] Remove deprecated rule UP027 (#14382)
AlexWaygood Nov 16, 2024
c0b3dd3
[`ruff`] Stabilize unsafe fix for `zip-instead-of-pairwise (RUF007)` …
dylwil3 Nov 17, 2024
afeb217
[`pyupgrade`] Stabilize behavior to show diagnostic even when unfixab…
dylwil3 Nov 18, 2024
1b180c8
Change default for Python version from 3.8 to 3.9 (#13896)
takaya0 Nov 18, 2024
8b925ea
[`pycodestyle`] Stabilize behavior to ignore stub files in `ambiguous…
dylwil3 Nov 18, 2024
b46cc6a
Update pyproject-toml to support PEP 639 (#13902)
konstin Nov 18, 2024
8c3c5ee
Update Rust crate unicode-width to 0.2.0 (#13473)
renovate[bot] Nov 18, 2024
dc05b38
[ruff 0.8][`flake8-type-checking`] Rename `TCH` to `TC` (#14438)
Daverball Nov 18, 2024
52f526e
Warn instead of error when removed rules are used in ignore (#14435)
MichaReiser Nov 19, 2024
1081694
[ruff 0.8] [`flake8-annotations`] Remove deprecated rules ANN101 and …
AlexWaygood Nov 19, 2024
c400725
[ruff 0.8] [`flake8-pytest-style`] Remove deprecated rules PT004 and …
AlexWaygood Nov 19, 2024
e9079e7
Remove the deprecated `E999` rule code (#14428)
MichaReiser Nov 19, 2024
11d20a1
[ruff-0.8] [`ruff`] Stabilise `parenthesize-chained-operators` (`RUF0…
AlexWaygood Nov 19, 2024
844c07f
Upgrade cargo-dist from 0.22.1 => 0.25.2-prerelease.3 (#14456)
zanieb Nov 19, 2024
adfa723
Stabilize multiple rules (#14462)
MichaReiser Nov 19, 2024
70d9c90
Use XDG (i.e. `~/.local/bin`) instead of the Cargo home directory in …
zanieb Nov 19, 2024
aa7ac2c
[ruff-0.8] [`ruff`] Stabilise `unsorted-dunder-all` and `unsorted-dun…
AlexWaygood Nov 20, 2024
cef12f4
[ruff-0.8] Spruce up docs for newly stabilised rules (#14466)
AlexWaygood Nov 20, 2024
b2bb119
Fix failing tests for Ruff 0.8 branch (#14482)
MichaReiser Nov 20, 2024
4ccacc8
[ruff-0.8] [`FAST`] Further improve docs for `fast-api-non-annotated-…
AlexWaygood Nov 20, 2024
942d6ee
Stabilize `A004` (#14480)
MichaReiser Nov 20, 2024
3c52d2d
Improve the performance of the formatter instability check job (#14471)
zanieb Nov 20, 2024
aecdb8c
[red-knot] support `typing.Union` in type annotations (#14499)
Glyphack Nov 20, 2024
47f39ed
[red-knot] Meta data for `Type::Todo` (#14500)
sharkdp Nov 21, 2024
f684b6f
[red-knot] Fix: Infer type for typing.Union[..] tuple expression (#14…
sharkdp Nov 21, 2024
87043a2
Limit type size assertion to 64bit (#14514)
MichaReiser Nov 21, 2024
b9da430
doc(B024): #14455 add annotated but unassgined class variables (#14502)
cmp0xff Nov 21, 2024
2efa3fb
[`flake8-import-conventions`] Syntax check aliases supplied in config…
dylwil3 Nov 21, 2024
2b8b1ef
Improve docs for some pycodestyle rules (#14517)
AlexWaygood Nov 21, 2024
8358ad8
Ruff 0.8 release (#14486)
MichaReiser Nov 22, 2024
a90e404
[red-knot] PEP 695 type aliases (#14357)
sharkdp Nov 22, 2024
302fe76
Fix unnecessary space around power op in overlong f-string expression…
MichaReiser Nov 22, 2024
f6b2cd5
[red-knot] Semantic index: handle invalid `break`s (#14522)
sharkdp Nov 22, 2024
2917534
Fix broken link to `PYI063` (#14526)
AlexWaygood Nov 22, 2024
b80de52
Consider quotes inside format-specs when choosing the quotes for an f…
MichaReiser Nov 22, 2024
e25e704
[`flake8-type-checking`] Adds implementation for TC006 (#14511)
Daverball Nov 22, 2024
e53ac79
Enable logging for directory-renamed test (#14533)
MichaReiser Nov 22, 2024
931fa06
Extend `invalid-envvar-default (PLW1508)` to detect `os.environ.get` …
harupy Nov 22, 2024
3fda2d1
[`ruff`] Auto-add `r` prefix when string has no backslashes for `unra…
dylwil3 Nov 22, 2024
13e9fc9
Update dependency smol-toml to v1.3.1 (#14542)
renovate[bot] Nov 22, 2024
4ba847f
[red-knot] remove wrong typevar attribute implementations (#14540)
carljm Nov 22, 2024
e1838aa
Ignore more rules for stub files (#14541)
dylwil3 Nov 23, 2024
07d13c6
[B028-doc-update] Update documentation for B028 (#14338)
njhearp Nov 23, 2024
1f303a5
Simplify `flake8_pytest_style::rules::fail_call` implementation (#14556)
harupy Nov 23, 2024
e3d7926
[`flake8-bugbear`] Fix `mutable-contextvar-default (B039)` to resolve…
harupy Nov 24, 2024
545e9de
[`flake8-builtins`] Exempt private built-in modules (`A005`) (#14505)
InSyncWithFoo Nov 24, 2024
d285717
[`ruff`] Handle `attrs`'s `auto_attribs` correctly (`RUF009`) (#14520)
InSyncWithFoo Nov 24, 2024
de62e39
Use truthiness check in `auto_attribs` detection (#14562)
charliermarsh Nov 24, 2024
e5c7d87
Add `@astropy/astropy` to ecosystem checks (#14565)
InSyncWithFoo Nov 24, 2024
ac23c99
[`ruff`] Mark fixes for `unsorted-dunder-all` and `unsorted-dunder-sl…
AlexWaygood Nov 24, 2024
efe5408
Remove `FormatFStringPart` (#14448)
dhruvmanila Nov 25, 2024
5607a2f
Implement Airflow rule for DAG schedule argument
uranusjr Nov 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 13 additions & 11 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ jobs:

cargo-test-linux:
name: "cargo test (linux)"
runs-on: ubuntu-latest
runs-on: depot-ubuntu-22.04-16
needs: determine_changes
if: ${{ needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' }}
timeout-minutes: 20
Expand Down Expand Up @@ -159,7 +159,7 @@ jobs:

cargo-test-windows:
name: "cargo test (windows)"
runs-on: windows-latest
runs-on: windows-latest-xlarge
needs: determine_changes
if: ${{ needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' }}
timeout-minutes: 20
Expand Down Expand Up @@ -197,6 +197,8 @@ jobs:
cache: "npm"
cache-dependency-path: playground/package-lock.json
- uses: jetli/[email protected]
with:
version: v0.13.1
- uses: Swatinem/rust-cache@v2
- name: "Test ruff_wasm"
run: |
Expand All @@ -211,7 +213,7 @@ jobs:
name: "cargo build (release)"
runs-on: macos-latest
needs: determine_changes
if: ${{ needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' }}
if: ${{ github.ref == 'refs/heads/main' }}
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -255,11 +257,11 @@ jobs:
NEXTEST_PROFILE: "ci"
run: cargo +${{ steps.msrv.outputs.value }} insta test --all-features --unreferenced reject --test-runner nextest

cargo-fuzz:
name: "cargo fuzz"
cargo-fuzz-build:
name: "cargo fuzz build"
runs-on: ubuntu-latest
needs: determine_changes
if: ${{ needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' }}
if: ${{ github.ref == 'refs/heads/main' }}
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
Expand All @@ -278,7 +280,7 @@ jobs:
- run: cargo fuzz build -s none

fuzz-parser:
name: "Fuzz the parser"
name: "fuzz parser"
runs-on: ubuntu-latest
needs:
- cargo-test-linux
Expand Down Expand Up @@ -331,7 +333,7 @@ jobs:

ecosystem:
name: "ecosystem"
runs-on: ubuntu-latest
runs-on: depot-ubuntu-latest-8
needs:
- cargo-test-linux
- determine_changes
Expand Down Expand Up @@ -561,12 +563,12 @@ jobs:
run: rustup show
- name: "Cache rust"
uses: Swatinem/rust-cache@v2
- name: "Formatter progress"
- name: "Run checks"
run: scripts/formatter_ecosystem_checks.sh
- name: "Github step summary"
run: cat target/progress_projects_stats.txt > $GITHUB_STEP_SUMMARY
run: cat target/formatter-ecosystem/stats.txt > $GITHUB_STEP_SUMMARY
- name: "Remove checkouts from cache"
run: rm -r target/progress_projects
run: rm -r target/formatter-ecosystem

check-ruff-lsp:
name: "test ruff-lsp"
Expand Down
36 changes: 18 additions & 18 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# This file was autogenerated by cargo-dist: https://opensource.axo.dev/cargo-dist/
# This file was autogenerated by dist: https://opensource.axo.dev/cargo-dist/
#
# Copyright 2022-2024, axodotdev
# SPDX-License-Identifier: MIT or Apache-2.0
#
# CI that:
#
# * checks for a Git Tag that looks like a release
# * builds artifacts with cargo-dist (archives, installers, hashes)
# * builds artifacts with dist (archives, installers, hashes)
# * uploads those artifacts to temporary workflow zip
# * on success, uploads the artifacts to a GitHub Release
#
Expand All @@ -24,10 +24,10 @@ permissions:
# must be a Cargo-style SemVer Version (must have at least major.minor.patch).
#
# If PACKAGE_NAME is specified, then the announcement will be for that
# package (erroring out if it doesn't have the given version or isn't cargo-dist-able).
# package (erroring out if it doesn't have the given version or isn't dist-able).
#
# If PACKAGE_NAME isn't specified, then the announcement will be for all
# (cargo-dist-able) packages in the workspace with that version (this mode is
# (dist-able) packages in the workspace with that version (this mode is
# intended for workspaces with only one dist-able package, or with all dist-able
# packages versioned/released in lockstep).
#
Expand All @@ -48,7 +48,7 @@ on:
type: string

jobs:
# Run 'cargo dist plan' (or host) to determine what tasks we need to do
# Run 'dist plan' (or host) to determine what tasks we need to do
plan:
runs-on: "ubuntu-20.04"
outputs:
Expand All @@ -62,25 +62,25 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cargo-dist
- name: Install dist
# we specify bash to get pipefail; it guards against the `curl` command
# failing. otherwise `sh` won't catch that `curl` returned non-0
shell: bash
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.22.1/cargo-dist-installer.sh | sh"
- name: Cache cargo-dist
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.25.2-prerelease.3/cargo-dist-installer.sh | sh"
- name: Cache dist
uses: actions/upload-artifact@v4
with:
name: cargo-dist-cache
path: ~/.cargo/bin/cargo-dist
path: ~/.cargo/bin/dist
# sure would be cool if github gave us proper conditionals...
# so here's a doubly-nested ternary-via-truthiness to try to provide the best possible
# functionality based on whether this is a pull_request, and whether it's from a fork.
# (PRs run on the *source* but secrets are usually on the *target* -- that's *good*
# but also really annoying to build CI around when it needs secrets to work right.)
- id: plan
run: |
cargo dist ${{ (inputs.tag && inputs.tag != 'dry-run' && format('host --steps=create --tag={0}', inputs.tag)) || 'plan' }} --output-format=json > plan-dist-manifest.json
echo "cargo dist ran successfully"
dist ${{ (inputs.tag && inputs.tag != 'dry-run' && format('host --steps=create --tag={0}', inputs.tag)) || 'plan' }} --output-format=json > plan-dist-manifest.json
echo "dist ran successfully"
cat plan-dist-manifest.json
echo "manifest=$(jq -c "." plan-dist-manifest.json)" >> "$GITHUB_OUTPUT"
- name: "Upload dist-manifest.json"
Expand Down Expand Up @@ -124,12 +124,12 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cached cargo-dist
- name: Install cached dist
uses: actions/download-artifact@v4
with:
name: cargo-dist-cache
path: ~/.cargo/bin/
- run: chmod +x ~/.cargo/bin/cargo-dist
- run: chmod +x ~/.cargo/bin/dist
# Get all the local artifacts for the global tasks to use (for e.g. checksums)
- name: Fetch local artifacts
uses: actions/download-artifact@v4
Expand All @@ -140,8 +140,8 @@ jobs:
- id: cargo-dist
shell: bash
run: |
cargo dist build ${{ needs.plan.outputs.tag-flag }} --output-format=json "--artifacts=global" > dist-manifest.json
echo "cargo dist ran successfully"
dist build ${{ needs.plan.outputs.tag-flag }} --output-format=json "--artifacts=global" > dist-manifest.json
echo "dist ran successfully"

# Parse out what we just built and upload it to scratch storage
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -174,12 +174,12 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cached cargo-dist
- name: Install cached dist
uses: actions/download-artifact@v4
with:
name: cargo-dist-cache
path: ~/.cargo/bin/
- run: chmod +x ~/.cargo/bin/cargo-dist
- run: chmod +x ~/.cargo/bin/dist
# Fetch artifacts from scratch-storage
- name: Fetch artifacts
uses: actions/download-artifact@v4
Expand All @@ -191,7 +191,7 @@ jobs:
- id: host
shell: bash
run: |
cargo dist host ${{ needs.plan.outputs.tag-flag }} --steps=upload --steps=release --output-format=json > dist-manifest.json
dist host ${{ needs.plan.outputs.tag-flag }} --steps=upload --steps=release --output-format=json > dist-manifest.json
echo "artifacts uploaded and released successfully"
cat dist-manifest.json
echo "manifest=$(jq -c "." dist-manifest.json)" >> "$GITHUB_OUTPUT"
Expand Down
25 changes: 25 additions & 0 deletions BREAKING_CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,30 @@
# Breaking Changes

## 0.8.0

- **Default to Python 3.9**

Ruff now defaults to Python 3.9 instead of 3.8 if no explicit Python version is configured using [`ruff.target-version`](https://docs.astral.sh/ruff/settings/#target-version) or [`project.requires-python`](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#python-requires) ([#13896](https://github.com/astral-sh/ruff/pull/13896))

- **Changed location of `pydoclint` diagnostics**

[`pydoclint`](https://docs.astral.sh/ruff/rules/#pydoclint-doc) diagnostics now point to the first-line of the problematic docstring. Previously, this was not the case.

If you've opted into these preview rules but have them suppressed using
[`noqa`](https://docs.astral.sh/ruff/linter/#error-suppression) comments in
some places, this change may mean that you need to move the `noqa` suppression
comments. Most users should be unaffected by this change.

- **Use XDG (i.e. `~/.local/bin`) instead of the Cargo home directory in the standalone installer**

Previously, Ruff's installer used `$CARGO_HOME` or `~/.cargo/bin` for its target install directory. Now, Ruff will be installed into `$XDG_BIN_HOME`, `$XDG_DATA_HOME/../bin`, or `~/.local/bin` (in that order).

This change is only relevant to users of the standalone Ruff installer (using the shell or PowerShell script). If you installed Ruff using uv or pip, you should be unaffected.

- **Changes to the line width calculation**

Ruff now uses a new version of the [unicode-width](https://github.com/unicode-rs/unicode-width) Rust crate to calculate the line width. In very rare cases, this may lead to lines containing Unicode characters being reformatted, or being considered too long when they were not before ([`E501`](https://docs.astral.sh/ruff/rules/line-too-long/)).

## 0.7.0

- The pytest rules `PT001` and `PT023` now default to omitting the decorator parentheses when there are no arguments
Expand Down
101 changes: 100 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,104 @@
# Changelog

## 0.8.0

Check out the [blog post](https://astral.sh/blog/ruff-v0.8.0) for a migration guide and overview of the changes!

### Breaking changes

See also, the "Remapped rules" section which may result in disabled rules.

- **Default to Python 3.9**

Ruff now defaults to Python 3.9 instead of 3.8 if no explicit Python version is configured using [`ruff.target-version`](https://docs.astral.sh/ruff/settings/#target-version) or [`project.requires-python`](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#python-requires) ([#13896](https://github.com/astral-sh/ruff/pull/13896))

- **Changed location of `pydoclint` diagnostics**

[`pydoclint`](https://docs.astral.sh/ruff/rules/#pydoclint-doc) diagnostics now point to the first-line of the problematic docstring. Previously, this was not the case.

If you've opted into these preview rules but have them suppressed using
[`noqa`](https://docs.astral.sh/ruff/linter/#error-suppression) comments in
some places, this change may mean that you need to move the `noqa` suppression
comments. Most users should be unaffected by this change.

- **Use XDG (i.e. `~/.local/bin`) instead of the Cargo home directory in the standalone installer**

Previously, Ruff's installer used `$CARGO_HOME` or `~/.cargo/bin` for its target install directory. Now, Ruff will be installed into `$XDG_BIN_HOME`, `$XDG_DATA_HOME/../bin`, or `~/.local/bin` (in that order).

This change is only relevant to users of the standalone Ruff installer (using the shell or PowerShell script). If you installed Ruff using uv or pip, you should be unaffected.

- **Changes to the line width calculation**

Ruff now uses a new version of the [unicode-width](https://github.com/unicode-rs/unicode-width) Rust crate to calculate the line width. In very rare cases, this may lead to lines containing Unicode characters being reformatted, or being considered too long when they were not before ([`E501`](https://docs.astral.sh/ruff/rules/line-too-long/)).

### Removed Rules

The following deprecated rules have been removed:

- [`missing-type-self`](https://docs.astral.sh/ruff/rules/missing-type-self/) (`ANN101`)
- [`missing-type-cls`](https://docs.astral.sh/ruff/rules/missing-type-cls/) (`ANN102`)
- [`syntax-error`](https://docs.astral.sh/ruff/rules/syntax-error/) (`E999`)
- [`pytest-missing-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-missing-fixture-name-underscore/) (`PT004`)
- [`pytest-incorrect-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-incorrect-fixture-name-underscore/) (`PT005`)
- [`unpacked-list-comprehension`](https://docs.astral.sh/ruff/rules/unpacked-list-comprehension/) (`UP027`)

### Remapped rules

The following rules have been remapped to new rule codes:

- [`flake8-type-checking`](https://docs.astral.sh/ruff/rules/#flake8-type-checking-tc): `TCH` to `TC`

### Stabilization

The following rules have been stabilized and are no longer in preview:

- [`builtin-import-shadowing`](https://docs.astral.sh/ruff/rules/builtin-import-shadowing/) (`A004`)
- [`mutable-contextvar-default`](https://docs.astral.sh/ruff/rules/mutable-contextvar-default/) (`B039`)
- [`fast-api-redundant-response-model`](https://docs.astral.sh/ruff/rules/fast-api-redundant-response-model/) (`FAST001`)
- [`fast-api-non-annotated-dependency`](https://docs.astral.sh/ruff/rules/fast-api-non-annotated-dependency/) (`FAST002`)
- [`dict-index-missing-items`](https://docs.astral.sh/ruff/rules/dict-index-missing-items/) (`PLC0206`)
- [`pep484-style-positional-only-parameter`](https://docs.astral.sh/ruff/rules/pep484-style-positional-only-parameter/) (`PYI063`)
- [`redundant-final-literal`](https://docs.astral.sh/ruff/rules/redundant-final-literal/) (`PYI064`)
- [`bad-version-info-order`](https://docs.astral.sh/ruff/rules/bad-version-info-order/) (`PYI066`)
- [`parenthesize-chained-operators`](https://docs.astral.sh/ruff/rules/parenthesize-chained-operators/) (`RUF021`)
- [`unsorted-dunder-all`](https://docs.astral.sh/ruff/rules/unsorted-dunder-all/) (`RUF022`)
- [`unsorted-dunder-slots`](https://docs.astral.sh/ruff/rules/unsorted-dunder-slots/) (`RUF023`)
- [`assert-with-print-message`](https://docs.astral.sh/ruff/rules/assert-with-print-message/) (`RUF030`)
- [`unnecessary-default-type-args`](https://docs.astral.sh/ruff/rules/unnecessary-default-type-args/) (`UP043`)

The following behaviors have been stabilized:

- [`ambiguous-variable-name`](https://docs.astral.sh/ruff/rules/ambiguous-variable-name/) (`E741`): Violations in stub files are now ignored. Stub authors typically don't control variable names.
- [`printf-string-formatting`](https://docs.astral.sh/ruff/rules/printf-string-formatting/) (`UP031`): Report all `printf`-like usages even if no autofix is available

The following fixes have been stabilized:

- [`zip-instead-of-pairwise`](https://docs.astral.sh/ruff/rules/zip-instead-of-pairwise/) (`RUF007`)

### Preview features

- \[`flake8-datetimez`\] Exempt `min.time()` and `max.time()` (`DTZ901`) ([#14394](https://github.com/astral-sh/ruff/pull/14394))
- \[`flake8-pie`\] Mark fix as unsafe if the following statement is a string literal (`PIE790`) ([#14393](https://github.com/astral-sh/ruff/pull/14393))
- \[`flake8-pyi`\] New rule `redundant-none-literal` (`PYI061`) ([#14316](https://github.com/astral-sh/ruff/pull/14316))
- \[`flake8-pyi`\] Add autofix for `redundant-numeric-union` (`PYI041`) ([#14273](https://github.com/astral-sh/ruff/pull/14273))
- \[`ruff`\] New rule `map-int-version-parsing` (`RUF048`) ([#14373](https://github.com/astral-sh/ruff/pull/14373))
- \[`ruff`\] New rule `redundant-bool-literal` (`RUF038`) ([#14319](https://github.com/astral-sh/ruff/pull/14319))
- \[`ruff`\] New rule `unraw-re-pattern` (`RUF039`) ([#14446](https://github.com/astral-sh/ruff/pull/14446))
- \[`pycodestyle`\] Exempt `pytest.importorskip()` calls (`E402`) ([#14474](https://github.com/astral-sh/ruff/pull/14474))
- \[`pylint`\] Autofix suggests using sets when possible (`PLR1714`) ([#14372](https://github.com/astral-sh/ruff/pull/14372))

### Rule changes

- [`invalid-pyproject-toml`](https://docs.astral.sh/ruff/rules/invalid-pyproject-toml/) (`RUF200`): Updated to reflect the provisionally accepted [PEP 639](https://peps.python.org/pep-0639/).
- \[`flake8-pyi`\] Avoid panic in unfixable case (`PYI041`) ([#14402](https://github.com/astral-sh/ruff/pull/14402))
- \[`flake8-type-checking`\] Correctly handle quotes in subscript expression when generating an autofix ([#14371](https://github.com/astral-sh/ruff/pull/14371))
- \[`pylint`\] Suggest correct autofix for `__contains__` (`PLC2801`) ([#14424](https://github.com/astral-sh/ruff/pull/14424))

### Configuration

- Ruff now emits a warning instead of an error when a configuration [`ignore`](https://docs.astral.sh/ruff/settings/#lint_ignore)s a rule that has been removed ([#14435](https://github.com/astral-sh/ruff/pull/14435))
- Ruff now validates that `lint.flake8-import-conventions.aliases` only uses valid module names and aliases ([#14477](https://github.com/astral-sh/ruff/pull/14477))

## 0.7.4

### Preview features
Expand Down Expand Up @@ -978,7 +1077,7 @@ The following deprecated CLI commands have been removed:
### Preview features

- \[`flake8-bugbear`\] Implement `return-in-generator` (`B901`) ([#11644](https://github.com/astral-sh/ruff/pull/11644))
- \[`flake8-pyi`\] Implement `PYI063` ([#11699](https://github.com/astral-sh/ruff/pull/11699))
- \[`flake8-pyi`\] Implement `pep484-style-positional-only-parameter` (`PYI063`) ([#11699](https://github.com/astral-sh/ruff/pull/11699))
- \[`pygrep_hooks`\] Check blanket ignores via file-level pragmas (`PGH004`) ([#11540](https://github.com/astral-sh/ruff/pull/11540))

### Rule changes
Expand Down
Loading
Loading