Skip to content
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

[ruff-0.9] Stabilise slice-to-remove-prefix-or-suffix (FURB188) #15329

Merged
merged 1 commit into from
Jan 7, 2025

Conversation

AlexWaygood
Copy link
Member

Summary

Stabilise slice-to-remove-prefix-or-suffix (FURB188) for the Ruff 0.9 release.

This is a stylistic rule, but I think it's a pretty uncontroversial one. There are no open issues or PRs regarding it and it's been in preview for a while now.

Test Plan

Ecosystem check on this PR

@AlexWaygood AlexWaygood added the rule Implementing or modifying a lint rule label Jan 7, 2025
Copy link
Contributor

github-actions bot commented Jan 7, 2025

ruff-ecosystem results

Linter (stable)

ℹ️ ecosystem check detected linter changes. (+25 -0 violations, +0 -0 fixes in 8 projects; 47 projects unchanged)

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

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

+ airflow/configuration.py:1313:17: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
+ airflow/utils/log/action_logger.py:22:5: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ dev/breeze/src/airflow_breeze/utils/cdxgen.py:589:9: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
+ dev/breeze/src/airflow_breeze/utils/reproducible.py:142:25: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ providers/src/airflow/providers/elasticsearch/log/es_response.py:101:14: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ providers/src/airflow/providers/google/cloud/operators/dataproc_metastore.py:709:16: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ providers/src/airflow/providers/opensearch/log/os_response.py:101:14: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ providers/tests/elasticsearch/log/test_es_response.py:186:13: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ providers/tests/opensearch/log/test_os_response.py:107:13: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.

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

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

+ src/bokeh/util/compiler.py:511:9: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
+ tests/support/plugins/file_server.py:63:9: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.

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

+ libs/core/langchain_core/language_models/llms.py:352:9: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.

latchbio/latch (+2 -0 violations, +0 -0 fixes)

+ src/latch_cli/snakemake/single_task_snakemake.py:365:12: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ src/latch_cli/utils/__init__.py:106:5: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.

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


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

+ reflex/components/component.py:664:17: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.

pdm-project/pdm (+4 -0 violations, +0 -0 fixes)

+ src/pdm/cli/commands/cache.py:37:47: FA100 Add `from __future__ import annotations` to simplify `typing.Iterable`
+ src/pdm/cli/commands/cache.py:97:20: FA100 Add `from __future__ import annotations` to simplify `typing.Iterable`
+ src/pdm/cli/commands/config.py:102:36: FA100 Add `from __future__ import annotations` to simplify `typing.Mapping`
+ src/pdm/cli/commands/config.py:102:67: FA100 Add `from __future__ import annotations` to simplify `typing.Mapping`

astropy/astropy (+6 -0 violations, +0 -0 fixes)

+ astropy/io/fits/hdu/compressed/_tiled_compression.py:259:5: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ astropy/io/fits/header.py:1646:9: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
+ astropy/io/votable/converters.py:1056:13: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
+ astropy/io/votable/converters.py:1058:13: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
+ astropy/io/votable/converters.py:326:13: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
+ astropy/table/meta.py:211:5: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.

Changes by rule (2 rules affected)

code total + violation - violation + fix - fix
FURB188 21 21 0 0 0
FA100 4 4 0 0 0

Linter (preview)

ℹ️ ecosystem check detected linter changes. (+2532 -1599 violations, +4 -0 fixes in 30 projects; 25 projects unchanged)

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

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

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

