Skip to content

⬆️ deps: Update Python dev dependencies#91

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/python-dev-dependencies
Open

⬆️ deps: Update Python dev dependencies#91
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/python-dev-dependencies

Conversation

@renovate

@renovate renovate Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
ruff (source, changelog) >=0.15.20>=0.16.0 age confidence
ty (changelog) >=0.0.56>=0.0.63 age confidence

Release Notes

astral-sh/ruff (ruff)

v0.16.0

Compare Source

Released on 2026-07-23.

Check out the blog post for a migration
guide and overview of the changes!

Breaking changes
  • Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for
    more details and the new Default Rules page for a
    full listing of the enabled rules.

  • Ruff can now format Python code blocks in Markdown files and will do this by default. See the
    documentation for more details.

  • Ruff now supports ruff: ignore comments at the ends of lines, like noqa comments, or on the line preceding a diagnostic. For example, these both suppress an unused-import (F401) diagnostic:

    import math  # ruff: ignore[F401]
    
    # ruff: ignore[F401]
    import os
  • Fixes are now shown in check and format --check output:

    ruff format --check .
    unformatted: File would be reformatted
     --> try.md:1:1
      |
    1 | ```python
      - import   math
    2 + import math
    3 | ```
      |
    
    1 file would be reformatted

    This example also shows off the Markdown formatting.

  • format --check now supports the same output formats as the linter, including the github and
    gitlab outputs for rendering annotations in CI:

    ruff format --check --output-format github .
    ::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted

    See the CLI help or documentation for the
    full list of supported formats.

  • The filename, location, end_location, fix.edits[].location, and fix.edits[].end_location
    fields in the JSON output format may now be null rather than defaulting to the empty string and
    row 1, column 1, respectively.

Stabilization

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

The following behaviors have been stabilized:

Preview features
  • [pyupgrade] Fix false positive with TypeVar default before Python 3.13 (UP040) (#​26888)
Bug fixes
  • [ruff] Fix missing check on unrecognized early bound (RUF016) (#​26986)
Rule changes
  • Insert a space after the colon in Ruff suppression comments (#​27123)
Performance
  • [pyupgrade] Speed up unnecessary-future-import (UP010) (#​27047)
Documentation
  • [ruff] Add missing period in "Why is this bad?" section (RUF200) (#​26930)
  • [flake8-simplify] Clarify os.environ behavior on Windows (SIM112) (#​26972)
  • [pydocstyle] Document fix safety (D400) (#​26971)
Contributors

v0.15.22

Compare Source

Release Notes

Released on 2026-07-16.

Preview features
  • [pycodestyle] Add an autofix for E402 (#​22212)
  • [refurb] Allow subclassing builtins in stub files (FURB189) (#​26812)
  • [ruff] Add rule to replace noqa comments with ruff:ignore (RUF105) (#​26423)
  • [ruff] Add rule to use human-readable names in ruff:ignore comments (RUF106) (#​26682)
  • [ruff] Add rule to use human-readable names in configuration selectors (RUF201) (#​26772)
Bug fixes
  • [flake8-pyi] Fix false positive in __all__ (PYI053) (#​26872)
Rule changes
  • [pylint] Ignore mutable type updates in redefined-loop-name (PLW2901) (#​25733)
Performance
  • Avoid redundant lexer token bookkeeping (#​26765)
  • Avoid redundant pending-indentation writes (#​26774)
  • Avoid unnecessary identifier lookahead (#​26525)
  • Reuse parser scratch buffers (#​26798)
Documentation
  • Document argfile support (#​26803)
  • [flake8-datetimez] Clarify naming guidance for datetime.today (DTZ002) (#​26658)
  • [pycodestyle] Document E731 fix safety (#​26847)
  • [ruff] Clarify intentional async contexts for unused-async (RUF029) (#​26641)
Contributors

Install ruff 0.15.22

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-installer.ps1 | iex"

Download ruff 0.15.22

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-riscv64gc-unknown-linux-gnu.tar.gz RISCV 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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo astral-sh/ruff

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

v0.15.21

Compare Source

Released on 2026-07-09.

Preview features
  • Add --add-ignore for adding ruff:ignore comments (#​26346)
  • [flake8-comprehensions] Drop C409 tuple comprehension preview behavior (#​25707)
  • Avoid whitespace normalization when formatting comments (#​26455)
  • [pyupgrade] Lint and fix use of deprecated abc decorators (UP051) (#​26417)
Bug fixes
  • Refine non-empty f-string detection (#​26526)
  • Detect syntax errors in individual notebook cells (#​26419)
  • [flake8-implicit-str-concat] Fix ISC003 autofix incorrectly stripping + from comments (#​26554)
Rule changes
  • [flake8-executable] Mark EXE004 fix as unsafe (#​26033)
  • [flake8-pyi] Mark PYI061 fixes as unsafe in Python files (#​26533)
  • [pydocstyle] Skip overload-with-docstring in stub files (D418) (#​26318)
Performance
  • Avoid per-token source index visitor calls (#​26506)
  • Cache parenthesized expression boundaries in the formatter (#​26344)
  • Improve performance of rendering edits in preview mode (#​26565)
  • Inline fits_element in formatter (#​26429)
  • Inline formatter printing hot paths (#​26504)
  • Lazily create builtin bindings (#​26510)
  • Skip empty trivia scans in the source indexer (#​26507)
  • Use ICF for macOS release builds (#​25780)
Formatter
  • Add --extend-exclude to ruff format (#​26372)
Documentation
  • Add "How does Ruff's import sorting compare to isort?" link to README (#​26530)
  • Fix Mozilla Firefox repository link in README (#​26537)
  • [flake8-bandit] Fix misleading docstring for mako-templates (S702) (#​26432)
  • [ruff] Fix non-triggering example for if-key-in-dict-del (RUF051) (#​26433)
Contributors
astral-sh/ty (ty)

v0.0.63

Compare Source

Released on 2026-07-23.

Core type checking
  • Handle generic stringified PEP 613 (typing.TypeAlias) type aliases (#​27092)
  • Allow equality narrowing across non-final classes (#​27031)
  • Allow interpolated string literals to be promoted to str (#​27104)
  • Fix double specialization of generic type aliases (#​27058)
  • Fix intersections of type and TypeForm (#​27099)
  • When narrowing from a match statement leads a variable x to be inferred as A & B, infer the type of x.attr as <type of A.attr> & <type of B.attr> (#​27103)
Library support
  • Pydantic: Stricter validation of sub-model fields in lax mode (#​27091)
  • Pydantic: Support special underscore parameters in BaseSettings models (#​27098)
Performance
  • Avoid exponential narrowing of optional dynamic match subjects (#​27100)
  • Avoid normalizing cached absolute file paths (#​26998)
Contributors

v0.0.62

Compare Source

Released on 2026-07-21.

Bug fixes
  • Guard recursive Protocol and TypedDict relations (#​26990)
  • Prevent stack overflows in recursive type relation checks (#​26503)
  • Recover from cancelled file indexing (#​26876)
Diagnostics
  • Avoid editing ignore comments with trailing reasons (#​26939)
  • Prefer innermost inline suppressions (#​26940)
  • Remove unused own-line ignore comments (#​27013)
  • Reuse applicable own-line suppressions in --add-ignore (#​26925)
Configuration
  • Respect rules and analysis in PEP 723 script metadata configurations (#​26671)
Core type checking
  • Accept gradual constrained TypeVar solutions (#​26965)
  • Avoid recursive TypeVarTuple alias expansion (#​27032)
  • Check inherited method conflicts via the MRO (#​27019)
  • Contextually infer custom __setattr__ assignments (#​27015)
  • Fix Callable isinstance reachability (#​26970)
  • Fix Just[float] protocol matching (#​27053)
  • Fix Self binding for classmethod __new__ constructors (#​27030)
  • Fix nested short-circuit flow snapshots (#​26956)
  • Gate TypedDict PEP 728 parameters by Python version (#​26968)
  • Improve match reachability inference around value-pattern branches (#​26979)
  • Make membership and equality narrowing consistent (#​26982)
  • Preserve constrained TypeVar equality narrowing (#​26988)
  • Preserve constrained TypeVar inequality narrowing (#​26995)
  • Preserve unsatisfiable generic call constraints (#​26964)
  • Respect bounded typevars in union inference (#​27023)
  • Respect metaclass __setattr__ for class attributes (#​27000)
Performance
  • Cache non-terminal-call reachability prefixes (#​26810)
  • Cache protocol Self binding (#​26997)
  • Cache sparse reachability checkpoints (#​26811)
  • Defer statement-call narrowing gates (#​26793)
Contributors

v0.0.61

Compare Source

Released on 2026-07-17.

Bug fixes
  • Avoid recursive protocol structural comparisons (#​26721)
LSP server
  • Render Google docstrings as structured Markdown (#​26599)
Library support
  • Pydantic: Collect field metadata through subscripted generic Annotated aliases (#​26885)
Diagnostics
  • Avoid extending own-line suppressions in --add-ignore (#​26808)
Core type checking
  • Derive descriptor setter domains for protocols (#​26683)
  • Enforce declared receiver TypeVar domains (#​26863)
  • Infer isinstance results for aliases and type variables (#​26961)
  • Infer isinstance results for fixed class tuples (#​26935)
  • Narrow inline list and set membership checks (#​26955)
  • Narrow tagged unions by tag truthiness (#​26887)
  • Narrow walrus expression values (#​26949)
  • Project intersections in to_instance (#​26892)
  • Remove inferable TypeVar artifacts recursively (#​26787)
  • Respect mixin receiver domains in method overrides (#​26941)
  • Support TypeVarTuple and Unpack (#​25240)
Performance
  • Deduplicate completion labels (#​26890)
  • Only collect expected types for files open in the editor (#​25546)
  • Parallelize subtype hierarchy search (#​26875)
  • Share heap-backed parser names with CharStr (#​26594)
  • Use the new incremental checker from the ignore crate (#​26933)
Contributors

v0.0.60

Compare Source

Released on 2026-07-15.

Bug fixes
  • Expand transparent callable workaround with overloads and Awaitable[T] (#​26761)
  • Separate type-mapping caches by transformation mode (#​26857)
  • Avoid recursive protocol union redundancy checks (#​26689)
  • Handle recursive protocols in redundant-cast checks (#​26708)
LSP server
  • Prevent type that is written with a code span from being incorrectly re-wrapped during docstring Markdown rendering (#​26723)
Library support
  • Pydantic: Support populate_by_name and custom initializers (#​26764)
  • Pydantic: Warn about immediately discarded extra arguments (#​26762)
Diagnostics
  • Narrow TypeGuard keyword arguments and remove invalid-type-guard-call (#​26809)
  • Support own-line suppression comments (#​26785)
Core type checking
  • Derive descriptor setter domains for protocols (#​26683)
  • Handle cycles in derived constraint relations (#​26814)
  • Implement unified generic call inference (#​26141)
  • Preserve constraints from bound receivers (#​26776)
  • Project exact-length narrowing through TypeVars (#​26852)
  • Resolve PEP 695 aliases in type[...] annotations (#​26842)
  • Retain sequence pattern narrowing in successful match cases (#​26807)
  • Support class and static protocol methods (#​26574)
  • Support class objects satisfying instance-method protocols (#​26789)
  • Support type[Protocol] (#​26649)
  • Sync vendored typeshed stubs (#​26840). Typeshed diff
  • Treat transparent callable decorators consistently in class assignments (#​26720)
Performance
  • Compare overloaded protocol method returns pairwise (#​26684)
  • Extend PathBounds fast-path to support both upper and lower bounds (#​26782)
  • Skip Self type scans for non-generic instances (#​26703)
Contributors

v0.0.59

Compare Source

Released on 2026-07-12.

Bug fixes
  • Guard descriptor classification cycles (#​26690)
  • Respect init=False in dataclass field-order checks (#​26749)
  • Avoid duplicate diagnostics for overloaded TypeIs (#​26716)
Library support
  • Pydantic: Support custom __init__ methods (#​26699)
  • Pydantic: Support field metadata in Annotated (#​26650)
Core type checking
  • Allow unsound equality-based narrowing for builtins (#​26414)
  • Bind Self in implicit dunder calls (#​26711)
  • Correct protocol method receiver binding (#​26701)
  • Exempt ParamSpec callables from the dunder descriptor heuristic (#​26696)
  • Remove transitive TypeVar artifacts during collection inference (#​26714)
LSP server
  • Avoid broad invalidation from file check eligibility (#​26741)
  • Correct how we expand tabs in docstrings (#​26679)
  • Resolve ambiguity in Google-style docstring parsing in favour of observations from popular projects (#​26673)
CLI
  • Avoid allocation for every stdout write (#​26698)
  • Buffer diagnostic output (#​26702)
Performance
  • Cache generic context (#​26745)
  • Cache known class instances (#​26746)
  • Reuse common TypedDict constraints through intersections (#​26747)
  • Use purpose-specific types for completion and module text (#​26664)
Contributors

v0.0.58

Compare Source

Released on 2026-07-09.

Bug fixes
  • Fix protocol matching for class variables (#​26669)
  • Fix reflected binary dispatch for runtime classes (#​26623)
  • Support cached properties in protocols (#​26681)
Diagnostics
  • Add assignability context to upper-bound diagnostics (#​26645)
  • Add blanket ignore comment rule (#​26426)
  • Improve protocol attribute diagnostic context (#​26644)
Library support
  • Pydantic: Add fields from mixin classes (#​26631)
  • Pydantic: Add support for validate_by_{name,alias} (#​26598)
  • Pydantic: Add support for validation_alias (#​26629)
  • Pydantic: Fix float conversion in unions (#​26655)
  • Pydantic: Ignore private attributes (#​26630)
  • Pydantic: Make BaseSettings fields optional by default (#​26628)
  • Pydantic: Recognize frozen models via config (#​26648)
  • Pydantic: Support dict model configurations (#​26632)
  • Pydantic: Support validation of RootModel fields (#​26634)
  • Pydantic: Understand ellipsis as providing no default value (#​26637)
Core type checking
  • Gate membership narrowing on __contains__ semantics (#​25964)
  • Handle callable classes in solver (#​26090)
  • Infer ModuleType.__doc__ as str in the presence of a docstring (#​26505)
  • Infer metaclass-declared attributes on class instances (#​26512)
  • Respect user stub overlays during module resolution (#​26123)
Performance
  • Avoid allocating decorated parameter names (#​26666)
  • Optimize TypeCollector (#​26593)
Contributors

v0.0.57

Compare Source

Released on 2026-07-07.

Bug fixes
  • Detect async generator expressions containing await (#​26568)
  • Preserve exhaustive gradual match patterns (#​26523)
LSP server
  • Fix selection range behavior for strings (#​26532)
  • Recognize that dedent ends doctest block when parsing docstrings for signature help (#​26552)
  • Render reStructuredText hyperlinks as Markdown in hover docstrings (#​25907)
  • Update __slots__ string when renaming an attribute (#​26438)
Documentation
  • Document PYTHONPATH support in module discovery (#​3889)
Library support
  • Add support for extra arguments in Pydantic model constructors (#​26520)
  • Detect Pydantic model configurations (#​26573)
  • Distinguish lax and strict mode for Pydantic models (#​26587)
Core type checking
  • Fix subtyping/assignability for @property protocol members (#​25332)
  • Narrow isinstance against intersections containing invalid member (#​26545)
  • Narrow match subjects through structural patterns (#​25942)
  • Preserve generic functools.partial signatures (#​24583)
  • Preserve generic variadic callback semantics (#​26521)
  • Preserve invariant materialization on generic specializations (#​26578)
  • Preserve literal enum member names (#​26592)
Performance
  • Avoid exponential invariant constraint paths (#​26538)
  • Batch parallel jobs when finding references (#​26534)
  • Build module names directly in CompactString (#​26546)
  • Elide default use-def state (#​26398)
  • Reuse owned buffers for string literals (#​26547)
  • Use ICF for macOS release builds (#​3709)
  • Use cached class literal lookup for is_subclass_of (#​26585)
Contributors

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • Between 12:00 AM and 03:59 AM, only on Monday (* 0-3 * * 1)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

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


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

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot enabled auto-merge July 20, 2026 03:48
@renovate
renovate Bot force-pushed the renovate/python-dev-dependencies branch from e1227c5 to ce540ab Compare July 22, 2026 09:04
@renovate renovate Bot changed the title ⬆️ deps: Update Python dev dependencies ⬆️ deps: Update dependency ty to >=0.0.61 Jul 22, 2026
@renovate
renovate Bot force-pushed the renovate/python-dev-dependencies branch from ce540ab to 31e2fe3 Compare July 22, 2026 17:43
@renovate renovate Bot changed the title ⬆️ deps: Update dependency ty to >=0.0.61 ⬆️ deps: Update Python dev dependencies Jul 22, 2026
@renovate
renovate Bot force-pushed the renovate/python-dev-dependencies branch 3 times, most recently from f87de18 to b6aef35 Compare July 24, 2026 23:54
@renovate renovate Bot changed the title ⬆️ deps: Update Python dev dependencies ⬆️ deps: Update dependency ty to >=0.0.63 Jul 24, 2026
@renovate
renovate Bot force-pushed the renovate/python-dev-dependencies branch from b6aef35 to 2428387 Compare July 25, 2026 00:44
@renovate renovate Bot changed the title ⬆️ deps: Update dependency ty to >=0.0.63 ⬆️ deps: Update Python dev dependencies Jul 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants