-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement Flynt static string join transform as FLY002 #4196
Conversation
3beb1d6
to
e373352
Compare
Sadly the best way to debug is to print out |
We should change it to print the syntax-erroring code in debug mode, since I find myself doing this a lot. |
PR Check ResultsEcosystemℹ️ ecosystem check detected changes. (+34, -0, 0 error(s)) airflow (+25, -0)
+ airflow/api/auth/backend/kerberos_auth.py:150:60: FLY002 [*] Consider `f"negotiate {ctx.kerberos_token}"` instead of string join
+ airflow/providers/amazon/aws/log/s3_task_handler.py:203:23: FLY002 [*] Consider `f"{old_log}\n{log}"` instead of string join
+ airflow/providers/cncf/kubernetes/decorators/kubernetes.py:103:13: FLY002 [*] Consider `f"{write_local_script_file_cmd} && {write_local_input_file_cmd} && {make_xcom_dir_cmd} && {exec_python_cmd}"` instead of string join
+ airflow/providers/google/cloud/log/gcs_task_handler.py:243:19: FLY002 [*] Consider `f"{old_log}\n{log}"` instead of string join
+ airflow/providers/microsoft/azure/log/wasb_task_handler.py:238:19: FLY002 [*] Consider `f"{old_log}\n{log}"` instead of string join
+ airflow/settings.py:63:10: FLY002 [*] Consider `f" ____________ _____________\n ____ |__( )_________ __/__ /________ __\n____ /| |_ /__ ___/_ /_ __ /_ __ \\_ | /| / /\n___ ___ | / _ / _ __/ _ / / /_/ /_ |/ |/ /\n _/_/ |_/_/ /_/ /_/ /_/ \\____/____/|__/"` instead of string join
+ airflow/www/views.py:1388:39: FLY002 [*] Consider `f"{template_field}.{key}"` instead of string join
+ airflow/www/views.py:1390:39: FLY002 [*] Consider `f"{template_field}.{key}"` instead of string join
+ airflow/www/views.py:1395:41: FLY002 [*] Consider `f"{template_field}.{dict_keys}"` instead of string join
+ airflow/www/views.py:496:23: FLY002 [*] Consider `f"{key}.{sub_key}"` instead of string join
+ tests/always/test_connection.py:106:49: FLY002 [*] Consider `f"{key2.decode()},{key1.decode()}"` instead of string join
+ tests/cli/commands/test_kubernetes_command.py:60:22: FLY002 [*] Consider `f"dag_id,task_id,try_number,airflow_version"` instead of string join
+ tests/cli/commands/test_rotate_fernet_key_command.py:100:38: FLY002 [*] Consider `f"{fernet_key2.decode()},{fernet_key1.decode()}"` instead of string join
+ tests/cli/commands/test_rotate_fernet_key_command.py:64:38: FLY002 [*] Consider `f"{fernet_key2.decode()},{fernet_key1.decode()}"` instead of string join
+ tests/dags/test_clear_subdag.py:32:16: FLY002 [*] Consider `f"{dag_name}.{subdag_name}"` instead of string join
+ tests/models/test_variable.py:87:49: FLY002 [*] Consider `f"{key2.decode()},{key1.decode()}"` instead of string join
+ tests/providers/cncf/kubernetes/utils/test_pod_manager.py:250:59: FLY002 [*] Consider `f"{real_timestamp} {log_message}"` instead of string join
+ tests/providers/google/common/hooks/test_base_google.py:522:17: FLY002 [*] Consider `f"https://www.googleapis.com/auth/bigquery,https://www.googleapis.com/auth/devstorage.read_only"` instead of string join
+ tests/providers/google/common/hooks/test_base_google.py:589:17: FLY002 [*] Consider `f"https://www.googleapis.com/auth/bigquery,https://www.googleapis.com/auth/devstorage.read_only"` instead of string join
+ tests/utils/test_dot_renderer.py:181:38: FLY002 [*] Consider `f'digraph example_task_group {{\n\tgraph [label=example_task_group labelloc=t rankdir=LR]\n\tend [color="#000000" fillcolor="#e8f7e4" label=end shape=rectangle style="filled,rounded"]\n\tsubgraph cluster_section_1 {{\n\t\tcolor="#000000" fillcolor="#6495ed7f" label=section_1 shape=rectangle style=filled\n\t\t"section_1.upstream_join_id" [color="#000000" fillcolor=CornflowerBlue height=0.2 label="" shape=circle style="filled,rounded" width=0.2]\n\t\t"section_1.downstream_join_id" [color="#000000" fillcolor=CornflowerBlue height=0.2 label="" shape=circle style="filled,rounded" width=0.2]\n\t\t"section_1.task_1" [color="#000000" fillcolor="#e8f7e4" label=task_1 shape=rectangle style="filled,rounded"]\n\t\t"section_1.task_2" [color="#000000" fillcolor="#f0ede4" label=task_2 shape=rectangle style="filled,rounded"]\n\t\t"section_1.task_3" [color="#000000" fillcolor="#e8f7e4" label=task_3 shape=rectangle style="filled,rounded"]\n\t}}\n\tsubgraph cluster_section_2 {{\n\t\tcolor="#000000" fillcolor="#6495ed7f" label=section_2 shape=rectangle style=filled\n\t\t"section_2.upstream_join_id" [color="#000000" fillcolor=CornflowerBlue height=0.2 label="" shape=circle style="filled,rounded" width=0.2]\n\t\t"section_2.downstream_join_id" [color="#000000" fillcolor=CornflowerBlue height=0.2 label="" shape=circle style="filled,rounded" width=0.2]\n\t\tsubgraph "cluster_section_2.inner_section_2" {{\n\t\t\tcolor="#000000" fillcolor="#6495ed7f" label=inner_section_2 shape=rectangle style=filled\n\t\t\t"section_2.inner_section_2.task_2" [color="#000000" fillcolor="#f0ede4" label=task_2 shape=rectangle style="filled,rounded"]\n\t\t\t"section_2.inner_section_2.task_3" [color="#000000" fillcolor="#e8f7e4" label=task_3 shape=rectangle style="filled,rounded"]\n\t\t\t"section_2.inner_section_2.task_4" [color="#000000" fillcolor="#e8f7e4" label=task_4 shape=rectangle style="filled,rounded"]\n\t\t}}\n\t\t"section_2.task_1" [color="#000000" fillcolor="#e8f7e4" label=task_1 shape=rectangle style="filled,rounded"]\n\t}}\n\tstart [color="#000000" fillcolor="#e8f7e4" label=start shape=rectangle style="filled,rounded"]\n\t"section_1.downstream_join_id" -> "section_2.upstream_join_id"\n\t"section_1.task_1" -> "section_1.task_2"\n\t"section_1.task_1" -> "section_1.task_3"\n\t"section_1.task_2" -> "section_1.downstream_join_id"\n\t"section_1.task_3" -> "section_1.downstream_join_id"\n\t"section_1.upstream_join_id" -> "section_1.task_1"\n\t"section_2.downstream_join_id" -> end\n\t"section_2.inner_section_2.task_2" -> "section_2.inner_section_2.task_4"\n\t"section_2.inner_section_2.task_3" -> "section_2.inner_section_2.task_4"\n\t"section_2.inner_section_2.task_4" -> "section_2.downstream_join_id"\n\t"section_2.task_1" -> "section_2.downstream_join_id"\n\t"section_2.upstream_join_id" -> "section_2.inner_section_2.task_2"\n\t"section_2.upstream_join_id" -> "section_2.inner_section_2.task_3"\n\t"section_2.upstream_join_id" -> "section_2.task_1"\n\tstart -> "section_1.upstream_join_id"\n}}'` instead of string join
+ tests/utils/test_log_handlers.py:368:13: FLY002 [*] Consider `f"airflow_version=.+?,dag_id=dag_for_testing_file_task_handler,kubernetes_executor=True,run_id=manual__2016-01-01T0000000000-2b88d1d57,task_id=task_for_testing_file_log_handler,try_number=2,airflow-worker"` instead of string join
+ tests/utils/test_log_handlers.py:543:19: FLY002 [*] Consider `f"[2022-11-16T00:05:54.278-0800] {{taskinstance.py:1258}} INFO - Starting attempt 1 of 1"` instead of string join
+ tests/utils/test_log_handlers.py:548:19: FLY002 [*] Consider `f"[2022-11-16T00:05:54.295-0800] {{taskinstance.py:1278}} INFO - Executing <Task(TimeDeltaSensorAsync): wait> on 2022-11-16 08:05:52.324532+00:00\n[2022-11-16T00:05:54.300-0800] {{standard_task_runner.py:55}} INFO - Started process 52536 to run task\n[2022-11-16T00:05:54.300-0800] {{standard_task_runner.py:55}} INFO - Started process 52536 to run task\n[2022-11-16T00:05:54.300-0800] {{standard_task_runner.py:55}} INFO - Started process 52536 to run task\n[2022-11-16T00:05:54.306-0800] {{standard_task_runner.py:82}} INFO - Running: ['airflow', 'tasks', 'run', 'simple_async_timedelta', 'wait', 'manual__2022-11-16T08:05:52.324532+00:00', '--job-id', '33648', '--raw', '--subdir', '/Users/dstandish/code/airflow/airflow/example_dags/example_time_delta_sensor_async.py', '--cfg-path', '/var/folders/7_/1xx0hqcs3txd7kqt0ngfdjth0000gn/T/tmp725r305n']\n[2022-11-16T00:05:54.309-0800] {{standard_task_runner.py:83}} INFO - Job 33648: Subtask wait"` instead of string join
+ tests/utils/test_log_handlers.py:558:19: FLY002 [*] Consider `f"[2022-11-16T00:05:54.457-0800] {{task_command.py:376}} INFO - Running <TaskInstance: simple_async_timedelta.wait manual__2022-11-16T08:05:52.324532+00:00 [running]> on host daniels-mbp-2.lan\n[2022-11-16T00:05:54.592-0800] {{taskinstance.py:1485}} INFO - Exporting env vars: AIRFLOW_CTX_DAG_OWNER=airflow\nAIRFLOW_CTX_DAG_ID=simple_async_timedelta\nAIRFLOW_CTX_TASK_ID=wait\nAIRFLOW_CTX_EXECUTION_DATE=2022-11-16T08:05:52.324532+00:00\nAIRFLOW_CTX_TRY_NUMBER=1\nAIRFLOW_CTX_DAG_RUN_ID=manual__2022-11-16T08:05:52.324532+00:00\n[2022-11-16T00:05:54.604-0800] {{taskinstance.py:1360}} INFO - Pausing task as DEFERRED. dag_id=simple_async_timedelta, task_id=wait, execution_date=20221116T080552, start_date=20221116T080554"` instead of string join
+ tests/utils/test_log_handlers.py:570:16: FLY002 [*] Consider `f"[2022-11-16T00:05:54.278-0800] {{taskinstance.py:1258}} INFO - Starting attempt 1 of 1\n[2022-11-16T00:05:54.295-0800] {{taskinstance.py:1278}} INFO - Executing <Task(TimeDeltaSensorAsync): wait> on 2022-11-16 08:05:52.324532+00:00\n[2022-11-16T00:05:54.300-0800] {{standard_task_runner.py:55}} INFO - Started process 52536 to run task\n[2022-11-16T00:05:54.306-0800] {{standard_task_runner.py:82}} INFO - Running: ['airflow', 'tasks', 'run', 'simple_async_timedelta', 'wait', 'manual__2022-11-16T08:05:52.324532+00:00', '--job-id', '33648', '--raw', '--subdir', '/Users/dstandish/code/airflow/airflow/example_dags/example_time_delta_sensor_async.py', '--cfg-path', '/var/folders/7_/1xx0hqcs3txd7kqt0ngfdjth0000gn/T/tmp725r305n']\n[2022-11-16T00:05:54.309-0800] {{standard_task_runner.py:83}} INFO - Job 33648: Subtask wait\n[2022-11-16T00:05:54.457-0800] {{task_command.py:376}} INFO - Running <TaskInstance: simple_async_timedelta.wait manual__2022-11-16T08:05:52.324532+00:00 [running]> on host daniels-mbp-2.lan\n[2022-11-16T00:05:54.592-0800] {{taskinstance.py:1485}} INFO - Exporting env vars: AIRFLOW_CTX_DAG_OWNER=airflow\nAIRFLOW_CTX_DAG_ID=simple_async_timedelta\nAIRFLOW_CTX_TASK_ID=wait\nAIRFLOW_CTX_EXECUTION_DATE=2022-11-16T08:05:52.324532+00:00\nAIRFLOW_CTX_TRY_NUMBER=1\nAIRFLOW_CTX_DAG_RUN_ID=manual__2022-11-16T08:05:52.324532+00:00\n[2022-11-16T00:05:54.604-0800] {{taskinstance.py:1360}} INFO - Pausing task as DEFERRED. dag_id=simple_async_timedelta, task_id=wait, execution_date=20221116T080552, start_date=20221116T080554"` instead of string join zulip (+9, -0)
+ zerver/lib/request.py:351:27: FLY002 [*] Consider `f"{req_func.__module__}.{req_func.__name__}"` instead of string join
+ zerver/lib/upload/local.py:239:37: FLY002 [*] Consider `f"{emoji_path}.original"` instead of string join
+ zerver/lib/upload/s3.py:449:13: FLY002 [*] Consider `f"{emoji_path}.original"` instead of string join
+ zerver/migrations/0149_realm_emoji_drop_unique_constraint.py:85:12: FLY002 [*] Consider `f"{new_name}{image_ext}"` instead of string join
+ zerver/tests/test_invite.py:479:26: FLY002 [*] Consider `f"{cross_realm_bot_email},{legit_new_email}"` instead of string join
+ zerver/tests/test_message_fetch.py:329:28: FLY002 [*] Consider `f"{self.example_user('hamlet').email},{self.example_user('othello').email}"` instead of string join
+ zerver/tests/test_message_fetch.py:342:22: FLY002 [*] Consider `f"{self.example_user('cordelia').email},{self.example_user('othello').email}"` instead of string join
+ zerver/tests/test_message_fetch.py:354:28: FLY002 [*] Consider `f"{self.example_user('hamlet').email},{self.example_user('othello').email}"` instead of string join
+ zerver/tests/test_message_fetch.py:369:22: FLY002 [*] Consider `f"{self.example_user('cordelia').email},{self.example_user('othello').email}"` instead of string join BenchmarkLinux
Windows
|
I made some changes to our test infra so that should help you narrow down the issue #4202 |
e373352
to
814ae01
Compare
e1ec45e
to
129d55a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Impressive work! I only have a few nit comments.
783eed0
to
fdff76d
Compare
Co-authored-by: Micha Reiser <micha@reiser.io>
fdff76d
to
b988b59
Compare
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://togithub.com/charliermarsh/ruff) ([changelog](https://togithub.com/charliermarsh/ruff/releases)) | `^0.0.265` -> `^0.0.267` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/compatibility-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/confidence-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.267`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.267) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.266...v0.0.267) <!-- Release notes generated using configuration in .github/release.yml at main --> #### Summary Follow-up release to v0.0.266 to fix an issue with `python -m ruff`- and `import ruff`-based workflows. (No new rules or functionality.) #### What's Changed ##### Rules - Implement `RUF010` to detect explicit type conversions within f-strings by [@​LotemAm](https://togithub.com/LotemAm) in [https://github.com/charliermarsh/ruff/pull/4387](https://togithub.com/charliermarsh/ruff/pull/4387) ##### Other Changes - Workaround for maturin bug by [@​konstin](https://togithub.com/konstin) in [https://github.com/charliermarsh/ruff/pull/4399](https://togithub.com/charliermarsh/ruff/pull/4399) #### New Contributors - [@​OMEGARAZER](https://togithub.com/OMEGARAZER) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3938](https://togithub.com/charliermarsh/ruff/pull/3938) - [@​LotemAm](https://togithub.com/LotemAm) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4387](https://togithub.com/charliermarsh/ruff/pull/4387) **Full Changelog**: astral-sh/ruff@v0.0.266...v0.0.267 ### [`v0.0.266`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.266) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.265...v0.0.266) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Breaking Changes - Remove deprecated `update-check` setting by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4313](https://togithub.com/charliermarsh/ruff/pull/4313) - JSON Emitter: Use one indexed column numbers for edits by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4007](https://togithub.com/charliermarsh/ruff/pull/4007) ##### Rules - \[`pygrep-hooks`] Implement pygrep-hook's Mock-mistake diagnostic by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4366](https://togithub.com/charliermarsh/ruff/pull/4366) - \[`pylint`] Implement `nested-min-max` (`W3301`) by [@​mccullocht](https://togithub.com/mccullocht) in [https://github.com/charliermarsh/ruff/pull/4200](https://togithub.com/charliermarsh/ruff/pull/4200) - \[`flynt`] Implement Flynt static string join transform as FLY002 by [@​akx](https://togithub.com/akx) in [https://github.com/charliermarsh/ruff/pull/4196](https://togithub.com/charliermarsh/ruff/pull/4196) - \[`pylint`] Include positional- and keyword-only arguments in too-many-arguments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4329](https://togithub.com/charliermarsh/ruff/pull/4329) - \[`ruff`] Update confusable character mapping by [@​akx](https://togithub.com/akx) in [https://github.com/charliermarsh/ruff/pull/4274](https://togithub.com/charliermarsh/ruff/pull/4274) ##### Settings - Add .git-rewrite folder to default ignored folder paths by [@​jleclanche](https://togithub.com/jleclanche) in [https://github.com/charliermarsh/ruff/pull/4261](https://togithub.com/charliermarsh/ruff/pull/4261) - Feat: detect changes also in configuration files by [@​mikeleppane](https://togithub.com/mikeleppane) in [https://github.com/charliermarsh/ruff/pull/4169](https://togithub.com/charliermarsh/ruff/pull/4169) ##### Bug Fixes - Revert the B027 autofix logic by [@​aacunningham](https://togithub.com/aacunningham) in [https://github.com/charliermarsh/ruff/pull/4310](https://togithub.com/charliermarsh/ruff/pull/4310) - Consider Flask app logger as logger candidate by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4253](https://togithub.com/charliermarsh/ruff/pull/4253) - Enforce max-doc-length for multi-line docstrings by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4347](https://togithub.com/charliermarsh/ruff/pull/4347) - Avoid re-using imports beyond current edit site by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4378](https://togithub.com/charliermarsh/ruff/pull/4378) - Respect insertion location when importing symbols by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4258](https://togithub.com/charliermarsh/ruff/pull/4258) - Fix jemalloc page size on aarch64 by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4247](https://togithub.com/charliermarsh/ruff/pull/4247) - Fix replace_whitespace() tabulation to space by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/4226](https://togithub.com/charliermarsh/ruff/pull/4226) - Avoid fixing `PD002` in a lambda expression by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4286](https://togithub.com/charliermarsh/ruff/pull/4286) - Avoid `D403` if first char cannot be uppercased by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4283](https://togithub.com/charliermarsh/ruff/pull/4283) - Avoid panics for f-string rewrites at start-of-file by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4291](https://togithub.com/charliermarsh/ruff/pull/4291) - Rewrite `not not a` as `bool(a)` in boolean contexts by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4294](https://togithub.com/charliermarsh/ruff/pull/4294) - Include static and class methods in in abstract decorator list by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4298](https://togithub.com/charliermarsh/ruff/pull/4298) - Specify exact command in incorrect parentheses suggestion by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4300](https://togithub.com/charliermarsh/ruff/pull/4300) - Ignore `TRY301` exceptions without except handlers by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4301](https://togithub.com/charliermarsh/ruff/pull/4301) - Preserve whitespace around `ListComp` brackets in `C419` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4099](https://togithub.com/charliermarsh/ruff/pull/4099) - Tweak capitalization of B021 message by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4350](https://togithub.com/charliermarsh/ruff/pull/4350) - Avoid debug panic with empty indent replacement by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4364](https://togithub.com/charliermarsh/ruff/pull/4364) - Use target name in hardcoded-password diagnostics by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4365](https://togithub.com/charliermarsh/ruff/pull/4365) - Avoid underflow in expected-special-method-signature by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4377](https://togithub.com/charliermarsh/ruff/pull/4377) - Respect `__all__` imports when determining definition visibility by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4357](https://togithub.com/charliermarsh/ruff/pull/4357) - Ignore some methods on list in `flake8-boolean-trap` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4385](https://togithub.com/charliermarsh/ruff/pull/4385) - Fix false positives in PD002 by [@​evanrittenhouse](https://togithub.com/evanrittenhouse) in [https://github.com/charliermarsh/ruff/pull/4337](https://togithub.com/charliermarsh/ruff/pull/4337) - Run autofix on initial watcher pass by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4311](https://togithub.com/charliermarsh/ruff/pull/4311) - Avoid SIM105 autofixes that would remove comments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4330](https://togithub.com/charliermarsh/ruff/pull/4330) - Handle `.encode` calls on parenthesized expressions by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4338](https://togithub.com/charliermarsh/ruff/pull/4338) - Truncate `SyntaxError`s before newline character by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4124](https://togithub.com/charliermarsh/ruff/pull/4124) - Use non-empty ranges for logical-lines diagnostics by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4133](https://togithub.com/charliermarsh/ruff/pull/4133) #### New Contributors - [@​jleclanche](https://togithub.com/jleclanche) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4261](https://togithub.com/charliermarsh/ruff/pull/4261) - [@​aureliojargas](https://togithub.com/aureliojargas) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4306](https://togithub.com/charliermarsh/ruff/pull/4306) - [@​intgr](https://togithub.com/intgr) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4304](https://togithub.com/charliermarsh/ruff/pull/4304) - [@​mikeleppane](https://togithub.com/mikeleppane) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4169](https://togithub.com/charliermarsh/ruff/pull/4169) - [@​dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4354](https://togithub.com/charliermarsh/ruff/pull/4354) **Full Changelog**: astral-sh/ruff@v0.0.265...v0.0.266 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, 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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/ixm-one/pytest-cmake-presets). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://togithub.com/charliermarsh/ruff) ([changelog](https://togithub.com/charliermarsh/ruff/releases)) | `==0.0.265` -> `==0.0.267` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/compatibility-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/confidence-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.267`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.267) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.266...v0.0.267) <!-- Release notes generated using configuration in .github/release.yml at main --> #### Summary Follow-up release to v0.0.266 to fix an issue with `python -m ruff`- and `import ruff`-based workflows. (No new rules or functionality.) #### What's Changed ##### Rules - Implement `RUF010` to detect explicit type conversions within f-strings by [@​LotemAm](https://togithub.com/LotemAm) in [https://github.com/charliermarsh/ruff/pull/4387](https://togithub.com/charliermarsh/ruff/pull/4387) ##### Other Changes - Workaround for maturin bug by [@​konstin](https://togithub.com/konstin) in [https://github.com/charliermarsh/ruff/pull/4399](https://togithub.com/charliermarsh/ruff/pull/4399) #### New Contributors - [@​OMEGARAZER](https://togithub.com/OMEGARAZER) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3938](https://togithub.com/charliermarsh/ruff/pull/3938) - [@​LotemAm](https://togithub.com/LotemAm) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4387](https://togithub.com/charliermarsh/ruff/pull/4387) **Full Changelog**: astral-sh/ruff@v0.0.266...v0.0.267 ### [`v0.0.266`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.266) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.265...v0.0.266) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Breaking Changes - Remove deprecated `update-check` setting by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4313](https://togithub.com/charliermarsh/ruff/pull/4313) - JSON Emitter: Use one indexed column numbers for edits by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4007](https://togithub.com/charliermarsh/ruff/pull/4007) ##### Rules - \[`pygrep-hooks`] Implement pygrep-hook's Mock-mistake diagnostic by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4366](https://togithub.com/charliermarsh/ruff/pull/4366) - \[`pylint`] Implement `nested-min-max` (`W3301`) by [@​mccullocht](https://togithub.com/mccullocht) in [https://github.com/charliermarsh/ruff/pull/4200](https://togithub.com/charliermarsh/ruff/pull/4200) - \[`flynt`] Implement Flynt static string join transform as FLY002 by [@​akx](https://togithub.com/akx) in [https://github.com/charliermarsh/ruff/pull/4196](https://togithub.com/charliermarsh/ruff/pull/4196) - \[`pylint`] Include positional- and keyword-only arguments in too-many-arguments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4329](https://togithub.com/charliermarsh/ruff/pull/4329) - \[`ruff`] Update confusable character mapping by [@​akx](https://togithub.com/akx) in [https://github.com/charliermarsh/ruff/pull/4274](https://togithub.com/charliermarsh/ruff/pull/4274) ##### Settings - Add .git-rewrite folder to default ignored folder paths by [@​jleclanche](https://togithub.com/jleclanche) in [https://github.com/charliermarsh/ruff/pull/4261](https://togithub.com/charliermarsh/ruff/pull/4261) - Feat: detect changes also in configuration files by [@​mikeleppane](https://togithub.com/mikeleppane) in [https://github.com/charliermarsh/ruff/pull/4169](https://togithub.com/charliermarsh/ruff/pull/4169) ##### Bug Fixes - Revert the B027 autofix logic by [@​aacunningham](https://togithub.com/aacunningham) in [https://github.com/charliermarsh/ruff/pull/4310](https://togithub.com/charliermarsh/ruff/pull/4310) - Consider Flask app logger as logger candidate by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4253](https://togithub.com/charliermarsh/ruff/pull/4253) - Enforce max-doc-length for multi-line docstrings by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4347](https://togithub.com/charliermarsh/ruff/pull/4347) - Avoid re-using imports beyond current edit site by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4378](https://togithub.com/charliermarsh/ruff/pull/4378) - Respect insertion location when importing symbols by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4258](https://togithub.com/charliermarsh/ruff/pull/4258) - Fix jemalloc page size on aarch64 by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4247](https://togithub.com/charliermarsh/ruff/pull/4247) - Fix replace_whitespace() tabulation to space by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/4226](https://togithub.com/charliermarsh/ruff/pull/4226) - Avoid fixing `PD002` in a lambda expression by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4286](https://togithub.com/charliermarsh/ruff/pull/4286) - Avoid `D403` if first char cannot be uppercased by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4283](https://togithub.com/charliermarsh/ruff/pull/4283) - Avoid panics for f-string rewrites at start-of-file by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4291](https://togithub.com/charliermarsh/ruff/pull/4291) - Rewrite `not not a` as `bool(a)` in boolean contexts by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4294](https://togithub.com/charliermarsh/ruff/pull/4294) - Include static and class methods in in abstract decorator list by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4298](https://togithub.com/charliermarsh/ruff/pull/4298) - Specify exact command in incorrect parentheses suggestion by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4300](https://togithub.com/charliermarsh/ruff/pull/4300) - Ignore `TRY301` exceptions without except handlers by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4301](https://togithub.com/charliermarsh/ruff/pull/4301) - Preserve whitespace around `ListComp` brackets in `C419` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4099](https://togithub.com/charliermarsh/ruff/pull/4099) - Tweak capitalization of B021 message by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4350](https://togithub.com/charliermarsh/ruff/pull/4350) - Avoid debug panic with empty indent replacement by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4364](https://togithub.com/charliermarsh/ruff/pull/4364) - Use target name in hardcoded-password diagnostics by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4365](https://togithub.com/charliermarsh/ruff/pull/4365) - Avoid underflow in expected-special-method-signature by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4377](https://togithub.com/charliermarsh/ruff/pull/4377) - Respect `__all__` imports when determining definition visibility by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4357](https://togithub.com/charliermarsh/ruff/pull/4357) - Ignore some methods on list in `flake8-boolean-trap` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4385](https://togithub.com/charliermarsh/ruff/pull/4385) - Fix false positives in PD002 by [@​evanrittenhouse](https://togithub.com/evanrittenhouse) in [https://github.com/charliermarsh/ruff/pull/4337](https://togithub.com/charliermarsh/ruff/pull/4337) - Run autofix on initial watcher pass by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4311](https://togithub.com/charliermarsh/ruff/pull/4311) - Avoid SIM105 autofixes that would remove comments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4330](https://togithub.com/charliermarsh/ruff/pull/4330) - Handle `.encode` calls on parenthesized expressions by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4338](https://togithub.com/charliermarsh/ruff/pull/4338) - Truncate `SyntaxError`s before newline character by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4124](https://togithub.com/charliermarsh/ruff/pull/4124) - Use non-empty ranges for logical-lines diagnostics by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4133](https://togithub.com/charliermarsh/ruff/pull/4133) #### New Contributors - [@​jleclanche](https://togithub.com/jleclanche) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4261](https://togithub.com/charliermarsh/ruff/pull/4261) - [@​aureliojargas](https://togithub.com/aureliojargas) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4306](https://togithub.com/charliermarsh/ruff/pull/4306) - [@​intgr](https://togithub.com/intgr) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4304](https://togithub.com/charliermarsh/ruff/pull/4304) - [@​mikeleppane](https://togithub.com/mikeleppane) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4169](https://togithub.com/charliermarsh/ruff/pull/4169) - [@​dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4354](https://togithub.com/charliermarsh/ruff/pull/4354) **Full Changelog**: astral-sh/ruff@v0.0.265...v0.0.266 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/allenporter/flux-local). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://togithub.com/charliermarsh/ruff) ([changelog](https://togithub.com/charliermarsh/ruff/releases)) | `==0.0.265` -> `==0.0.267` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/compatibility-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/confidence-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.267`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.267) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.266...v0.0.267) <!-- Release notes generated using configuration in .github/release.yml at main --> #### Summary Follow-up release to v0.0.266 to fix an issue with `python -m ruff`- and `import ruff`-based workflows. (No new rules or functionality.) #### What's Changed ##### Rules - Implement `RUF010` to detect explicit type conversions within f-strings by [@​LotemAm](https://togithub.com/LotemAm) in [https://github.com/charliermarsh/ruff/pull/4387](https://togithub.com/charliermarsh/ruff/pull/4387) ##### Other Changes - Workaround for maturin bug by [@​konstin](https://togithub.com/konstin) in [https://github.com/charliermarsh/ruff/pull/4399](https://togithub.com/charliermarsh/ruff/pull/4399) #### New Contributors - [@​OMEGARAZER](https://togithub.com/OMEGARAZER) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3938](https://togithub.com/charliermarsh/ruff/pull/3938) - [@​LotemAm](https://togithub.com/LotemAm) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4387](https://togithub.com/charliermarsh/ruff/pull/4387) **Full Changelog**: astral-sh/ruff@v0.0.266...v0.0.267 ### [`v0.0.266`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.266) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.265...v0.0.266) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Breaking Changes - Remove deprecated `update-check` setting by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4313](https://togithub.com/charliermarsh/ruff/pull/4313) - JSON Emitter: Use one indexed column numbers for edits by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4007](https://togithub.com/charliermarsh/ruff/pull/4007) ##### Rules - \[`pygrep-hooks`] Implement pygrep-hook's Mock-mistake diagnostic by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4366](https://togithub.com/charliermarsh/ruff/pull/4366) - \[`pylint`] Implement `nested-min-max` (`W3301`) by [@​mccullocht](https://togithub.com/mccullocht) in [https://github.com/charliermarsh/ruff/pull/4200](https://togithub.com/charliermarsh/ruff/pull/4200) - \[`flynt`] Implement Flynt static string join transform as FLY002 by [@​akx](https://togithub.com/akx) in [https://github.com/charliermarsh/ruff/pull/4196](https://togithub.com/charliermarsh/ruff/pull/4196) - \[`pylint`] Include positional- and keyword-only arguments in too-many-arguments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4329](https://togithub.com/charliermarsh/ruff/pull/4329) - \[`ruff`] Update confusable character mapping by [@​akx](https://togithub.com/akx) in [https://github.com/charliermarsh/ruff/pull/4274](https://togithub.com/charliermarsh/ruff/pull/4274) ##### Settings - Add .git-rewrite folder to default ignored folder paths by [@​jleclanche](https://togithub.com/jleclanche) in [https://github.com/charliermarsh/ruff/pull/4261](https://togithub.com/charliermarsh/ruff/pull/4261) - Feat: detect changes also in configuration files by [@​mikeleppane](https://togithub.com/mikeleppane) in [https://github.com/charliermarsh/ruff/pull/4169](https://togithub.com/charliermarsh/ruff/pull/4169) ##### Bug Fixes - Revert the B027 autofix logic by [@​aacunningham](https://togithub.com/aacunningham) in [https://github.com/charliermarsh/ruff/pull/4310](https://togithub.com/charliermarsh/ruff/pull/4310) - Consider Flask app logger as logger candidate by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4253](https://togithub.com/charliermarsh/ruff/pull/4253) - Enforce max-doc-length for multi-line docstrings by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4347](https://togithub.com/charliermarsh/ruff/pull/4347) - Avoid re-using imports beyond current edit site by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4378](https://togithub.com/charliermarsh/ruff/pull/4378) - Respect insertion location when importing symbols by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4258](https://togithub.com/charliermarsh/ruff/pull/4258) - Fix jemalloc page size on aarch64 by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4247](https://togithub.com/charliermarsh/ruff/pull/4247) - Fix replace_whitespace() tabulation to space by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/4226](https://togithub.com/charliermarsh/ruff/pull/4226) - Avoid fixing `PD002` in a lambda expression by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4286](https://togithub.com/charliermarsh/ruff/pull/4286) - Avoid `D403` if first char cannot be uppercased by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4283](https://togithub.com/charliermarsh/ruff/pull/4283) - Avoid panics for f-string rewrites at start-of-file by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4291](https://togithub.com/charliermarsh/ruff/pull/4291) - Rewrite `not not a` as `bool(a)` in boolean contexts by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4294](https://togithub.com/charliermarsh/ruff/pull/4294) - Include static and class methods in in abstract decorator list by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4298](https://togithub.com/charliermarsh/ruff/pull/4298) - Specify exact command in incorrect parentheses suggestion by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4300](https://togithub.com/charliermarsh/ruff/pull/4300) - Ignore `TRY301` exceptions without except handlers by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4301](https://togithub.com/charliermarsh/ruff/pull/4301) - Preserve whitespace around `ListComp` brackets in `C419` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4099](https://togithub.com/charliermarsh/ruff/pull/4099) - Tweak capitalization of B021 message by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4350](https://togithub.com/charliermarsh/ruff/pull/4350) - Avoid debug panic with empty indent replacement by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4364](https://togithub.com/charliermarsh/ruff/pull/4364) - Use target name in hardcoded-password diagnostics by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4365](https://togithub.com/charliermarsh/ruff/pull/4365) - Avoid underflow in expected-special-method-signature by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4377](https://togithub.com/charliermarsh/ruff/pull/4377) - Respect `__all__` imports when determining definition visibility by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4357](https://togithub.com/charliermarsh/ruff/pull/4357) - Ignore some methods on list in `flake8-boolean-trap` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4385](https://togithub.com/charliermarsh/ruff/pull/4385) - Fix false positives in PD002 by [@​evanrittenhouse](https://togithub.com/evanrittenhouse) in [https://github.com/charliermarsh/ruff/pull/4337](https://togithub.com/charliermarsh/ruff/pull/4337) - Run autofix on initial watcher pass by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4311](https://togithub.com/charliermarsh/ruff/pull/4311) - Avoid SIM105 autofixes that would remove comments by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4330](https://togithub.com/charliermarsh/ruff/pull/4330) - Handle `.encode` calls on parenthesized expressions by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4338](https://togithub.com/charliermarsh/ruff/pull/4338) - Truncate `SyntaxError`s before newline character by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4124](https://togithub.com/charliermarsh/ruff/pull/4124) - Use non-empty ranges for logical-lines diagnostics by [@​MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4133](https://togithub.com/charliermarsh/ruff/pull/4133) #### New Contributors - [@​jleclanche](https://togithub.com/jleclanche) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4261](https://togithub.com/charliermarsh/ruff/pull/4261) - [@​aureliojargas](https://togithub.com/aureliojargas) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4306](https://togithub.com/charliermarsh/ruff/pull/4306) - [@​intgr](https://togithub.com/intgr) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4304](https://togithub.com/charliermarsh/ruff/pull/4304) - [@​mikeleppane](https://togithub.com/mikeleppane) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4169](https://togithub.com/charliermarsh/ruff/pull/4169) - [@​dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4354](https://togithub.com/charliermarsh/ruff/pull/4354) **Full Changelog**: astral-sh/ruff@v0.0.265...v0.0.266 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/allenporter/pyrainbird). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Refs #2102 (being one half of it).
I removed the concatenation feature (FLY001) from this PR because I found tricky corner cases that were kind of tough to gracefully handle, so this PR concentrates on turning
"x".join([a, "foo", b])
tof"{a}xfoox{b}"
.That's dealt with by Print out autofix-broken or non-converging code when debugging #4201 and Fail lint tests if the fix creates a syntax error #4202 :)"{'Finally'}, " + f"{greeting}" + f"{subject}"
causes an autofix syntax error, but I'm not quite sure what's happening in particular – what's the easiest way of seeing the autofixed-but-broken code?