Skip to content

Ruff 0.15#22875

Merged
ntBre merged 28 commits intomainfrom
brent/0.15.0
Feb 3, 2026
Merged

Ruff 0.15#22875
ntBre merged 28 commits intomainfrom
brent/0.15.0

Conversation

@ntBre
Copy link
Contributor

@ntBre ntBre commented Jan 26, 2026

@astral-sh-bot
Copy link

astral-sh-bot bot commented Jan 29, 2026

ruff-ecosystem results

Linter (stable)

ℹ️ ecosystem check detected linter changes. (+873 -6 violations, +0 -0 fixes in 28 projects; 27 projects unchanged)

DisnakeDev/disnake (+7 -0 violations, +0 -0 fixes)

+ disnake/client.py:1286:52: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ disnake/client.py:1287:53: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ disnake/ext/commands/flag_converter.py:330:33: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ disnake/guild.py:5614:19: FURB110 [*] Replace ternary `if` expression with `or` operator
+ disnake/guild.py:5615:22: FURB110 [*] Replace ternary `if` expression with `or` operator
+ disnake/user.py:227:38: FURB110 [*] Replace ternary `if` expression with `or` operator
+ tests/ext/tasks/test_loops.py:72:15: PLW0108 Lambda may be unnecessary; consider inlining inner function

RasaHQ/rasa (+1 -0 violations, +0 -0 fixes)

+ tests/core/training/test_interactive.py:663:58: RUF037 [*] Unnecessary empty iterable within a deque call

PlasmaPy/PlasmaPy (+1 -0 violations, +0 -0 fixes)

+ noxfile.py:448:15: PLC0207 [*] String is split more times than necessary

apache/airflow (+172 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --no-preview --select ALL

+ airflow-core/src/airflow/api/common/trigger_dag.py:172:12: FURB110 [*] Replace ternary `if` expression with `or` operator
+ airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py:189:22: FURB110 [*] Replace ternary `if` expression with `or` operator
+ airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py:190:26: FURB110 [*] Replace ternary `if` expression with `or` operator
+ airflow-core/src/airflow/cli/commands/config_command.py:991:19: FURB110 [*] Replace ternary `if` expression with `or` operator
+ airflow-core/src/airflow/cli/commands/config_command.py:992:17: FURB110 [*] Replace ternary `if` expression with `or` operator
+ airflow-core/src/airflow/cli/commands/config_command.py:994:23: FURB110 [*] Replace ternary `if` expression with `or` operator
... 91 additional changes omitted for rule FURB110
+ airflow-core/src/airflow/observability/trace.py:102:40: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ airflow-core/src/airflow/utils/db.py:1642:8: FURB171 Membership test against single-item container
+ airflow-core/tests/unit/cli/commands/test_variable_command.py:516:16: FURB171 Membership test against single-item container
+ airflow-core/tests/unit/cli/commands/test_variable_command.py:533:16: FURB171 Membership test against single-item container
... 162 additional changes omitted for project

apache/superset (+46 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --no-preview --select ALL

+ superset/commands/database/sync_permissions.py:92:13: FURB110 [*] Replace ternary `if` expression with `or` operator
+ superset/commands/database/tables.py:143:34: SIM910 [*] Use `extra_dict_by_name.get(table.table)` instead of `extra_dict_by_name.get(table.table, None)`
+ superset/commands/database/uploaders/csv_reader.py:389:25: FURB110 [*] Replace ternary `if` expression with `or` operator
+ superset/commands/database/uploaders/csv_reader.py:493:17: FURB110 Replace ternary `if` expression with `or` operator
+ superset/commands/database/uploaders/csv_reader.py:498:17: FURB110 Replace ternary `if` expression with `or` operator
+ superset/commands/database/uploaders/csv_reader.py:509:17: FURB110 Replace ternary `if` expression with `or` operator
+ superset/commands/database/uploaders/excel_reader.py:72:26: FURB110 Replace ternary `if` expression with `or` operator
... 22 additional changes omitted for rule FURB110
+ superset/connectors/sqla/models.py:883:62: FURB171 Membership test against single-item container
+ superset/dashboards/schemas.py:325:42: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ superset/datasets/schemas.py:128:23: PLW0108 Lambda may be unnecessary; consider inlining inner function
... 36 additional changes omitted for project

aws/aws-sam-cli (+10 -0 violations, +0 -0 fixes)

+ samcli/local/docker/platform_config.py:190:15: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ samcli/local/docker/platform_config.py:191:14: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ samcli/local/docker/platform_config.py:192:16: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/commands/local/lib/test_stack_provider.py:114:51: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/commands/local/lib/test_stack_provider.py:152:51: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/commands/local/lib/test_stack_provider.py:190:51: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/commands/local/lib/test_stack_provider.py:229:51: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/commands/local/lib/test_stack_provider.py:270:51: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/lib/observability/xray_traces/test_xray_event_mappers.py:69:46: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/unit/lib/telemetry/test_event.py:137:21: PLW0108 Lambda may be unnecessary; consider inlining inner function

binary-husky/gpt_academic (+1 -0 violations, +0 -0 fixes)

+ request_llms/bridge_all.py:1304:31: SIM910 [*] Use `dict.get()` without default value

bokeh/bokeh (+52 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --no-preview --select ALL

+ src/bokeh/core/property/dataspec.py:201:71: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ src/bokeh/io/notebook.py:663:26: PLC0207 [*] String is split more times than necessary
+ src/bokeh/io/webdriver.py:219:17: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ src/bokeh/models/annotations/geometry.py:85:31: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ src/bokeh/models/annotations/geometry.py:89:32: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ src/bokeh/models/annotations/geometry.py:93:30: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ src/bokeh/models/annotations/geometry.py:97:33: PLW0108 Lambda may be unnecessary; consider inlining inner function
... 38 additional changes omitted for rule PLW0108
+ src/bokeh/resources.py:617:19: FURB110 [*] Replace ternary `if` expression with `or` operator
+ src/bokeh/settings.py:374:25: FURB110 [*] Replace ternary `if` expression with `or` operator
+ src/bokeh/util/compiler.py:474:12: FURB110 [*] Replace ternary `if` expression with `or` operator
... 42 additional changes omitted for project

facebookresearch/chameleon (+8 -0 violations, +0 -0 fixes)

+ chameleon/inference/chameleon.py:648:19: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ chameleon/miniviewer/miniviewer.py:190:16: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ chameleon/viewer/backend/models/chameleon_distributed.py:405:13: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/chameleon_distributed.py:818:17: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/chameleon_local.py:633:13: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/service.py:131:21: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/service.py:154:17: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/service.py:226:25: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)

freedomofpress/securedrop (+2 -0 violations, +0 -0 fixes)

+ securedrop/pretty_bad_protocol/gnupg.py:644:26: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ securedrop/store.py:345:49: PLC0207 [*] String is split more times than necessary

fronzbot/blinkpy (+5 -0 violations, +0 -0 fixes)

+ tests/test_blink_functions.py:192:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/test_sync_module.py:616:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/test_util.py:135:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/test_util.py:149:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ tests/test_util.py:166:13: PLW0108 Lambda may be unnecessary; consider inlining inner function

ibis-project/ibis (+14 -0 violations, +0 -0 fixes)

+ ibis/backends/impala/tests/test_value_exprs.py:217:9: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ ibis/backends/polars/compiler.py:353:49: FURB110 [*] Replace ternary `if` expression with `or` operator
+ ibis/backends/singlestoredb/__init__.py:1045:16: FURB171 Membership test against single-item container
+ ibis/backends/tests/sql/test_sql.py:671:22: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ ibis/backends/tests/test_client.py:1024:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ ibis/backends/tests/test_client.py:1043:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ ibis/backends/tests/test_client.py:1051:13: PLW0108 Lambda may be unnecessary; consider inlining inner function
+ ibis/backends/tests/test_client.py:211:24: PLW0108 Lambda may be unnecessary; consider inlining inner function
... 6 additional changes omitted for rule PLW0108
+ ibis/examples/gen_registry.py:125:52: PLC0207 [*] String is split more times than necessary
... 5 additional changes omitted for project

... Truncated remaining completed project reports due to GitHub comment length restrictions

Changes by rule (12 rules affected)

code total + violation - violation + fix - fix
UP043 250 250 0 0 0
RUF061 206 206 0 0 0
FURB110 154 154 0 0 0
PLW0108 144 144 0 0 0
PLC0207 54 54 0 0 0
FURB171 35 35 0 0 0
invalid-syntax: 15 15 0 0 0
SIM910 6 6 0 0 0
RUF100 6 0 6 0 0
RUF060 4 4 0 0 0
RUF037 3 3 0 0 0
A003 2 2 0 0 0

Linter (preview)

ℹ️ ecosystem check detected linter changes. (+69 -54 violations, +0 -0 fixes in 16 projects; 39 projects unchanged)

PlasmaPy/PlasmaPy (+1 -1 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

- noxfile.py:448:15: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ noxfile.py:448:15: PLC0207 [*] String is split more times than necessary

apache/airflow (+16 -16 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview --select ALL

- dev/backport/update_backport_status.py:80:21: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ dev/backport/update_backport_status.py:80:21: PLC0207 [*] String is split more times than necessary
- dev/breeze/src/airflow_breeze/commands/common_options.py:524:26: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ dev/breeze/src/airflow_breeze/commands/common_options.py:524:26: PLC0207 [*] String is split more times than necessary
- dev/breeze/src/airflow_breeze/commands/release_management_commands.py:2815:50: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ dev/breeze/src/airflow_breeze/commands/release_management_commands.py:2815:50: PLC0207 [*] String is split more times than necessary
- dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py:719:34: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py:719:34: PLC0207 [*] String is split more times than necessary
- dev/breeze/src/airflow_breeze/utils/click_validators.py:46:17: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ dev/breeze/src/airflow_breeze/utils/click_validators.py:46:17: PLC0207 [*] String is split more times than necessary
- dev/breeze/src/airflow_breeze/utils/run_utils.py:120:25: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ dev/breeze/src/airflow_breeze/utils/run_utils.py:120:25: PLC0207 [*] String is split more times than necessary
- dev/breeze/src/airflow_breeze/utils/selective_checks.py:1779:23: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
... 19 additional changes omitted for project

apache/superset (+3 -3 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview --select ALL

- superset/db_engine_specs/lint_metadata.py:100:17: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ superset/db_engine_specs/lint_metadata.py:100:17: PLC0207 [*] String is split more times than necessary
- tests/common/query_context_generator.py:214:29: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ tests/common/query_context_generator.py:214:29: PLC0207 [*] String is split more times than necessary
- tests/common/query_context_generator.py:255:22: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ tests/common/query_context_generator.py:255:22: PLC0207 [*] String is split more times than necessary

bokeh/bokeh (+3 -3 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview --select ALL

- src/bokeh/io/notebook.py:663:26: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ src/bokeh/io/notebook.py:663:26: PLC0207 [*] String is split more times than necessary
- src/bokeh/util/token.py:142:41: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ src/bokeh/util/token.py:142:41: PLC0207 [*] String is split more times than necessary
- src/bokeh/util/token.py:155:41: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ src/bokeh/util/token.py:155:41: PLC0207 [*] String is split more times than necessary

facebookresearch/chameleon (+8 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

+ chameleon/inference/chameleon.py:648:19: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ chameleon/miniviewer/miniviewer.py:190:16: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ chameleon/viewer/backend/models/chameleon_distributed.py:405:13: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/chameleon_distributed.py:818:17: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/chameleon_local.py:633:13: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/service.py:131:21: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/service.py:154:17: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)
+ chameleon/viewer/backend/models/service.py:226:25: invalid-syntax: Cannot use `match` statement on Python 3.7 (syntax was added in Python 3.10)

freedomofpress/securedrop (+1 -1 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

- securedrop/store.py:345:49: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ securedrop/store.py:345:49: PLC0207 [*] String is split more times than necessary

ibis-project/ibis (+1 -1 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

- ibis/examples/gen_registry.py:125:52: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ ibis/examples/gen_registry.py:125:52: PLC0207 [*] String is split more times than necessary

langchain-ai/langchain (+10 -10 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

- libs/langchain/langchain_classic/agents/chat/output_parser.py:66:22: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ libs/langchain/langchain_classic/agents/chat/output_parser.py:66:22: PLC0207 [*] String is split more times than necessary
- libs/langchain/langchain_classic/agents/conversational/output_parser.py:34:28: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ libs/langchain/langchain_classic/agents/conversational/output_parser.py:34:28: PLC0207 [*] String is split more times than necessary
- libs/langchain/langchain_classic/agents/mrkl/output_parser.py:72:28: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ libs/langchain/langchain_classic/agents/mrkl/output_parser.py:72:28: PLC0207 [*] String is split more times than necessary
- libs/langchain/langchain_classic/agents/output_parsers/react_json_single_input.py:81:22: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ libs/langchain/langchain_classic/agents/output_parsers/react_json_single_input.py:81:22: PLC0207 [*] String is split more times than necessary
- libs/langchain/langchain_classic/agents/output_parsers/react_single_input.py:72:28: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ libs/langchain/langchain_classic/agents/output_parsers/react_single_input.py:72:28: PLC0207 [*] String is split more times than necessary
... 10 additional changes omitted for project

pandas-dev/pandas (+1 -1 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

- pandas/compat/_optional.py:165:14: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ pandas/compat/_optional.py:165:14: PLC0207 [*] String is split more times than necessary

pypa/cibuildwheel (+3 -3 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

- bin/update_pythons.py:129:22: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ bin/update_pythons.py:129:22: PLC0207 [*] String is split more times than necessary
- cibuildwheel/platforms/macos.py:154:31: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ cibuildwheel/platforms/macos.py:154:31: PLC0207 [*] String is split more times than necessary
- cibuildwheel/selector.py:78:26: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ cibuildwheel/selector.py:78:26: PLC0207 [*] String is split more times than necessary

qdrant/qdrant-client (+2 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview

+ qdrant_client/async_qdrant_fastembed.py:226:16: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ qdrant_client/qdrant_fastembed.py:223:16: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)

zulip/zulip (+10 -10 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview --select ALL

- zerver/lib/send_email.py:301:16: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ zerver/lib/send_email.py:301:16: PLC0207 [*] String is split more times than necessary
- zerver/lib/send_email.py:449:21: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ zerver/lib/send_email.py:449:21: PLC0207 [*] String is split more times than necessary
- zerver/lib/webhooks/common.py:285:26: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ zerver/lib/webhooks/common.py:285:26: PLC0207 [*] String is split more times than necessary
- zerver/lib/webhooks/common.py:297:16: PLC0207 [*] Replace with `split(..., maxsplit=1)`.
+ zerver/lib/webhooks/common.py:297:16: PLC0207 [*] String is split more times than necessary
- zerver/middleware.py:230:49: PLC0207 [*] Replace with `rsplit(..., maxsplit=1)`.
+ zerver/middleware.py:230:49: PLC0207 [*] String is split more times than necessary
... 10 additional changes omitted for project

openai/openai-cookbook (+5 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --no-fix --output-format concise --preview --select A,E703,F704,B015,B018,D100

+ examples/Context_summarization_with_realtime_api.ipynb:cell 15:7:16: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ examples/Embedding_long_inputs.ipynb:cell 12:9:12: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ examples/agents_sdk/session_memory.ipynb:cell 42:30:53: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ examples/chatgpt/rag-quickstart/azure/Azure_AI_Search_with_Azure_Functions_and_GPT_Actions_in_ChatGPT.ipynb:cell 21:7:12: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
+ examples/chatgpt/rag-quickstart/gcp/Getting_started_with_bigquery_vector_search_and_openai.ipynb:cell 18:7:12: invalid-syntax: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)

... Truncated remaining completed project reports due to GitHub comment length restrictions

Changes by rule (2 rules affected)

code total + violation - violation + fix - fix
PLC0207 108 54 54 0 0
invalid-syntax: 15 15 0 0 0

Formatter (stable)

ℹ️ ecosystem check detected format changes. (+1293 -691 lines in 470 files in 33 projects; 22 projects unchanged)

PostHog/HouseWatch (+2 -0 lines across 2 files)

housewatch/api/async_migration.py~L52

 
     @action(methods=["POST"], detail=True)
     def trigger(self, request, **kwargs):
+
         migration = self.get_object()
 
         migration.status = MigrationStatus.Starting

housewatch/async_migrations/runner.py~L27

 def start_async_migration(
     migration: AsyncMigration, ignore_posthog_version=False
 ) -> bool:
+
     if migration.status not in [MigrationStatus.Starting, MigrationStatus.NotStarted]:
         logger.error(f"Initial check failed for async migration {migration.name}")
         return False

RasaHQ/rasa (+178 -20 lines across 92 files)

data/test_classes/custom_slots.py~L28

         value_reset_delay: Optional[int] = None,
         influence_conversation: bool = True,
     ) -> None:
+
         super().__init__(
             name=name,
             initial_value=initial_value,

examples/reminderbot/actions/actions.py~L28

         tracker: Tracker,
         domain: Dict[Text, Any],
     ) -> List[Dict[Text, Any]]:
+
         dispatcher.utter_message("I will remind you in 5 seconds.")
 
         date = datetime.datetime.now() + datetime.timedelta(seconds=5)

examples/reminderbot/actions/actions.py~L56

         tracker: Tracker,
         domain: Dict[Text, Any],
     ) -> List[Dict[Text, Any]]:
+
         name = next(tracker.get_slot("PERSON"), "someone")
         dispatcher.utter_message(f"Remember to call {name}!")
 

examples/reminderbot/actions/actions.py~L71

     async def run(
         self, dispatcher, tracker: Tracker, domain: Dict[Text, Any]
     ) -> List[Dict[Text, Any]]:
+
         conversation_id = tracker.sender_id
 
         dispatcher.utter_message(f"The ID of this conversation is '{conversation_id}'.")

examples/reminderbot/actions/actions.py~L98

         tracker: Tracker,
         domain: Dict[Text, Any],
     ) -> List[Dict[Text, Any]]:
+
         plant = next(tracker.get_latest_entity_values("plant"), "someone")
         dispatcher.utter_message(f"Your {plant} needs some water!")
 

examples/reminderbot/actions/actions.py~L113

     async def run(
         self, dispatcher, tracker: Tracker, domain: Dict[Text, Any]
     ) -> List[Dict[Text, Any]]:
+
         dispatcher.utter_message("Okay, I'll cancel all your reminders.")
 
         # Cancel all reminders

examples/reminderbot/callback_server.py~L4

 
 
 def create_app() -> Sanic:
+
     bot_app = Sanic("callback_server", configure_logging=False)
 
     @bot_app.post("/bot")

rasa/cli/export.py~L177

 
 
 async def _export_trackers(args: argparse.Namespace) -> None:
+
     _assert_max_timestamp_is_greater_than_min_timestamp(args)
 
     endpoints = rasa.core.utils.read_endpoints_from_path(args.endpoints)

<a href='https://github.com/RasaHQ/rasa/blob/c4069568b4fe2adb5d5a1e55d17ce8cb9dda27fc

... (truncated 8993 lines) ...

ntBre and others added 22 commits February 3, 2026 09:41
Tests look good, just two very small comma changes to the docs

I cherry-picked the docs changes from last time (#20231)

https://docs.astral.sh/ruff/rules/in-empty-collection/
I made one small tweak to the fix safety docs, but this otherwise looked
good to
me.
I made two small tweaks to the docs, but this otherwise looked good to
me.

https://docs.astral.sh/ruff/rules/legacy-form-pytest-raises/
Summary
--

This PR stabilizes the changes from #21097 and closes #19552. Note that
this has
two effects:

- the default output format in `--watch` mode becomes `full` instead of
`concise`
- the `--output-format` flag will now be respected

So the default output is now more verbose, but the old stable behavior
can be
retained by passing `--output-format=concise` (or any other supported
format)
instead.

Test Plan
--

Manual testing. I think we tried to set up automated tests in an earlier
PR but
decided they were too complex.

I really should have cropped these, but I'll just collapse them instead:

<details><summary>Screenshots</summary>
<p>

### Current output, no `--output-format`

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/a758daa8-534e-4dab-9cff-858321cede61"
/>

### Current output, `--output-format=json`

The same as above, the flag has no effect

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/e5b0743a-6bd5-4dec-83e0-de24e44567ca"
/>

### PR branch output, no `--output-format`

Default format is now `full` rather than `concise`

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/cf51947d-52e3-4420-83e7-73530557c324"
/>

### PR branch output, `--output-format=json`

JSON output, the flag works

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/e7127c5a-88ad-4b2a-80b4-193b63b631ee"
/>

</p>
</details>
I re-wrapped one line in the docs here and also factored out a reference
link
since it was used twice. I also moved the test from the `preview_rules`
function
to `rules`.
Docs and tests looked good
I tried to simplify the docs slightly by using a code block instead of a
fairly
long inline function definition, but the docs and tests otherwise looked
good to
me.

https://docs.astral.sh/ruff/rules/unnecessary-lambda/
I made a couple small tweaks to the docs, but this otherwise looked good
to me.

https://docs.astral.sh/ruff/rules/missing-maxsplit-arg/
Added in #21623. 

I think I caught everything, including the preview reference in the
linter docs, but hopefully @amyreese will remember anything else I
missed.
## Summary

Closes #21956 

**Root cause:** When a .ruff.toml, ruff.toml config was discovered via
ancestor search, Ruff eagerly derived target-version from
requires-python in pyproject.toml during config loading. That fallback
value then participated in config merging and incorrectly overrode an
explicit target-version defined in an extended config.

**Fix:** Defer the requires-python fallback until after the full extend
chain across .ruff.toml / ruff.toml is merged, and apply it only if
target-version is still unset.

**Impact:** Explicit target-version settings in extended configs are now
respected, requires-python is only used as a fallback.

## Test Plan

Added a new test. I was useful to validate the fix but may be redundant
to keep, lmk if you would love me to remove it

---------

Co-authored-by: dylwil3 <dylwil3@gmail.com>
Styles stabilized:

-
[`avoid_parens_for_long_as_captures`](#22743)
-
[`remove_parens_around_except_types`](#22741)
-
[`allow_newline_after_block_open`](#22742)
- [`no_chaperone_for_escaped_quote_in_triple_quoted_docstring
`](#22739)
- [`blank_line_before_decorated_class_in_stub
`](#22740)
-
[`parenthesize_lambda_bodies`](#22744)

To-do:

- [x] Change target branch to 0.15 release branch
- [x] Update documentation
- [x] Remove empty commit

---------

Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
@ntBre ntBre marked this pull request as ready for review February 3, 2026 14:42
@AlexWaygood AlexWaygood removed their request for review February 3, 2026 14:47
@ntBre ntBre merged commit b534607 into main Feb 3, 2026
64 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking Breaking API change release Related to the release process

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants