commit 48d6201f84d64525d963c7b6417988a4b84b038b Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Fri Sep 26 14:34:01 2025 +0100 Drop patches that no longer apply commit f0ab0a668a7cca6614bcc09c5110dc450eff8baf Merge: 065d9b26 90fb9382 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Fri Sep 26 10:33:14 2025 +0100 Merge branch 'debian/main' of https://salsa.debian.org/jelmer/ruff into debian/main commit 90fb93820542ea510d246d9e885647be4ef85a3a Author: Anton Gladky <gladk@debian.org> Date: Wed Jul 2 20:55:57 2025 +0200 chore: Add salsa-ci.yml for Debian CI integration commit f44163cba799d88deef40fe0e574f5fe2608df6c Author: Andreas Tille <tille@debian.org> Date: Fri Apr 11 10:08:57 2025 +0200 Add watch file commit 065d9b260bee3aae4afd3a57219511387980e4bf Merge: 7514a8e5 3bb0dac2 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Dec 25 23:15:51 2024 +0000 Update to 0.8.4 commit 3bb0dac23569fb607e781ca8e401c6eba71b14dd Author: Dhruv Manilawala <dhruvmanila@gmail.com> Date: Thu Dec 19 18:45:42 2024 +0530 Bump version to 0.8.4 (#15064) commit 40cba5dc8aa79fef488bcae366abf7efefb04faa Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Thu Dec 19 13:03:41 2024 +0000 [red-knot] Cleanup various `todo_type!()` messages (#15063) Co-authored-by: Micha Reiser <micha@reiser.io> commit 596d80cc8e9b4e2380712597a881ec2ad3609b96 Author: Dylan <53534755+dylwil3@users.noreply.github.com> Date: Thu Dec 19 06:56:45 2024 -0600 [`perflint`] Parenthesize walrus expressions in autofix for `manual-list-comprehension` (`PERF401`) (#15050) commit d8b9a366c820750d52650ac42668771ef9fcebe1 Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Thu Dec 19 12:45:17 2024 +0000 Disable actionlint hook by default when running pre-commit locally (#15061) commit 85e71ba91ae5adc8fb3b764681c21c8959f71346 Author: Taras Matsyk <x@tar7k.com> Date: Thu Dec 19 13:26:40 2024 +0100 [`flake8-bandit`] Check `S105` for annotated assignment (#15059) ## Summary A follow up PR on https://github.com/astral-sh/ruff/issues/14991 Ruff ignores hardcoded passwords for typed variables. Add a rule to catch passwords in typed code bases ## Test Plan Includes 2 more test typed variables commit 2802cbde29ea85ae6a01870aac34b5b788346fc0 Author: Douglas Creager <dcreager@dcreager.net> Date: Wed Dec 18 14:37:17 2024 -0500 Don't special-case class instances in unary expression inference (#15045) We have a handy `to_meta_type` that does the right thing for class instances, and also works for all of the other types that are “instances of” something. Unless I'm missing something, this should let us get rid of the catch-all clause in one fell swoop. cf #14548 commit ed2bce6ebb56c84c5ecd22cbe8aac4a887c403ca Author: InSync <insyncwithfoo@gmail.com> Date: Thu Dec 19 01:31:24 2024 +0700 [red-knot] Report invalid exceptions (#15042) Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> commit f0012df68653835752c32d47ebba06320c7e48cf Author: InSync <insyncwithfoo@gmail.com> Date: Wed Dec 18 22:39:55 2024 +0700 Fix typos in `RUF043.py` (#15044) (Accidentally introduced in #14966.) commit 0fc4e8f795f2cc4ad0ea2b3c3d592ed50da29caf Author: Micha Reiser <micha@reiser.io> Date: Wed Dec 18 13:22:33 2024 +0100 Introduce `InferContext` (#14956) ## Summary I'm currently on the fence about landing the #14760 PR because it's unclear how we'd support tracking used and unused suppression comments in a performant way: * Salsa adds an "untracked" dependency to every query reading accumulated values. This has the effect that the query re-runs on every revision. For example, a possible future query `unused_suppression_comments(db, file)` would re-run on every incremental change and for every file. I don't expect the operation itself to be expensive, but it all adds up in a project with 100k+ files * Salsa collects the accumulated values by traversing the entire query dependency graph. It can skip over sub-graphs if it is known that they contain no accumulated values. This makes accumulators a great tool for when they are rare; diagnostics are a good example. Unfortunately, suppressions are more common, and they often appear in many different files, making the "skip over subgraphs" optimization less effective. Because of that, I want to wait to adopt salsa accumulators for type check diagnostics (we could start using them for other diagnostics) until we have very specific reasons that justify regressing incremental check performance. This PR does a "small" refactor that brings us closer to what I have in #14760 but without using accumulators. To emit a diagnostic, a method needs: * Access to the db * Access to the currently checked file This PR introduces a new `InferContext` that holds on to the db, the current file, and the reported diagnostics. It replaces the `TypeCheckDiagnosticsBuilder`. We pass the `InferContext` instead of the `db` to methods that *might* emit diagnostics. This simplifies some of the `Outcome` methods, which can now be called with a context instead of a `db` and the diagnostics builder. Having the `db` and the file on a single type like this would also be useful when using accumulators. This PR doesn't solve the issue that the `Outcome` types feel somewhat complicated nor that it can be annoying when you need to report a `Diagnostic,` but you don't have access to an `InferContext` (or the file). However, I also believe that accumulators won't solve these problems because: * Even with accumulators, it's necessary to have a reference to the file that's being checked. The struggle would be to get a reference to that file rather than getting a reference to `InferContext`. * Users of the `HasTy` trait (e.g., a linter) don't want to bother getting the `File` when calling `Type::return_ty` because they aren't interested in the created diagnostics. They just want to know what calling the current expression would return (and if it even is a callable). This is what the different methods of `Outcome` enable today. I can ask for the return type without needing extra data that's only relevant for emitting a diagnostic. A shortcoming of this approach is that it is now a bit confusing when to pass `db` and when an `InferContext`. An option is that we'd make the `file` on `InferContext` optional (it won't collect any diagnostics if `None`) and change all methods on `Type` to take `InferContext` as the first argument instead of a `db`. I'm interested in your opinion on this. Accumulators are definitely harder to use incorrectly because they remove the need to merge the diagnostics explicitly and there's no risk that we accidentally merge the diagnostics twice, resulting in duplicated diagnostics. I still value performance more over making our life slightly easier. commit ac81c72bf3e5c8c8196adb82133cd3b53793fb48 Author: InSync <insyncwithfoo@gmail.com> Date: Wed Dec 18 18:53:48 2024 +0700 [`ruff`] Ambiguous pattern passed to `pytest.raises()` (`RUF043`) (#14966) commit c0b7c36d435441788b5a1f2330a66613656a3e47 Author: David Salvisberg <david.salvisberg@seantis.ch> Date: Wed Dec 18 08:50:49 2024 +0100 [`ruff`] Avoid false positives for RUF027 for typing context bindings. (#15037) Closes #14000 ## Summary For typing context bindings we know that they won't be available at runtime. We shouldn't recommend a fix, that will result in name errors at runtime. ## Test Plan `cargo nextest run` commit e8e461da6a5156e7c0e62ef20f4bc7896a17ca9f Author: Douglas Creager <dcreager@dcreager.net> Date: Tue Dec 17 16:58:23 2024 -0500 Prioritize attribute in from/import statement (#15041) This tweaks the new semantics from #15026 a bit when a symbol could be interpreted both as an attribute and a submodule of a package. For `from...import`, we should actually prioritize the attribute, because of how the statement itself is implemented [1]. > 1. check if the imported module has an attribute by that name > 2. if not, attempt to import a submodule with that name and then check the imported module again for that attribute [1] https://docs.python.org/3/reference/simple_stmts.html#the-import-statement commit 91c9168dd764ba8fbc72da634f56e1375474bda0 Author: Douglas Creager <dcreager@dcreager.net> Date: Tue Dec 17 14:23:34 2024 -0500 Handle nested imports correctly in `from ... import` (#15026) #14946 fixed our handling of nested imports with the `import` statement, but didn't touch `from...import` statements. cf https://github.com/astral-sh/ruff/issues/14826#issuecomment-2525344515 commit 80577a49f86808854ca933c409e4965d9f62fa26 Author: Micha Reiser <micha@reiser.io> Date: Tue Dec 17 18:01:58 2024 +0100 Upgrade salsa in fuzzer script (#15040) commit f463fa7b7c80a4e522672de8c03b7e6a4f8d088a Author: cake-monotone <cake.monotone@gmail.com> Date: Wed Dec 18 01:37:07 2024 +0900 [red-knot] Narrowing For Truthiness Checks (`if x` or `if not x`) (#14687) ## Summary Fixes #14550. Add `AlwaysTruthy` and `AlwaysFalsy` types, representing the set of objects whose `__bool__` method can only ever return `True` or `False`, respectively, and narrow `if x` and `if not x` accordingly. ## Test Plan - New Markdown test for truthiness narrowing `narrow/truthiness.md` - unit tests in `types.rs` and `builders.rs` (`cargo test --package red_knot_python_semantic --lib -- types`) commit c3b6139f394a0e24cba0b5b1166daa80aba601a6 Author: Micha Reiser <micha@reiser.io> Date: Tue Dec 17 16:50:33 2024 +0100 Upgrade salsa (#15039) The only code change is that Salsa now requires the `Db` to implement `Clone` to create "lightweight" snapshots. commit c9fdb1f5e3a4d0d60b4537741f2c9c19e2426038 Author: InSync <insyncwithfoo@gmail.com> Date: Tue Dec 17 22:07:07 2024 +0700 [`pylint`] Preserve original value format (`PLR6104`) (#14978) ## Summary Resolves #11672. ## Test Plan `cargo nextest run` and `cargo insta test`. --------- Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> commit 463046ae0724c31ca98bc69ef5252c22cd2212c0 Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Tue Dec 17 12:55:50 2024 +0000 [red-knot] Explicitly test diagnostics are emitted for unresolvable submodule imports (#15035) commit dcb99cc8171aa579256f53ca3277a6ac524f5224 Author: Micha Reiser <micha@reiser.io> Date: Tue Dec 17 12:45:36 2024 +0100 Fix stale File status in tests (#15030) ## Summary Fixes https://github.com/astral-sh/ruff/issues/15027 The `MemoryFileSystem::write_file` API automatically creates non-existing ancestor directoryes but we failed to update the status of the now created ancestor directories in the `Files` data structure. ## Test Plan Tested that the case in https://github.com/astral-sh/ruff/issues/15027 now passes regardless of whether the *Simple* case is commented out or not commit 7c2e7cf25e2b04f7b52052ed4c0710a593ebe4a1 Author: InSync <insyncwithfoo@gmail.com> Date: Tue Dec 17 16:33:15 2024 +0700 [red-knot] Basic support for other legacy `typing` aliases (#14998) ## Summary Resolves #14997. ## Test Plan Markdown tests. commit 867a8f949705a41777fd1b8eb3dd4c4aae31dc17 Author: Wei Lee <weilee.rx@gmail.com> Date: Tue Dec 17 16:32:48 2024 +0900 feat(AIR302): extend the following rules (#15015) ## Summary Airflow 3.0 removes various deprecated functions, members, modules, and other values. They have been deprecated in 2.x, but the removal causes incompatibilities that we want to detect. This PR deprecates the following names. * `airflow.api_connexion.security.requires_access_dataset` → `airflow.api_connexion.security.requires_access_asset` * `airflow.auth.managers.base_auth_manager.is_authorized_dataset` → `airflow.auth.managers.base_auth_manager.is_authorized_asset` * `airflow.auth.managers.models.resource_details.DatasetDetails` → `airflow.auth.managers.models.resource_details.AssetDetails` * `airflow.lineage.hook.DatasetLineageInfo` → `airflow.lineage.hook.AssetLineageInfo` * `airflow.security.permissions.RESOURCE_DATASET` → `airflow.security.permissions.RESOURCE_ASSET` * `airflow.www.auth.has_access_dataset` → `airflow.www.auth.has_access_dataset.has_access_asset` * remove `airflow.datasets.DatasetAliasEvent` * `airflow.datasets.Dataset` → `airflow.sdk.definitions.asset.Asset` * `airflow.Dataset` → `airflow.sdk.definitions.asset.Asset` * `airflow.datasets.DatasetAlias` → `airflow.sdk.definitions.asset.AssetAlias` * `airflow.datasets.DatasetAll` → `airflow.sdk.definitions.asset.AssetAll` * `airflow.datasets.DatasetAny` → `airflow.sdk.definitions.asset.AssetAny` * `airflow.datasets.metadata` → `airflow.sdk.definitions.asset.metadata` * `airflow.datasets.expand_alias_to_datasets` → `airflow.sdk.definitions.asset.expand_alias_to_assets` * `airflow.datasets.manager.dataset_manager` → `airflow.assets.manager` * `airflow.datasets.manager.resolve_dataset_manager` → `airflow.assets.resolve_asset_manager` * `airflow.datasets.manager.DatasetManager` → `airflow.assets.AssetManager` * `airflow.listeners.spec.dataset.on_dataset_created` → `airflow.listeners.spec.asset.on_asset_created` * `airflow.listeners.spec.dataset.on_dataset_changed` → `airflow.listeners.spec.asset.on_asset_changed` * `airflow.timetables.simple.DatasetTriggeredTimetable` → `airflow.timetables.simple.AssetTriggeredTimetable` * `airflow.timetables.datasets.DatasetOrTimeSchedule` → `airflow.timetables.assets.AssetOrTimeSchedule` * `airflow.providers.amazon.auth_manager.avp.entities.AvpEntities.DATASET` → `airflow.providers.amazon.auth_manager.avp.entities.AvpEntities.ASSET` * `airflow.providers.amazon.aws.datasets.s3.create_dataset` → `airflow.providers.amazon.aws.assets.s3.create_asset` * `airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage` → `airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage` * `airflow.providers.amazon.aws.datasets.s3.sanitize_uri` → `airflow.providers.amazon.aws.assets.s3.sanitize_uri` * `airflow.providers.common.io.datasets.file.convert_dataset_to_openlineage` → `airflow.providers.common.io.assets.file.convert_asset_to_openlineage` * `airflow.providers.common.io.datasets.file.sanitize_uri` → `airflow.providers.common.io.assets.file.sanitize_uri` * `airflow.providers.common.io.datasets.file.create_dataset` → `airflow.providers.common.io.assets.file.create_asset` * `airflow.providers.google.datasets.bigquery.sanitize_uri` → `airflow.providers.google.assets.bigquery.sanitize_uri` * `airflow.providers.google.datasets.gcs.create_dataset` → `airflow.providers.google.assets.gcs.create_asset` * `airflow.providers.google.datasets.gcs.sanitize_uri` → `airflow.providers.google.assets.gcs.sanitize_uri` * `airflow.providers.google.datasets.gcs.convert_dataset_to_openlineage` → `airflow.providers.google.assets.gcs.convert_asset_to_openlineage` * `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_dataset` → `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_asset` * `airflow.providers.openlineage.utils.utils.DatasetInfo` → `airflow.providers.openlineage.utils.utils.AssetInfo` * `airflow.providers.openlineage.utils.utils.translate_airflow_dataset` → `airflow.providers.openlineage.utils.utils.translate_airflow_asset` * `airflow.providers.postgres.datasets.postgres.sanitize_uri` → `airflow.providers.postgres.assets.postgres.sanitize_uri` * `airflow.providers.mysql.datasets.mysql.sanitize_uri` → `airflow.providers.mysql.assets.mysql.sanitize_uri` * `airflow.providers.trino.datasets.trino.sanitize_uri` → `airflow.providers.trino.assets.trino.sanitize_uri` In additional to the newly added rules above, the message for `airflow.contrib.*` and `airflow.subdag.*` has been extended, `airflow.sensors.external_task.ExternalTaskSensorLink` error has been fixed and the test fixture has been reorganized ## Test Plan A test fixture is included in the PR. commit e22718f25f1e2ad53703b303511800b72be37763 Author: w0nder1ng <94079074+w0nder1ng@users.noreply.github.com> Date: Tue Dec 17 02:30:32 2024 -0500 [`perflint`] Simplify finding the loop target in `PERF401` (#15025) Fixes #15012. ```python def f(): # panics when the code can't find the loop variable values = [1, 2, 3] result = [] for i in values: result.append(i + 1) del i ``` I'm not sure exactly why this test case panics, but I suspect the `del i` removes the binding from the semantic model's symbols. I changed the code to search for the correct binding by directly iterating through the bindings. Since we know exactly which binding we want, this should find the loop variable without any complications. commit dcdc6e7c64c66ac57fbdb8868b102ea0f20c695e Author: Dhruv Manilawala <dhruvmanila@gmail.com> Date: Tue Dec 17 09:49:39 2024 +0530 [red-knot] Avoid undeclared path when raising conflicting declarations (#14958) ## Summary This PR updates the logic when raising conflicting declarations diagnostic to avoid the undeclared path if present. The conflicting declaration diagnostics is added when there are two or more declarations in the control flow path of a definition whose type isn't equivalent to each other. This can be seen in the following example: ```py if flag: x: int x = 1 # conflicting-declarations: Unknown, int ``` After this PR, we'd avoid considering "Unknown" as part of the conflicting declarations. This means we'd still flag it for the following case: ```py if flag: x: int else: x: str x = 1 # conflicting-declarations: int, str ``` A solution that's local to the exception control flow was also explored which required updating the logic for merging the flow snapshot to avoid considering declarations using a flag. This is preserved here: https://github.com/astral-sh/ruff/compare/dhruv/control-flow-no-declarations?expand=1. The main motivation to avoid that is we don't really understand what the user experience is w.r.t. the Unknown type and the conflicting-declaration diagnostics. This makes us unsure on what the right semantics are as to whether that diagnostics should be raised or not and when to raise them. For now, we've decided to move forward with this PR and could decide to adopt another solution or remove the conflicting-declaration diagnostics in the future. Closes: #13966 ## Test Plan Update the existing mdtest case. Add an additional case specific to exception control flow to verify that the diagnostic is not being raised now. commit 4ddf9228f6b24db05c9de4a121b35a0892ea3792 Author: Douglas Creager <dcreager@dcreager.net> Date: Mon Dec 16 16:15:40 2024 -0500 Bind top-most parent when importing nested module (#14946) When importing a nested module, we were correctly creating a binding for the top-most parent, but we were binding that to the nested module, not to that parent module. Moreover, we weren't treating those submodules as members of their containing parents. This PR addresses both issues, so that nested imports work as expected. As discussed in ~Slack~ whatever chat app I find myself in these days :smile:, this requires keeping track of which modules have been imported within the current file, so that when we resolve member access on a module reference, we can see if that member has been imported as a submodule. If so, we return the submodule reference immediately, instead of checking whether the parent module's definition defines the symbol. This is currently done in a flow insensitive manner. The `SemanticIndex` now tracks all of the modules that are imported (via `import`, not via `from...import`). The member access logic mentioned above currently only considers module imports in the file containing the attribute expression. --------- Co-authored-by: Carl Meyer <carl@astral.sh> commit 6d72be2683a6fe835bb297f69609095fec96a9cd Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Mon Dec 16 17:45:46 2024 +0000 Bump zizmor pre-commit hook to the latest version and fix new warnings (#15022) commit 712c88674930e0fd174d3730b25dbf827914cacd Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Mon Dec 16 17:32:49 2024 +0000 Add `actionlint` as a pre-commit hook (with shellcheck integration) (#15021) commit 50739f91dc415ac3a8b56b2296a8e47f70ae663d Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Mon Dec 16 22:48:37 2024 +0530 Update dependency mdformat-mkdocs to v4 (#15011) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [mdformat-mkdocs](https://redirect.github.com/kyleking/mdformat-mkdocs) ([changelog](https://redirect.github.com/kyleking/mdformat-mkdocs/releases)) | `==3.1.1` -> `==4.0.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>kyleking/mdformat-mkdocs (mdformat-mkdocs)</summary> ### [`v4.0.0`](https://redirect.github.com/KyleKing/mdformat-mkdocs/releases/tag/v4.0.0) [Compare Source](https://redirect.github.com/kyleking/mdformat-mkdocs/compare/v3.1.1...v4.0.0) #### What's Changed - fix!: add newline after title for consistency with MKDocs style by [@​KyleKing](https://redirect.github.com/KyleKing) in [https://github.com/KyleKing/mdformat-mkdocs/pull/44](https://redirect.github.com/KyleKing/mdformat-mkdocs/pull/44) **Full Changelog**: https://github.com/KyleKing/mdformat-mkdocs/compare/v3.1.1...v4.0.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/astral-sh/ruff). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com> Co-authored-by: Kyle King <KyleKing@users.noreply.github.com> commit 6a5eff60171a8b17158ee7b890ef36708e0e1f6a Author: Dylan <53534755+dylwil3@users.noreply.github.com> Date: Mon Dec 16 09:09:27 2024 -0600 [`pydocstyle`] Skip leading whitespace for `D403` (#14963) This PR introduces three changes to `D403`, which has to do with capitalizing the first word in a docstring. 1. The diagnostic and fix now skip leading whitespace when determining what counts as "the first word". 2. The name has been changed to `first-word-uncapitalized` from `first-line-capitalized`, for both clarity and compliance with our rule naming policy. 3. The diagnostic message and documentation has been modified slightly to reflect this. Closes #14890 commit a623d8f7c44cd63897489cad0faed1538d4373c8 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Mon Dec 16 11:13:49 2024 +0000 Update pre-commit dependencies (#15008) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> commit aa429b413f8a7de9eeee14f8e54fdcb3b199b7b7 Author: Dhruv Manilawala <dhruvmanila@gmail.com> Date: Mon Dec 16 16:26:40 2024 +0530 Check diagnostic refresh support from client capability (#15014) ## Summary Per the LSP spec, the property name is `workspace.diagnostics` with an `s` at the end but the `lsp-types` dependency uses `workspace.diagnostic` (without an `s`). Our fork contains this fix (https://github.com/astral-sh/lsp-types/commit/0f58d628799182647f688908ba752a33f854fb3a) so we should avoid the hardcoded value. The implication of this is that the client which doesn't support workspace refresh capability didn't support the [dynamic configuration](https://docs.astral.sh/ruff/editors/features/#dynamic-configuration) feature because the server would _always_ send the workspace refresh request but the client would ignore it. We have a fallback logic to publish the diagnostics instead: https://github.com/astral-sh/ruff/blob/5f6fc3988b5ce19790746921bd80cde9b646d690/crates/ruff_server/src/server/api/notifications/did_change_watched_files.rs#L28-L40 fixes: #15013 ## Test Plan ### VS Code https://github.com/user-attachments/assets/61ac8e6f-aa20-41cc-b398-998e1866b5bc ### Neovim https://github.com/user-attachments/assets/4131e13c-3fba-411c-9bb7-478d26eb8d56 commit 425c248232c017e8779ebc82f62dbe643839a700 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Mon Dec 16 08:48:51 2024 +0100 Update Rust crate colored to v2.2.0 (#15010) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [colored](https://redirect.github.com/mackwic/colored) | workspace.dependencies | minor | `2.1.0` -> `2.2.0` | --- ### Release Notes <details> <summary>mackwic/colored (colored)</summary> ### [`v2.2.0`](https://redirect.github.com/mackwic/colored/compare/v2.1.0...v2.2.0) [Compare Source](https://redirect.github.com/mackwic/colored/compare/v2.1.0...v2.2.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/astral-sh/ruff). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit bcd944347d972daa3a82ba38449778ebd56d70c0 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:26:21 2024 -0500 Update dependency monaco-editor to v0.52.2 (#15006) commit 86eff81c6ac127e9b79c88a0fc71cc851644e095 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:26:14 2024 -0500 Update Rust crate thiserror to v2.0.7 (#15005) commit 24ace6856050894e0379ea5d61a3ba55afb66006 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:26:08 2024 -0500 Update Rust crate serde to v1.0.216 (#15004) commit b664505d7bef35bb4e1ea4b690e8f7c9d3764d66 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:25:59 2024 -0500 Update Rust crate libc to v0.2.168 (#15003) commit aa575da1e7d6240f500b9ad31d2bc439c7596aee Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:25:52 2024 -0500 Update Rust crate fern to v0.7.1 (#15002) commit 921eb2acb3ea6767fd6cdd9bc4ef7fdb3c081cee Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:25:46 2024 -0500 Update Rust crate chrono to v0.4.39 (#15001) commit 8665d2dc95d5eb05ecef1c078977294ef69cdf2b Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:25:39 2024 -0500 Update Rust crate bstr to v1.11.1 (#15000) commit 1cc27c995c5d2c430e8b837a5c7c4536435b42a3 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:25:10 2024 -0500 Update NPM Development dependencies (#14999) commit a93bc2af6b169fec5586977e32bbff67df870d4e Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sun Dec 15 20:25:04 2024 -0500 Update dependency ruff to v0.8.3 (#15007) commit d848182340079299f71cfdfb647e1ae2d00835b6 Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Sun Dec 15 19:37:45 2024 +0000 Pin mdformat plugins in pre-commit (#14992) commit 7173e6a20b3a26549fb695d77978476218244904 Author: InSync <insyncwithfoo@gmail.com> Date: Sun Dec 15 23:07:29 2024 +0700 Use stripping block (`|-`) for page descriptions (#14980) ## Summary Resolves #14976. Currently, we uses this "[plain scalar](https://yaml.org/spec/1.2.2/#733-plain-style)" format: ```yaml description: Checks for `if key in dictionary: del dictionary[key]`. ``` Plain scalar must not contain the sequence `: `, however, so the above is invalid. This PR changes that to: ```yaml description: |- Checks for `if key in dictionary: del dictionary[key]`. ``` `|` denotes a "[block scalar](https://yaml.org/spec/1.2.2/#81-block-scalar-styles)", whereas [the `-` chomping indicator](https://yaml.org/spec/1.2.2/#8112-block-chomping-indicator) requires that a trailing newline, if any, must be stripped. ## Test Plan  commit 4a7536dc941018fcfbeaecbf1464621b7ac1a5e2 Author: w0nder1ng <94079074+w0nder1ng@users.noreply.github.com> Date: Sun Dec 15 10:22:04 2024 -0500 [`perflint`] Fix panic in `perf401` (#14971) Fixes #14969. The issue was that this line: ```rust let from_assign_to_loop = TextRange::new(binding_stmt.end(), for_stmt.start()); ``` was not safe if the binding was after the target. The only way (at least that I can think of) this can happen is if they are in different scopes, so it now checks for that before checking if there are usages between the two. commit 2d15d7d1af96873a6a95f39118e8e4f4d308d696 Author: Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sun Dec 15 16:20:04 2024 +0100 Improve the documentation of E201/E202 (#14983) ## Summary The summary is misleading, as well as the `whitespace-after-open-bracket` and `whitespace-before-close-bracket` names - it's not only brackets, but also parentheses and braces. Align the documentation with the actual behaviour. Don't change the names, but align the documentation with the behaviour. ## Test Plan No test (documentation). commit 112e9d2d8258e72dcf5c21c7d811957f12325af1 Author: Rebecca Chen <rchen152@gmail.com> Date: Sun Dec 15 04:04:51 2024 -0800 [ruff_python_ast] Add name and default functions to TypeParam. (#14964) ## Summary This change adds `name` and `default` functions to `TypeParam` to access the corresponding attributes more conveniently. I currently have these as helper functions in code built on top of ruff_python_ast, and they seemed like they might be generally useful. ## Test Plan Ran the checks listed in CONTRIBUTING.md#development. --------- Co-authored-by: Micha Reiser <micha@reiser.io> Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> commit 1389cb8e593e3476c813ba931e4a9677b6863cdd Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Sun Dec 15 02:00:52 2024 +0000 [red-knot] Emit an error if a bare `Annotated` or `Literal` is used in a type expression (#14973) commit fa46ba2306c62a2d6bb3c1abcd7ba0afb26d9421 Author: Alex Waygood <Alex.Waygood@Gmail.com> Date: Sun Dec 15 01:15:10 2024 +0000 [red-knot] Fix bugs relating to assignability of dynamic `type[]` types (#14972) commit 7514a8e508361a17de76b10eaa7fe7f959230436 Merge: 01db3604 2128ad8e Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Fri Sep 27 12:39:16 2024 +0100 New upstream release. commit 01db3604175d6fdaffa04bf8c7b00c71b643a0ca Author: James McCoy <jamessan@debian.org> Date: Sun Jun 16 13:45:25 2024 -0400 release package ruff version 0.0.291+dfsg1-4 Signed-off-by: James McCoy <jamessan@debian.org> commit 596f131e611906c5f1fd7ad1c2f006d979792ae1 Author: James McCoy <jamessan@debian.org> Date: Tue Jun 11 17:24:31 2024 -0400 Add relax-strum patch to fix build with strum 0.26 Signed-off-by: James McCoy <jamessan@debian.org> commit 39a6704e7080e4610bedd077b37a9839df676c34 Author: James McCoy <jamessan@debian.org> Date: Tue Jun 11 17:23:15 2024 -0400 Remove older-notify patch rust-notify 6.1.1 is now available in unstable Signed-off-by: James McCoy <jamessan@debian.org> commit 9e321f23248fa7003a89fdd6c030747ee14b701c Merge: ca62f153 cfeb6ab0 Author: Jelmer Vernooij <jelmer@debian.org> Date: Thu Apr 4 20:03:37 2024 +0000 Merge branch 'debian/main' into 'debian/main' Overhaul debian/copyright file See merge request python-team/packages/ruff!1 commit cfeb6ab0c3b20930f0e010d017e0258bf47115e3 Author: Vincent Blut <vincent.debian@free.fr> Date: Wed Apr 3 14:08:07 2024 +0200 Overhaul debian/copyright file commit ca62f1531d05d666f2ddfa84acb0357cd9670221 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Tue Apr 2 23:02:45 2024 +0100 Change Maintainer to Debian Python Team, moving myself to Uploaders. commit bb2d8b21d70d85f3a06f0a1d1b33dcaf2f965841 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Feb 1 21:26:15 2024 +0000 releasing package ruff version 0.0.291+dfsg1-3 commit 5933184ae9494d043ca6f96346bbb1e0c90be0ce Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Feb 1 21:26:00 2024 +0000 Add patch find-ruff: hardcode path to ruff on Debian. Closes: #1058753 commit 361a63869b48f08ee8bc99bfffa5ae5219ac068a Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Feb 1 21:06:18 2024 +0000 Fix build; update dependencies commit 333a90b61f4e99acc74c5e1308982044b95a4af6 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Nov 13 21:04:14 2023 +0000 Drop mood check, depends on imperative commit d732fa633780cbf790d09a4b2f8417725fcec078 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Nov 8 09:35:27 2023 +0000 releasing package ruff version 0.0.291+dfsg1-2 commit bc0556f522ef705569eb6c1c5aa098622c88e301 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Nov 8 09:32:21 2023 +0000 python3-ruff: Add dependency on ruff itself. Closes: #1055559 commit 662753e56580ae8db8043837ac708e7822c4f482 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Tue Nov 7 01:00:24 2023 +0000 Update to 0.0.291+dfsg1 commit e7c71f0a857037a4355c8997c6dc66d04af2d35f Merge: e0fe7d5b 424ef042 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Tue Nov 7 00:59:50 2023 +0000 Merge tag 'upstream/0.0.291+dfsg1' into debian/main commit e0fe7d5bcee213d583de8a51ecbc5bb366fa0f46 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Nov 2 12:47:20 2023 +0000 releasing package ruff version 0.0.291-1 commit 084f92da858ec184d895472bc32551ba571be3e4 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Fri Oct 27 13:47:10 2023 +0100 Split package commit 885b7976e09485297b8912b63aaf37d73cd58765 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 22:34:18 2023 +0100 Add shlibs:Depends commit 8b34e9ebd5efff59f583b81e56b6b8adaec1439c Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 22:33:56 2023 +0100 Fix drop-clap-complete-command commit 80667cbf180aaf6ab7d27663edbbe840c4787318 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 22:33:45 2023 +0100 Add copyright files commit 97d62b128aa362c5cb9664be3f048b7881fc3d08 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 21:41:42 2023 +0100 Drop env filter for tracing-subscriber, not present in Debian commit fe871bf46a19b60c61f46d82965f5e1dd814691e Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 21:32:27 2023 +0100 Add more dependencies commit 645c76f2e117b1fc418c00fd2f5a8e6708aec989 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 21:06:57 2023 +0100 Revert accidental patches commit 0aab1d17c033f7c084829c017517f3b4378db217 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Oct 16 18:37:04 2023 +0100 Fix mimalloc dep commit 0a536dc8bf0ca3650a69509d8a023a0954808b1b Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Sep 25 15:44:16 2023 +0100 refresh patches commit f2f34cb7ac7577bbbd46db3f39f63785cc58ae64 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Sep 25 15:40:39 2023 +0100 Undo patches commit 2433f97ed1bd07a637e1e3d60cd9c493b795a2bc Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Sep 25 15:34:50 2023 +0100 Use older itoa commit 6412bb070179435b7bf7503f73aac470ca929302 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Mon Sep 25 15:31:23 2023 +0100 Drop building benchmark, add more deps commit 1ed885dd1792a4f547a29d5996bcf0003d17ebb3 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Sat Sep 23 23:22:34 2023 +0100 Use older notify commit 7a14c9e27b04f627dab05cd3f89287342cd4887a Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Sat Sep 23 04:22:01 2023 +0100 sync upstream commit b975ef3859dc8a72af889c7ea9a5e07d1c77b386 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Sat Sep 23 04:21:46 2023 +0100 More compatibility work commit 0df9a78b4b0b0c0f0d01d21314e8cc5105be001a Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Sat Sep 23 03:06:04 2023 +0100 Update changelog version commit 776449dafb78764f09f87844e51cd40334039606 Merge: 08a261f6 8bfe9bda Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Sat Sep 23 03:05:53 2023 +0100 Merge tag 'v0.0.291' into debian/main v0.0.291 commit 08a261f637b6274a7eab51df393a224f31e29288 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Fri Sep 22 21:17:04 2023 +0100 Fix repository commit 392fd6681b732c60e0c58db11b95fcb33f1e0a48 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:43:20 2023 +0100 Drop wasm-bindgen-test dep commit 3ff5699c41e50b5fea2479d40791c5bbb1a731bb Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 14:42:32 2023 +0000 Relax test case version commit cae315780df6a1bd946bb5c975c76f7f3bee58b4 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:41:28 2023 +0100 Set source format commit 97f586cf9c4b3e1594a8744fb5bfd1eeb38d6063 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:36:13 2023 +0100 update patches commit 80c3d4f6682f61dbaf04269e9554d020eca88a4f Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:33:39 2023 +0100 Refresh patches commit c87400e252ee652034f4d0ffe43485b5325f8f5e Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:31:39 2023 +0100 relax more deps commit 0c2b3709236bab7e905d1bb56c9fb11a95c3d422 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:29:48 2023 +0100 Add more dependencies commit 0018fff506f071fd58b3c6c172c1b463bcb86325 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:28:53 2023 +0100 Allow newer clap-complete-command, toml commit 6facbc88a3656ddfa8dfb90731e9916fbf9837f3 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Sep 14 15:04:21 2023 +0100 add patch packaged-deps commit 7a2847aacd98299c8b6d051a53e9c7cd4460508c Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Sep 13 21:53:25 2023 +0100 Fix cargo config commit 9f360e71ab42b25778ab83582769b3b0d6269499 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Sep 13 20:50:04 2023 +0000 Ignore backup files commit dda88f281ed58b4e60bf103f5d27b2188c011c99 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Sep 13 20:43:27 2023 +0000 Set Vcs- headers commit 898bea4fca70ded2fa43f1f892350a31976afc1c Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Wed Sep 13 21:42:27 2023 +0100 Update dependencies commit b6bed4edf85f18edc64ab4f6f69977f8df591140 Author: Jelmer Vernooij <jelmer@jelmer.uk> Date: Thu Aug 10 10:01:21 2023 +0100 Initial debian packaging
Among the 33 debian patches available in version 0.0.291+dfsg1-4 of the package, we noticed the following issues: