github astral-sh/ruff 0.7.4

3 hours ago

Release Notes

Preview features

  • [flake8-datetimez] Detect usages of datetime.max/datetime.min (DTZ901) (#14288)
  • [flake8-logging] Implement root-logger-calls (LOG015) (#14302)
  • [flake8-no-pep420] Detect empty implicit namespace packages (INP001) (#14236)
  • [flake8-pyi] Add "replace with Self" fix (PYI019) (#14238)
  • [perflint] Implement quick-fix for manual-list-comprehension (PERF401) (#13919)
  • [pylint] Implement shallow-copy-environ (W1507) (#14241)
  • [ruff] Implement none-not-at-end-of-union (RUF036) (#14314)
  • [ruff] Implementation unsafe-markup-call from flake8-markupsafe plugin (RUF035) (#14224)
  • [ruff] Report problems for attrs dataclasses (RUF008, RUF009) (#14327)

Rule changes

  • [flake8-boolean-trap] Exclude dunder methods that define operators (FBT001) (#14203)
  • [flake8-pyi] Add "replace with Self" fix (PYI034) (#14217)
  • [flake8-pyi] Always autofix duplicate-union-members (PYI016) (#14270)
  • [flake8-pyi] Improve autofix for nested and mixed type unions for unnecessary-type-union (PYI055) (#14272)
  • [flake8-pyi] Mark fix as unsafe when type annotation contains comments for duplicate-literal-member (PYI062) (#14268)

Server

  • Use the current working directory to resolve settings from ruff.configuration (#14352)

Bug fixes

  • Avoid conflicts between PLC014 (useless-import-alias) and I002 (missing-required-import) by considering lint.isort.required-imports for PLC014 (#14287)
  • [flake8-type-checking] Skip quoting annotation if it becomes invalid syntax (TCH001)
  • [flake8-pyi] Avoid using typing.Self in stub files pre-Python 3.11 (PYI034) (#14230)
  • [flake8-pytest-style] Flag pytest.raises call with keyword argument expected_exception (PT011) (#14298)
  • [flake8-simplify] Infer "unknown" truthiness for literal iterables whose items are all unpacks (SIM222) (#14263)
  • [flake8-type-checking] Fix false positives for typing.Annotated (TCH001) (#14311)
  • [pylint] Allow await at the top-level scope of a notebook (PLE1142) (#14225)
  • [pylint] Fix miscellaneous issues in await-outside-async detection (PLE1142) (#14218)
  • [pyupgrade] Avoid applying PEP 646 rewrites in invalid contexts (UP044) (#14234)
  • [pyupgrade] Detect permutations in redundant open modes (UP015) (#14255)
  • [refurb] Avoid triggering hardcoded-string-charset for reordered sets (FURB156) (#14233)
  • [refurb] Further special cases added to verbose-decimal-constructor (FURB157) (#14216)
  • [refurb] Use UserString instead of non-existent UserStr (FURB189) (#14209)
  • [ruff] Avoid treating lowercase letters as # noqa codes (RUF100) (#14229)
  • [ruff] Do not report when Optional has no type arguments (RUF013) (#14181)

Documentation

  • Add "Notebook behavior" section for F704, PLE1142 (#14266)
  • Document comment policy around fix safety (#14300)

Contributors

Install ruff 0.7.4

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.7.4/ruff-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.7.4/ruff-installer.ps1 | iex"

Download ruff 0.7.4

File Platform Checksum
ruff-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
ruff-x86_64-apple-darwin.tar.gz Intel macOS checksum
ruff-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
ruff-i686-pc-windows-msvc.zip x86 Windows checksum
ruff-x86_64-pc-windows-msvc.zip x64 Windows checksum
ruff-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
ruff-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
ruff-powerpc64-unknown-linux-gnu.tar.gz PPC64 Linux checksum
ruff-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
ruff-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
ruff-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
ruff-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
ruff-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
ruff-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
ruff-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
ruff-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
ruff-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

Don't miss a new ruff release

NewReleases is sending notifications on new releases.