aiven/aiven-client (+409 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

+ aiven/client/argx.py:104:38: UP006 Use `collections.abc.Iterable` instead of `Iterable` for type annotation
+ aiven/client/argx.py:155:54: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:171:45: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:174:49: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:241:29: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:278:34: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:278:44: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:290:32: UP006 Use `collections.abc.Sequence` instead of `Sequence` for type annotation
+ aiven/client/argx.py:300:29: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ aiven/client/argx.py:303:34: UP006 Use `collections.abc.Sequence` instead of `Sequence` for type annotation
... 399 additional changes omitted for project

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

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

- tests/particles/test_decorators.py:437:5: B903 Class could be dataclass or namedtuple
- tests/particles/test_decorators.py:456:5: B903 Class could be dataclass or namedtuple
- tests/particles/test_decorators.py:494:5: B903 Class could be dataclass or namedtuple
- tests/particles/test_decorators_annotations.py:16:1: B903 Class could be dataclass or namedtuple

apache/airflow (+487 -11 violations, +0 -0 fixes)

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

+ airflow/api/auth/backend/deny_all.py:34:24: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ airflow/api_connexion/parameters.py:87:24: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ airflow/api_connexion/parameters.py:90:52: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ airflow/api_connexion/parameters.py:90:78: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ airflow/api_connexion/security.py:114:6: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ airflow/api_connexion/security.py:161:54: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
... 478 additional changes omitted for rule UP006
+ airflow/utils/log/logging_mixin.py:175:9: PLR6301 Method `writable` could be a function, class method, or static method
- airflow/utils/log/logging_mixin.py:175:9: PLR6301 Method `writable` could be a function, class method, or static method
+ airflow/utils/log/logging_mixin.py:1:1: CPY001 Missing copyright notice at top of file
- airflow/utils/log/logging_mixin.py:1:1: CPY001 Missing copyright notice at top of file
... 488 additional changes omitted for project

apache/superset (+246 -80 violations, +0 -0 fixes)

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

+ scripts/check-env.py:37:40: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ superset/advanced_data_type/types.py:58:21: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ superset/advanced_data_type/types.py:59:23: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ superset/async_events/async_query_manager.py:106:22: UP007 Use `X | Y` for type annotations
- superset/async_events/async_query_manager.py:106:22: UP045 Use `X | None` for type annotations
+ superset/async_events/async_query_manager.py:108:29: UP007 Use `X | Y` for type annotations
- superset/async_events/async_query_manager.py:108:29: UP045 Use `X | None` for type annotations
+ superset/async_events/async_query_manager.py:109:38: UP007 Use `X | Y` for type annotations
- superset/async_events/async_query_manager.py:109:38: UP045 Use `X | None` for type annotations
+ superset/async_events/async_query_manager.py:112:34: UP007 Use `X | Y` for type annotations
... 316 additional changes omitted for project

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

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

+ release/action.py:27:31: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ release/action.py:27:52: UP006 Use `collections.abc.Sequence` instead of `Sequence` for type annotation
+ release/action.py:35:47: UP006 Use `collections.abc.Sequence` instead of `Sequence` for type annotation
+ release/build.py:144:22: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ release/credentials.py:37:22: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ release/credentials.py:40:38: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ release/pipeline.py:24:12: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ release/pipeline.py:34:31: UP006 Use `collections.abc.Sequence` instead of `Sequence` for type annotation
+ release/ui.py:103:33: UP006 Use `collections.abc.Sequence` instead of `Sequence` for type annotation
+ release/ui.py:24:17: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
... 240 additional changes omitted for project

ibis-project/ibis (+3 -102 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

- ibis/backends/bigquery/__init__.py:847:48: UP045 [*] Use `X | None` for type annotations
- ibis/common/graph.py:171:46: UP045 [*] Use `X | None` for type annotations
- ibis/common/graph.py:203:50: UP045 [*] Use `X | None` for type annotations
- ibis/common/graph.py:275:41: UP045 [*] Use `X | None` for type annotations
- ibis/common/graph.py:310:47: UP045 [*] Use `X | None` for type annotations
- ibis/common/graph.py:359:47: UP045 [*] Use `X | None` for type annotations
... 97 additional changes omitted for rule UP045
+ ibis/common/tests/test_patterns.py:1122:13: UP006 [*] Use `collections.abc.Callable` instead of `Callable` for type annotation
+ ibis/common/tests/test_patterns.py:1125:10: UP006 [*] Use `collections.abc.Callable` instead of `Callable` for type annotation
+ ibis/common/tests/test_patterns.py:731:31: UP006 [*] Use `collections.abc.Callable` instead of `Callable` for type annotation
... 96 additional changes omitted for project

langchain-ai/langchain (+299 -1149 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

+ libs/core/langchain_core/_api/beta_decorator.py:128:35: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ libs/core/langchain_core/_api/beta_decorator.py:186:35: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ libs/core/langchain_core/_api/beta_decorator.py:201:35: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ libs/core/langchain_core/_api/beta_decorator.py:30:30: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ libs/core/langchain_core/_api/beta_decorator.py:39:6: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ libs/core/langchain_core/_api/deprecation.py:202:35: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
... 294 additional changes omitted for rule UP006
- libs/core/langchain_core/caches.py:149:36: UP045 Use `X | None` for type annotations
- libs/core/langchain_core/caches.py:167:55: UP045 Use `X | None` for type annotations
- libs/core/langchain_core/caches.py:200:62: UP045 Use `X | None` for type annotations
- libs/core/langchain_core/caches.py:52:55: UP045 Use `X | None` for type annotations
- libs/core/langchain_core/caches.py:97:62: UP045 Use `X | None` for type annotations
- libs/core/langchain_core/callbacks/base.py:104:24: UP045 Use `X | None` for type annotations
... 1143 additional changes omitted for rule UP045
- libs/core/tests/unit_tests/tracers/test_langchain.py:103:5: B903 Class could be dataclass or namedtuple
... 1435 additional changes omitted for project

latchbio/latch (+13 -13 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

+ src/latch/registry/record.py:188:57: UP007 Use `X | Y` for type annotations
- src/latch/registry/record.py:188:57: UP045 Use `X | None` for type annotations
+ src/latch/registry/record.py:190:64: UP007 Use `X | Y` for type annotations
- src/latch/registry/record.py:190:64: UP045 Use `X | None` for type annotations
+ src/latch/registry/record.py:215:53: UP007 Use `X | Y` for type annotations
- src/latch/registry/record.py:215:53: UP045 Use `X | None` for type annotations
+ src/latch/registry/record.py:217:60: UP007 Use `X | Y` for type annotations
- src/latch/registry/record.py:217:60: UP045 Use `X | None` for type annotations
+ src/latch/registry/record.py:250:10: UP007 Use `X | Y` for type annotations
- src/latch/registry/record.py:250:10: UP045 Use `X | None` for type annotations
... 16 additional changes omitted for project

lnbits/lnbits (+47 -208 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview

+ lnbits/app.py:342:46: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ lnbits/app.py:352:47: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
- lnbits/core/models.py:102:15: UP045 Use `X | None` for type annotations
- lnbits/core/models.py:107:20: UP045 Use `X | None` for type annotations
- lnbits/core/models.py:108:15: UP045 Use `X | None` for type annotations
- lnbits/core/models.py:109:15: UP045 Use `X | None` for type annotations
- lnbits/core/models.py:110:12: UP045 Use `X | None` for type annotations
- lnbits/core/models.py:111:19: UP045 Use `X | None` for type annotations
... 203 additional changes omitted for rule UP045
+ lnbits/core/models.py:332:30: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
+ lnbits/core/models.py:333:31: UP006 Use `collections.abc.Callable` instead of `Callable` for type annotation
... 245 additional changes omitted for project

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

Changes by rule (11 rules affected)

code total + violation - violation + fix - fix
UP006 2431 2431 0 0 0
UP045 1552 0 1552 0 0
UP007 92 92 0 0 0
B903 40 0 40 0 0
FA100 4 4 0 0 0
FURB171 4 0 0 4 0
RUF025 3 3 0 0 0
RUF037 3 0 3 0 0
PLR6301 2 1 1 0 0
CPY001 2 1 1 0 0
RUF100 2 0 2 0 0

@AlexWaygood
Copy link
Member Author

@AlexWaygood
Copy link
Member Author

no false positives in that ecosystem report, from what I can see 🚀

@AlexWaygood AlexWaygood merged commit f4ad183 into ruff-0.9 Jan 7, 2025
21 checks passed
@AlexWaygood AlexWaygood deleted the alex/stabilise-furb188 branch January 7, 2025 20:03
@AlexWaygood AlexWaygood mentioned this pull request Jan 7, 2025
2 tasks
MichaReiser pushed a commit that referenced this pull request Jan 8, 2025
…15329)

Stabilise [`slice-to-remove-prefix-or-suffix`](https://docs.astral.sh/ruff/rules/slice-to-remove-prefix-or-suffix/) (`FURB188`) for the Ruff 0.9 release.

This is a stylistic rule, but I think it's a pretty uncontroversial one. There are no open issues or PRs regarding it and it's been in preview for a while now.
MichaReiser pushed a commit that referenced this pull request Jan 8, 2025
…15329)

Stabilise [`slice-to-remove-prefix-or-suffix`](https://docs.astral.sh/ruff/rules/slice-to-remove-prefix-or-suffix/) (`FURB188`) for the Ruff 0.9 release.

This is a stylistic rule, but I think it's a pretty uncontroversial one. There are no open issues or PRs regarding it and it's been in preview for a while now.
MichaReiser pushed a commit that referenced this pull request Jan 9, 2025
…15329)

Stabilise [`slice-to-remove-prefix-or-suffix`](https://docs.astral.sh/ruff/rules/slice-to-remove-prefix-or-suffix/) (`FURB188`) for the Ruff 0.9 release.

This is a stylistic rule, but I think it's a pretty uncontroversial one. There are no open issues or PRs regarding it and it's been in preview for a while now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rule Implementing or modifying a lint rule
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants