Skip to content

chore(deps): update python dependencies

David Drugeon-Hamon requested to merge renovate/python-deps into develop

This MR contains the following updates:

Package Type Update Change
pydantic (changelog) dependencies minor 2.6.4 -> 2.7.1
ruff (source, changelog) dev minor ^0.3.0 -> ^0.4.0

Release Notes

pydantic/pydantic (pydantic)

v2.7.1

Compare Source

GitHub release

What's Changed
Packaging
New Features
Changes
Fixes
New Contributors

v2.7.0

Compare Source

GitHub release

The code released in v2.7.0 is practically identical to that of v2.7.0b1.

What's Changed
Packaging
New Features

Finalized in v2.7.0, rather than v2.7.0b1:

Changes
Performance
Fixes
New Contributors
astral-sh/ruff (ruff)

v0.4.1

Compare Source

Preview features
  • [pylint] Implement invalid-hash-returned (PLE0309) (#​10961)
  • [pylint] Implement invalid-index-returned (PLE0305) (#​10962)
Bug fixes
  • [pylint] Allow NoReturn-like functions for __str__, __len__, etc. (PLE0307) (#​11017)
  • Parser: Use empty range when there's "gap" in token source (#​11032)
  • [ruff] Ignore stub functions in unused-async (RUF029) (#​11026)
  • Parser: Expect indented case block instead of match stmt (#​11033)

v0.4.0

Compare Source

A new, hand-written parser

Ruff's new parser is >2x faster, which translates to a 20-40% speedup for all linting and formatting invocations. There's a lot to say about this exciting change, so check out the blog post for more details!

See #​10036 for implementation details.

A new language server in Rust

With this release, we also want to highlight our new language server. ruff server is a Rust-powered language server that comes built-in with Ruff. It can be used with any editor that supports the Language Server Protocol (LSP). It uses a multi-threaded, lock-free architecture inspired by rust-analyzer and it will open the door for a lot of exciting features. It’s also faster than our previous Python-based language server -- but you probably guessed that already.

ruff server is only in alpha, but it has a lot of features that you can try out today:

  • Lints Python files automatically and shows quick-fixes when available
  • Formats Python files, with support for range formatting
  • Comes with commands for quickly performing actions: ruff.applyAutofix, ruff.applyFormat, and ruff.applyOrganizeImports
  • Supports source.fixAll and source.organizeImports source actions
  • Automatically reloads your project configuration when you change it

To setup ruff server with your editor, refer to the README.md.

Preview features
  • [pycodestyle] Do not trigger E3 rules on defs following a function/method with a dummy body (#​10704)
  • [pylint] Implement invalid-bytes-returned (E0308) (#​10959)
  • [pylint] Implement invalid-length-returned (E0303) (#​10963)
  • [pylint] Implement self-cls-assignment (W0642) (#​9267)
  • [pylint] Omit stubs from invalid-bool and invalid-str-return-type (#​11008)
  • [ruff] New rule unused-async (RUF029) to detect unneeded async keywords on functions (#​9966)
Rule changes
  • [flake8-bandit] Allow urllib.request.urlopen calls with static Request argument (S310) (#​10964)
  • [flake8-bugbear] Treat raise NotImplemented-only bodies as stub functions (B006) (#​10990)
  • [flake8-slots] Respect same-file Enum subclasses (SLOT000) (#​11006)
  • [pylint] Support inverted comparisons (PLR1730) (#​10920)
Linter
  • Improve handling of builtin symbols in linter rules (#​10919)
  • Improve display of rules in --show-settings (#​11003)
  • Improve inference capabilities of the BuiltinTypeChecker (#​10976)
  • Resolve classes and functions relative to script name (#​10965)
  • Improve performance of RuleTable::any_enabled (#​10971)
Server

This section is devoted to updates for our new language server, written in Rust.

  • Enable ruff-specific source actions (#​10916)
  • Refreshes diagnostics for open files when file configuration is changed (#​10988)
  • Important errors are now shown as popups (#​10951)
  • Introduce settings for directly configuring the linter and formatter (#​10984)
  • Resolve configuration for each document individually (#​10950)
  • Write a setup guide for Neovim (#​10987)
Configuration
  • Add RUFF_OUTPUT_FILE environment variable support (#​10992)
Bug fixes
  • Avoid non-augmented-assignment for reversed, non-commutative operators (PLR6104) (#​10909)
  • Limit commutative non-augmented-assignments to primitive data types (PLR6104) (#​10912)
  • Respect per-file-ignores for RUF100 on blanket # noqa (#​10908)
  • Consider if expression for parenthesized with items parsing (#​11010)
  • Consider binary expr for parenthesized with items parsing (#​11012)
  • Reset FOR_TARGET context for all kinds of parentheses (#​11009)

v0.3.7

Compare Source

Preview features
  • [flake8-bugbear] Implement loop-iterator-mutation (B909) (#​9578)
  • [pylint] Implement rule to prefer augmented assignment (PLR6104) (#​9932)
Bug fixes
  • Avoid TOCTOU errors in cache initialization (#​10884)
  • [pylint] Recode nan-comparison rule to W0177 (#​10894)
  • [pylint] Reverse min-max logic in if-stmt-min-max (#​10890)

v0.3.6

Compare Source

Preview features
  • [pylint] Implement bad-staticmethod-argument (PLW0211) (#​10781)
  • [pylint] Implement if-stmt-min-max (PLR1730, PLR1731) (#​10002)
  • [pyupgrade] Replace str,Enum multiple inheritance with StrEnum UP042 (#​10713)
  • [refurb] Implement if-expr-instead-of-or-operator (FURB110) (#​10687)
  • [refurb] Implement int-on-sliced-str (FURB166) (#​10650)
  • [refurb] Implement write-whole-file (FURB103) (#​10802)
  • [refurb] Support itemgetter in reimplemented-operator (FURB118) (#​10526)
  • [flake8_comprehensions] Add sum/min/max to unnecessary comprehension check (C419) (#​10759)
Rule changes
  • [pydocstyle] Require capitalizing docstrings where the first sentence is a single word (D403) (#​10776)
  • [pycodestyle] Ignore annotated lambdas in class scopes (E731) (#​10720)
  • [flake8-pyi] Various improvements to PYI034 (#​10807)
  • [flake8-slots] Flag subclasses of call-based typing.NamedTuples as well as subclasses of collections.namedtuple() (SLOT002) (#​10808)
  • [pyflakes] Allow forward references in class bases in stub files (F821) (#​10779)
  • [pygrep-hooks] Improve blanket-noqa error message (PGH004) (#​10851)
CLI
Configuration
  • Support negated patterns in [extend-]per-file-ignores (#​10852)
Bug fixes
  • [flake8-import-conventions] Accept non-aliased (but correct) import in unconventional-import-alias (ICN001) (#​10729)
  • [flake8-quotes] Add semantic model flag when inside f-string replacement field (#​10766)
  • [pep8-naming] Recursively resolve TypeDicts for N815 violations (#​10719)
  • [flake8-quotes] Respect Q00* ignores in flake8-quotes rules (#​10728)
  • [flake8-simplify] Show negated condition in needless-bool diagnostics (SIM103) (#​10854)
  • [ruff] Use within-scope shadowed bindings in asyncio-dangling-task (RUF006) (#​10793)
  • [flake8-pytest-style] Fix single-tuple conversion in pytest-parametrize-values-wrong-type (PT007) (#​10862)
  • [flake8-return] Ignore assignments to annotated variables in unnecessary-assign (RET504) (#​10741)
  • [refurb] Do not allow any keyword arguments for read-whole-file in rb mode (FURB101) (#​10803)
  • [pylint] Don't recommend decorating staticmethods with @singledispatch (PLE1519, PLE1520) (#​10637)
  • [pydocstyle] Use section name range for all section-related docstring diagnostics (#​10740)
  • Respect # noqa directives on __all__ openers (#​10798)

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This MR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this MR, check this box

This MR has been generated by Renovate Bot.

Merge request reports