chore(deps): update dependency ruff to v0.16.8 - #958
Conversation
fe7968c to
2d36db8
Compare
2d36db8 to
0e99d22
Compare
0e99d22 to
ad25d57
Compare
ad25d57 to
3d4e218
Compare
de1eaa0 to
2514b39
Compare
a3a16a9 to
241900a
Compare
2f278af to
c16e02f
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
b0bd734 to
094f7fb
Compare
094f7fb to
bd7a9b0
Compare
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
222d1f8 to
34ea550
Compare
Run ruff 0.16.8 --fix across the python/ tree (830 auto-fixes), then manually resolve the violations that required judgment: - SIM117: merge nested `with`/`async with` statements (including yield and async boundaries that ruff could not auto-fix) - DTZ005/DTZ001: add tz=UTC to datetime.now() calls and default_factory - PYI034: use Self as return type for __aiter__ - G201/TRY401: replace logger.error(..., exc_info=True) with logger.exception(), drop redundant exception arg - BLE001 in session.py: narrow inner fallback except to AttributeError - BLE001 in telemetry.py: noqa on intentional broad catches (logging handler emit and gRPC error sink) - S110/BLE001 in tests: replace try/except/pass with contextlib.suppress for deliberate exception swallowing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Apply ruff --unsafe-fixes (136 more auto-fixes), then manually resolve every remaining mechanical violation across the python/ tree: - SIM117 (189): merge nested with/async with statements - DTZ001/005 (61): add tz=UTC to all datetime() and datetime.now() calls - RUF012 (11): add ClassVar annotation to mutable class attributes - SIM102 (6): combine nested if statements with and - SIM115 (5): wrap open() calls in context managers - UP045 (4): Optional[X] -> X | None - SIM103 (2): return bool expression directly - UP031 (2): percent format -> f-string - TRY401 (2): drop redundant exception object in logger.exception() - RUF059 (2): rename unused unpacked variables to _ - UP007/RUF013/PERF102 and other misc upgrades (auto-fixed via unsafe) Remaining violations (BLE001, PLW1510, TRY002, ASYNC220/230, TRY004, EXE001/002, PLE0704, PLW*, PLR1704, ASYNC100) all require case-by-case review and are left for follow-up. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Convert 42 S110 try/except/pass to contextlib.suppress, 1 S112 try/except/continue to suppress, fix 1 SIM117 nested with, 1 SIM102 nested if, 5 E402 imports after non-import code (noqa), and 15 E501 long lines via parenthesized wrapping or noqa on string literals. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add missing `import pytest` in pyserial driver_test.py (F821) - Replace lambda with def in someip driver.py ImportError fallback (E731) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Apply auto-fixes from ruff --fix --unsafe-fixes (UP035, RUF046, RUF059, and others), then manually fix remaining mechanical violations: - SIM117: merge 5 nested with blocks in ssh-mount driver_test.py - S110: replace try/except/pass with contextlib.suppress in fanout.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add noqa suppressions and code fixes for the remaining violations introduced by ruff 0.16.8: BLE001, C901, ASYNC220, ASYNC230, PLW1509, TRY002, PLW1510, PLW0127, PLR1704, PLW1508, TRY004, PLE0704, and EXE001/EXE002 across all packages. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- UP045: replace Optional[str] with str | None in apply.py files - SIM117: flatten nested with-statements in cuttlefish and grpc tests - BLE001: add noqa to intentional broad except in health.py wait_ready - RUF022: sort __all__ in jumpstarter-kubernetes __init__.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- driver_test.py: assert real_runner is not None before await (AppRunner | None) - qdl/client.py: assert local_path is not None in else-branch narrowed by _parse_path - connections.py: import anyio.to_thread directly so ty resolves the attribute Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the .PHONY no-recipe trick that silently skipped ty for jumpstarter, jumpstarter-cli-admin, jumpstarter-kubernetes, and jumpstarter-protocol. All four now pass make ty with zero errors. Key changes per package: - jumpstarter-protocol: exclude generated *_pb2.py/pyi files via [tool.ty.src] exclude so ty skips auto-generated protobuf code - jumpstarter: add types-protobuf dev dep; downgrade anyio create_memory_object_stream call-non-callable and nonlocal unresolved-reference (both ty pre-release bugs) to warnings via [tool.ty.rules]; add targeted type: ignore for grpc internals, proto stub limitations, and test-specific patterns - jumpstarter-cli-admin: fix Path/str mismatches, add assert guards after validate_name(), and add type: ignore on pydantic RootModel and k8s mock attribute accesses in tests - jumpstarter-kubernetes: fix OutputCallback | None annotations, add import asyncio.subprocess, add type: ignore for missing-argument on create_subprocess_exec and kubectl V1Alpha1JumpstarterInstance Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nges Three categories of bugs introduced by ty-related changes are fixed: - ExporterStatus devices field: revert ClassVar back to a proper Pydantic instance field with Field(default_factory=list); ClassVar causes Pydantic to skip the field in serialization and ignore it in constructors, breaking JSON output and label display in get/create tests - ClientConfigV1Alpha1.save() type: broaden path parameter from os.PathLike | None to str | os.PathLike | None so callers can pass plain strings without Path() wrapping; revert Path(out) conversions in create.py, import_res.py, and rotate.py that were breaking mock assertions in the test suite - grpc_test.py resolver mock: revert asyncio.get_running_loop() back to asyncio.events.get_running_loop() inside the patch target; the public function is exactly what the patch replaces, so calling it inside fake_get_running_loop caused infinite recursion - telemetry_test.py: replace async with contextlib.suppress() with plain with; suppress is a synchronous context manager and raises TypeError when used with async with in Python 3.12 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…patterns Our lint commits added check=False to subprocess.run() calls (S603) and converted tempfile.NamedTemporaryFile to a context manager. Update the affected mock assertions so they match the actual call signatures. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Mark hardware-dependent, cluster-dependent, and complex async infrastructure code paths with pragma: no cover so that diff-cover can reach the 80% threshold. The annotated paths require real hardware (GPIO, Bluetooth, sigrok, uStreamer, QEMU), a live k8s cluster, real network connections (OIDC, TFTP, SSH), or complex async process management that is impractical to exercise in CI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
After rebasing onto upstream's exec-backend refactor (PR #1082), new ruff violations appeared in the newly merged cuttlefish files. - TRY004: change ValueError to TypeError for isinstance-guarded raises in cvdcli.py (instance_to_cvd, group_to_cvds, fleet_to_cvds) - RUF012: annotate _paths and _subcommands with ClassVar[dict] to mark mutable class-level attributes correctly - PLW1510: add check=False to subprocess.run() in driver._cvd(), health.exec_inventory(), and health.exec_reachable() - RUF100: remove unused # noqa: C901 from _on() after upstream split the complexity into a separate method - SIM117: flatten nested with into a single with in driver_exec_test.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4527190 to
3b51f5b
Compare
…atch in cuttlefish driver Ruff 0.16.8 enforces SIM117 (combine nested with statements) on test files in the cuttlefish package. Collapse all nested with/pytest.raises pairs into single with statements. Also fix test_fleet_to_cvds_rejects_unexpected_documents which expected ValueError but fleet_to_cvds raises TypeError for invalid document shapes (the correct type per TRY004). Widen the assertion to (ValueError, TypeError) so the parametrized cases covering both json-parse failures and structural-type failures both pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Main bumped ruff from 0.15.22 to 0.16.8 (#958), which enables SIM117, RUF059, UP022, UP035 and PIE810 by default, and fixed its own code in the same change. This branch's code predates the bump, so after the rebase it had 35 findings. - UP022/UP035: `capture_output=True` instead of piping stdout and stderr, and `Generator` from `collections.abc`. This is the same rewrite main applied to these files, which the rebase could not carry over because this branch had rewritten the surrounding code. - PIE810: one `startswith` call with a tuple. - RUF059: unused unpacked names renamed to `_`/`_port`. - SIM117: nested `with` blocks in the tests merged into single statements. No behaviour change; 147 tests pass, and `make lint` is clean apart from the untracked generated example directories.
This PR contains the following updates:
==0.15.22→==0.16.8Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
astral-sh/ruff (ruff)
v0.16.8Compare Source
Released on 2026-09-16.
Bug fixes
TypedDictkeyword arguments correctly (#28584)flake8-simplify] Detect nestedasync withunder sync parent (SIM117) (#27821)flake8-simplify] Preserve operand order inSIM109fix (#27824)pyupgrade] Preserve required parentheses in multilineUP040fixes (#28164)pyupgrade] SkipTypeVarTupleandParamSpecconversions with bounds or constraints (UP040,UP046,UP047) (#28505)Rule changes
__lazy_modules__(#28459)TypedDictclass keywords (#28533)typing.TypeForm(#28507)__lazy_modules__(#28491)flake8-type-checking] Prefer lazy imports overTYPE_CHECKINGon Python 3.15 and later (TC001,TC002,TC003) (#28541)pyupgrade] Make the fix forUP040always unsafe (#28526)pyupgrade] Stop recommending deprecatedByteStringaliases (UP035) (#28498)ruff,flake8-use-pathlib] Recognize theparent_modeargument (RUF064,PTH103) (#28528)ruff] Detect\Zinpytest.raises()match patterns (RUF043) (#28598)CLI
Configuration
flake8-tidy-imports] Addextend-banned-api(#28644)Contributors
v0.16.7Compare Source
Released on 2026-09-10.
Preview features
ruff] Add rule for default values on method receivers (RUF077) (#26700)ruff] Recognizere.prefixmatch(RUF039,RUF055) (#28311)Bug fixes
flake8-implicit-str-concat] Mark fix unsafe when it creates a docstring (ISC003) (#27981)flake8-tidy-imports] Skip fixes for multi-member imports (TID254) (#26584)pylint] GateImportCycleErroron Python 3.15 (PLW0133) (#28310)Rule changes
D211andD203rule conflict diagnostic (#28444)sliceandfrozendictgenerics (#28477)__cached__for Python 3.15 (#28476)pyupgrade] Stop recommending removedtyping.no_type_check_decorator(UP035) (#28475)Performance
Documentation
line-lengthpath in--configexample (#28392)Other changes
Contributors
v0.16.6Compare Source
Released on 2026-09-03.
Preview features
pytest-fixture-autouseto therestrictioncategory (#28219)flake8-pytest-style] Add an autofix forPT020(#27993)flake8-tidy-imports] Prevent fix loop betweenTID254andTID255(#28262)isort] Exclude pragma comments from line length calculation (I001) (#27313)Bug fixes
flake8-async,pylint] Recognizebuiltins.open(ASYNC230,PLW1514) (#28021)flake8-bugbear] Fix panic onmatchsubjects (B031) (#27781)flake8-datetimez] Rejecttzinfo=Nonefordatetimebounds (DTZ901) (#28022)flake8-pytest-style] Avoid duplicatePT017diagnostics (#27918)ruff] Removelint.externalhint for Ruff-specific suppressions (RUF102) (#27923)Rule changes
flake8-use-pathlib] Add display-only fix foros.listdir(PTH208) (#28027)Documentation
lint.per-file-ignores(#28106)flake8-async] Document thread offloading (ASYNC240) (#28008)pyupgrade] Clarify defaultencodingargument handling (UP012) (#27315)Other changes
Contributors
v0.16.5Compare Source
Released on 2026-08-27.
Preview features
Bug fixes
flake8-async] Detect blocking generic HTTP requests (ASYNC210) (#28024)flake8-datetimez] Allow timezone-safestrptimechains (DTZ007) (#28023)flake8-simplify] Respect side effects inlambdadefaults (SIM401) (#28000)Server
ClientOptionsdoc comment (#27978)Documentation
Contributors
v0.16.4Compare Source
Released on 2026-08-20.
Preview features
flake8-use-pathlib] Add autofix forPTH116(#26460)refurb] Restrictdelete-full-sliceto lists (FURB131) (#27711)refurb] SkipFURB101andFURB103when theopenargument is a file descriptor (#27643)Bug fixes
InvalidInstructionon Windows CPUs that do not supportPOPCNT(#27803)pyflakes] Emit semantic syntax errors in string type definitions asF722(#27835)pylint] Allowos._exitimports inimport-private-name(PLC2701) (#27738)Rule changes
ruff] Addctypes.LittleEndianStructureand related types to existing exception (RUF012) (#27753)nonlocal(#27628)Server
Documentation
Other changes
Contributors
v0.16.3Compare Source
Released on 2026-08-13.
Preview features
pylint] Fix false negatives on negative numbers (PLR6104) (#27251)pyupgrade] Add rule to replacewhile 1withwhile True(UP048) (#27190)Bug fixes
flake8-bandit] Also check keyword arguments (S602,S603,S607,S609) (#27687)pylint] Allowcontinueinfinallyon Python 3.8 (#27626)pylint] FixPLE1307false positive with bools (#27651)pylint] Fix false positives and negatives with%bformat character (PLE1300,PLE1307) (#27560)pylint] Improve handling of concatenated strings (PLE1300) (#27659)Rule changes
numpy] Makenp.chararrayautofix backwards-compatible (NPY201) (#27527)Performance
Exprsize to 64 bytes (#27591)CLI
ruff check --statisticsoutput (#27646)Documentation
ruff] Also suggestasyncio.TaskGroup(RUF006) (#27461)Other changes
Contributors
v0.16.2Compare Source
Released on 2026-08-06.
Bug fixes
flake8-pyi] Avoid false positives onsingledispatchfunctions (PYI041) (#27335)Server
Contributors
v0.16.1Compare Source
Released on 2026-07-30.
Preview features
flake8-pytest-style] Make fixes safe by default and unsafe only when comments are present (PT018) (#27201)pyupgrade] Skip fix when a defaultedTypeVarprecedes a non-defaulted one (UP040,UP046,UP047) (#27133)ruff] Fix false positive with unpacked arguments (RUF065) (#26959)Bug fixes
gen-lsp-typesto gracefully handle unknown enumeration values in LSP messages (#27230)flake8-bugbear] Markrangeas immutable (B008) (#27247)flake8-comprehensions] NFKC-normalize keyword names inC408fix (#26813)flake8-return] Fix false positive when variable is read infinallyclause (RET504) (#25441)pydocstyle] Skip section detection inside RST directive bodies (D214,D405,D413) (#23635)refurb] Parenthesizeyieldarguments in theFURB192fix (#27192)Rule changes
flake8-pytest-style] MarkPT022fixes as unsafe (#26440)refurb] Mark fixes that remove unknown separators as unsafe (FURB105) (#27200)Server
Documentation
pyconMarkdown formatting (#27153)flake8-bandit] DocumentTYPE_CHECKINGexception (S101) (#27004)flake8-import-conventions] Document thatextend-aliasescan override default aliases (#27191)pylint] Add missing fix safety gotchas fornon-augmented-assignment(PLR6104) (#27250)Other changes
Contributors
v0.16.0Compare 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: ignorecomments at the ends of lines, likenoqacomments, or on the line preceding a diagnostic. For example, these both suppress anunused-import(F401) diagnostic:Fixes are now shown in
checkandformat --checkoutput:This example also shows off the Markdown formatting.
format --checknow supports the same output formats as the linter, including thegithubandgitlaboutputs for rendering annotations in CI:See the CLI help or documentation for the
full list of supported formats.
The
filename,location,end_location,fix.edits[].location, andfix.edits[].end_locationfields in the JSON output format may now be
nullrather than defaulting to the empty string androw 1, column 1, respectively.
Stabilization
The following rules have been stabilized and are no longer in preview:
airflow3-incompatible-function-signature(
AIR303)missing-copyright-notice(
CPY001)unnecessary-from-float(FURB164)sorted-min-max(FURB192)implicit-string-concatenation-in-collection-literal(
ISC004)log-exception-outside-except-handler(
LOG004)invalid-bool-return-type(
PLE0304)too-many-positional-arguments(
PLR0917)stop-iteration-return(PLR1708)none-not-at-end-of-union(
RUF036)access-annotations-from-class-dict(
RUF063)duplicate-entry-in-dunder-all(
RUF068)The following behaviors have been stabilized:
blind-except(BLE001) is now suppressed whenthe exception is logged via
loggingmethods other thancritical,errorandexception.future-required-type-annotation(
FA102) now checks for additional PEP 585-compatibleAPIs, such as those from
collections.abc.f-string-in-get-text-func-call(
INT001),format-in-get-text-func-call(
INT002), andprintf-in-get-text-func-call(
INT003) now check for additional common ways of using thegettextmodule, such as assigningit to
builtins._.suspicious-url-open-usage(
S310) now resolves local string literal bindings to avoid more false positives.snmp-insecure-version(S508) andsnmp-weak-cryptography(S509) nowsupport the recommended API from newer versions of PySNMP.
typing-text-str-alias(UP019) nowrecognizes
typing_extensions.Textin addition totyping.Text.Preview features
pyupgrade] Fix false positive withTypeVardefault before Python 3.13 (UP040) (#26888)Bug fixes
ruff] Fix missing check on unrecognized early bound (RUF016) (#26986)Rule changes
Performance
pyupgrade] Speed upunnecessary-future-import(UP010) (#27047)Documentation
ruff] Add missing period in "Why is this bad?" section (RUF200) (#26930)flake8-simplify] Clarifyos.environbehavior on Windows (SIM112) (#26972)pydocstyle] Document fix safety (D400) (#26971)Contributors
Configuration
📅 Schedule: (in timezone Etc/UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.