Skip to content

build(deps): bump ruff from 0.15.0 to 0.15.8#20776

Open
dependabot[bot] wants to merge 3 commits intomainfrom
dependabot/pip/ruff-0.15.8
Open

build(deps): bump ruff from 0.15.0 to 0.15.8#20776
dependabot[bot] wants to merge 3 commits intomainfrom
dependabot/pip/ruff-0.15.8

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot bot commented on behalf of github Apr 7, 2026

Bumps ruff from 0.15.0 to 0.15.8.

Release notes

Sourced from ruff's releases.

0.15.8

Release Notes

Released on 2026-03-26.

Preview features

  • [ruff] New rule unnecessary-if (RUF050) (#24114)
  • [ruff] New rule useless-finally (RUF072) (#24165)
  • [ruff] New rule f-string-percent-format (RUF073): warn when using % operator on an f-string (#24162)
  • [pyflakes] Recognize frozendict as a builtin for Python 3.15+ (#24100)

Bug fixes

  • [flake8-async] Use fully-qualified anyio.lowlevel import in autofix (ASYNC115) (#24166)
  • [flake8-bandit] Check tuple arguments for partial paths in S607 (#24080)
  • [pyflakes] Skip undefined-name (F821) for conditionally deleted variables (#24088)
  • E501/W505/formatter: Exclude nested pragma comments from line width calculation (#24071)
  • Fix %foo? parsing in IPython assignment expressions (#24152)
  • analyze graph: resolve string imports that reference attributes, not just modules (#24058)

Rule changes

  • [eradicate] ignore ty: ignore comments in ERA001 (#24192)
  • [flake8-bandit] Treat sys.executable as trusted input in S603 (#24106)
  • [flake8-self] Recognize Self annotation and self assignment in SLF001 (#24144)
  • [pyflakes] F507: Fix false negative for non-tuple RHS in %-formatting (#24142)
  • [refurb] Parenthesize generator arguments in FURB142 fixer (#24200)

Performance

  • Speed up diagnostic rendering (#24146)

Server

  • Warn when Markdown files are skipped due to preview being disabled (#24150)

Documentation

  • Clarify extend-ignore and extend-select settings documentation (#24064)
  • Mention AI policy in PR template (#24198)

Other changes

  • Use trusted publishing for NPM packages (#24171)

Contributors

... (truncated)

Changelog

Sourced from ruff's changelog.

0.15.8

Released on 2026-03-26.

Preview features

  • [ruff] New rule unnecessary-if (RUF050) (#24114)
  • [ruff] New rule useless-finally (RUF072) (#24165)
  • [ruff] New rule f-string-percent-format (RUF073): warn when using % operator on an f-string (#24162)
  • [pyflakes] Recognize frozendict as a builtin for Python 3.15+ (#24100)

Bug fixes

  • [flake8-async] Use fully-qualified anyio.lowlevel import in autofix (ASYNC115) (#24166)
  • [flake8-bandit] Check tuple arguments for partial paths in S607 (#24080)
  • [pyflakes] Skip undefined-name (F821) for conditionally deleted variables (#24088)
  • E501/W505/formatter: Exclude nested pragma comments from line width calculation (#24071)
  • Fix %foo? parsing in IPython assignment expressions (#24152)
  • analyze graph: resolve string imports that reference attributes, not just modules (#24058)

Rule changes

  • [eradicate] ignore ty: ignore comments in ERA001 (#24192)
  • [flake8-bandit] Treat sys.executable as trusted input in S603 (#24106)
  • [flake8-self] Recognize Self annotation and self assignment in SLF001 (#24144)
  • [pyflakes] F507: Fix false negative for non-tuple RHS in %-formatting (#24142)
  • [refurb] Parenthesize generator arguments in FURB142 fixer (#24200)

Performance

  • Speed up diagnostic rendering (#24146)

Server

  • Warn when Markdown files are skipped due to preview being disabled (#24150)

Documentation

  • Clarify extend-ignore and extend-select settings documentation (#24064)
  • Mention AI policy in PR template (#24198)

Other changes

  • Use trusted publishing for NPM packages (#24171)

Contributors

... (truncated)

Commits
  • c2a8815 Release 0.15.8 (#24217)
  • d444d52 [ty] Infer lambda expressions with Callable type context (#22633)
  • 9622285 [ty] Autocomplete arguments if in arguments node (#24167)
  • d812662 Use the release environment in publish-docs (#24214)
  • eda2355 [ty] Show Final source in final assignment diagnostic (#24194)
  • 929eb52 [ty] Enforce Final attribute assignment rules for annotated and augmented wri...
  • 34998be [ty] Fix typo in comment (#24211)
  • 560aca0 [ty] Minor simplifications to some benchmark code (#24209)
  • 683bae5 [ty] Track non-terminal-call constraints in global scope (#23245)
  • 4704c2a [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Note

Low Risk
Low risk dependency bump plus minor refactors to test fixtures/context managers and a float comparison tweak; no production logic changes beyond a comment/cleanup.

Overview
Bumps the dev linter/formatter dependency ruff from 0.15.0 to 0.15.8 (lockfile update).

Applies small ruff-driven cleanups: simplify several fixtures/context managers to yield constructed objects directly (avoiding temporary locals), relax a mempool fee estimator test to use pytest.approx(0.0) for a float assertion, and adjust a long comment in plotting/cache.py to avoid an E501 suppression.

Reviewed by Cursor Bugbot for commit 91df003. Bugbot is set up for automated code reviews on this repo. Configure here.

Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.0 to 0.15.8.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.0...0.15.8)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added Changed Required label for PR that categorizes merge commit message as "Changed" for changelog dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Apr 7, 2026
@dependabot dependabot bot requested a review from a team as a code owner April 7, 2026 20:29
@dependabot dependabot bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code Changed Required label for PR that categorizes merge commit message as "Changed" for changelog labels Apr 7, 2026
@socket-security
Copy link
Copy Markdown

socket-security bot commented Apr 7, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedpypi/​ruff@​0.15.0 ⏵ 0.15.8100 +1100100100100

View full report

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

🤖 Cursor Dependency Analysis

Supply-Chain Malware Review

Verifying the lockfile and dependency declaration for consistency.

Verdict: benign

Evidence

  1. Package identity — The dependency is ruff from Astral, a widely used linter/formatter. The bump is 0.15.0 → 0.15.8 on the same major/minor line, matching documented releases.

  2. Lockfile / integritypoetry.lock pins ruff 0.15.8 with normal PyPI sha256: entries for platform wheels. That matches standard Poetry lock format, not ad-hoc or missing hashes.

  3. Scanner vs. interpretation — The report is warn-only and scans a large upstream tag range (ruff’s own repo), not a proof that the installed wheel is trojaned. The listed Unicode/confusable hits are expected in upstream ruff (README emoji, linter tests for confusable characters, i18n snippets). That is not the same as invisible-Unicode malware injected into this repo’s application code.

  4. Checklist — No indication of obfuscated eval/exec, unexpected hosts, persistence paths, or lifecycle scripts on a Python wheel dependency. Ruff is a dev optional extra, not runtime node preinstall/postinstall. The PR description aligns with lockfile + lint-driven test/config tweaks, not suspicious workflow or vendor tree changes.

Actionable note: Treat scanner Unicode/confusable hits on upstream ruff source as noise for this bump unless you see similar patterns in first-party files outside known upstream paths. No supply-chain red flags warrant blocking this update on malware grounds.

Compatibility Analysis

Searching the repository for ruff usage and reviewing dependency configuration.

1) Where ruff is used (chia-blockchain)

Location Role
pyproject.toml Optional dev dependency: ruff = { version = ">=0.8.1", optional = true } in the dev extra
poetry.lock Locked version for installs with --extras dev / dev envs
ruff.toml Project config: line-length = 120, [lint] preview = true, select = ["ALL"], large ignore list
.pre-commit-config.yaml Local hooks: ./activated.py ruff format and ./activated.py ruff check --fix
.github/workflows/upload-pypi-source.yml CI: ruff format --check --diff .

There is no application/runtime use: no import ruff under chia/ (only vendored .upstream-dependency fixtures).


2) Overlap with upstream changes (0.15.0 → 0.15.8)

  • Python API: Not applicable; chia does not call the ruff package as a library.
  • CLI / config: You only rely on ruff check, ruff format, and ruff.toml / discovery. Upstream changes (e.g. analyze graph, ruff server Markdown warning, IPython parsing) are outside your normal pre-commit and ruff format --check paths.
  • Rules called out in the release notes: Items like S603, S607, FURB142 are already broadly ignored in ruff.toml (S603/S607 explicitly; FURB as a whole). E501/W505 pragma behavior is a small formatter/lint interaction fix, not a breaking API change.
  • New preview rules (e.g. RUF050, RUF072, RUF073): With preview = true and select = ["ALL"], new RUF rules are the main place a bump could surface new diagnostics. That is a lint surface change, not a runtime one; the PR description already notes lint-driven edits, which is the expected response.

3) Risks / unknowns

  • Low: ruff is dev-only; it is not installed for normal end-user installs unless dev extras are used.
  • Residual: Any missed new rule hit under ALL + preview could still fail ruff check in pre-commit/CI until fixed or ignored — worth confirming green CI on the PR branch.
  • Unrelated: .upstream-dependency is a vendored ruff source tree for review tooling, not how chia runs ruff day to day.

4) Recommendation

Merge (or merge-with-caveats only if CI has not run yet: caveat = confirm ruff check / ruff format --check are green on the PR).

This is a patch bump within 0.15.x, tooling-only for this repo, and the release notes align with bugfixes + optional new lint coverage, which you already mitigate with a large ignore list and targeted PR fixes.


Malware Scan Summary

  • Status: warn
  • Warn only mode: true
  • Changed upstream files scanned: 1222
  • Resolution strategy: tag_range
  • Changed node/vendor paths: 0
  • Changed lockfiles: 3
  • Resolved upstream range: ce5f7b6127a5d684e96fd0f8e387f73c41c7a1b0..c2a8815842f9dc5d24ec19385eae0f1a7188b0d9
  • Resolved refs: from=ce5f7b6127a5d684e96fd0f8e387f73c41c7a1b0 to=c2a8815842f9dc5d24ec19385eae0f1a7188b0d9
  • Unicode findings (post-allowlist): 14
  • Confusable findings (post-allowlist): 7
  • IOC findings (post-allowlist): 0
  • Heuristic findings (post-allowlist): 270

Top findings

  • scripts/ty_benchmark/src/benchmark/snapshot.py:142 unicode :: print("\n⚠️ Some snapshots don't match. Run with --accept to update them.")
  • scripts/memory_report.py:116 unicode :: return "⬇️"
  • scripts/conformance.py:776 unicode :: status = "❌ Newly Failing ☹️"
  • scripts/conformance.py:787 unicode :: status = "➡️ Neutral"
  • crates/ty_python_semantic/src/types/set_theoretic/builder.rs:320 unicode :: /// If the value ​​is defined recursively, widening is performed from fewer literal elements,
  • crates/ty_python_semantic/src/types/set_theoretic/builder.rs:323 unicode :: /// If the value ​​is defined non-recursively, the fixed-point iteration will converge in one go,
  • crates/ty_python_semantic/resources/mdtest/narrow/complex_target.md:146 unicode :: # but different values ​​may be reassigned to x and y in another place.
  • crates/ty_python_semantic/resources/mdtest/typed_dict.md:284 unicode :: Also, the value types ​​declared in a TypedDict affect generic call inference:
  • README.md:28 unicode :: - ⚡️ 10-100x faster than existing linters (like Flake8) and formatters (like Black)
  • README.md:30 unicode :: - 🛠️ pyproject.toml support
  • README.md:32 unicode :: - ⚖️ Drop-in parity with [Flake8](https://docs.astral.sh/ruff/faq/#how-does-ruffs-linter-compare-to-flake8), isort, and [Black](https://docs.astral.sh/ruff/faq/#how-does-ruffs-formatter-compare-to-black)
  • README.md:37 unicode :: - ⌨️ First-party [editor integrations](https://docs.astral.sh/ruff/editors) for [VS Code](https://github.com/astral-sh/ruff-vscode) and [more](https://docs.astral.sh/ruff/editors/setup)
  • crates/ruff_dev/src/generate_rules_table.rs:17 unicode :: const FIX_SYMBOL: &str = "🛠️";
  • crates/ruff_dev/src/generate_rules_table.rs:20 unicode :: const WARNING_SYMBOL: &str = "⚠️";
  • crates/ruff_linter/src/rules/ruff/mod.rs:417 confusable :: allowed_confusables: FxHashSet::from_iter(['−', 'ρ', '∗']),
  • crates/ruff_linter/src/rules/ruff/mod.rs:435 confusable :: allowed_confusables: FxHashSet::from_iter(['−', 'ρ', '∗']),
  • crates/ruff_linter/src/rules/ruff/mod.rs:444 confusable :: allowed_confusables: FxHashSet::from_iter(['−', 'ρ', '∗']),
  • crates/ruff_linter/src/rules/ruff/mod.rs:461 confusable :: allowed_confusables: FxHashSet::from_iter(['−', 'ρ', '∗']),
  • crates/ruff_workspace/src/options.rs:660 confusable :: allowed-confusables = ["−", "ρ", "∗"]
  • crates/ruff_annotate_snippets/tests/formatter.rs:103 confusable :: Snippet::source("こんにちは、新しいWorld!")

@emlowe emlowe removed the Changed Required label for PR that categorizes merge commit message as "Changed" for changelog label Apr 7, 2026
@coveralls-official
Copy link
Copy Markdown

Coverage Report for CI Build 24139766252

Warning

Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes.
Quick fix: rebase this PR. Learn more →

Coverage increased (+0.009%) to 91.172%

Details

  • Coverage increased (+0.009%) from the base build.
  • Patch coverage: 5 of 5 lines across 5 files are fully covered (100%).
  • 27 coverage regressions across 8 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

27 previously-covered lines in 8 files lost coverage.

File Lines Losing Coverage Coverage
chia/_tests/core/data_layer/test_data_store.py 8 99.45%
chia/introducer/introducer_api.py 5 81.48%
chia/util/config.py 5 82.1%
chia/server/node_discovery.py 4 80.56%
chia/full_node/full_node_api.py 2 86.56%
chia/server/ws_connection.py 1 91.62%
chia/timelord/timelord_api.py 1 93.02%
chia/wallet/wallet_node.py 1 86.32%

Coverage Stats

Coverage Status
Relevant Lines: 116754
Covered Lines: 106605
Line Coverage: 91.31%
Relevant Branches: 11674
Covered Branches: 10485
Branch Coverage: 89.81%
Branches in Coverage %: Yes
Coverage Strength: 1.83 hits per line

💛 - Coveralls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant