Skip to content

[ruff-0.9] Stabilize decimal-from-float-literal (RUF032)#15333

Merged
MichaReiser merged 1 commit intoruff-0.9from
dylan/stabilize-decimal
Jan 8, 2025
Merged

[ruff-0.9] Stabilize decimal-from-float-literal (RUF032)#15333
MichaReiser merged 1 commit intoruff-0.9from
dylan/stabilize-decimal

Conversation

@dylwil3
Copy link
Collaborator

@dylwil3 dylwil3 commented Jan 7, 2025

Stabilize decimal-from-float-literal (RUF032) for the Ruff 0.9 release.

This rule has been available in preview for a while, and has no open issues or PRs.

@dylwil3 dylwil3 added the rule Implementing or modifying a lint rule label Jan 7, 2025
@codspeed-hq
Copy link

codspeed-hq bot commented Jan 7, 2025

CodSpeed Performance Report

Merging #15333 will improve performances by 4.03%

Comparing dylan/stabilize-decimal (698e946) with ruff-0.9 (f4ad183)

Summary

⚡ 1 improvements
✅ 31 untouched benchmarks

Benchmarks breakdown

Benchmark ruff-0.9 dylan/stabilize-decimal Change
red_knot_check_file[cold] 87.8 ms 84.4 ms +4.03%

@github-actions
Copy link
Contributor

github-actions bot commented Jan 7, 2025

ruff-ecosystem results

Linter (stable)

ℹ️ ecosystem check detected linter changes. (+50 -21 violations, +0 -0 fixes in 10 projects; 45 projects unchanged)

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

+ tests/core/test_utils.py:41:29: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:49:28: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:49:52: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:49:77: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:55:52: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:55:76: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:56:40: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:71:18: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:77:19: RUF032 `Decimal()` called with float literal argument
+ tests/core/test_utils.py:77:33: RUF032 `Decimal()` called with float literal argument
... 4 additional changes omitted for project

apache/airflow (+12 -9 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/configuration.py:1313:17: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
+ airflow/utils/log/action_logger.py:22:5: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- airflow/utils/log/action_logger.py:22:5: FURB188 [*] Prefer `str.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/cdxgen.py:589:9: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
+ dev/breeze/src/airflow_breeze/utils/reproducible.py:142:25: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- dev/breeze/src/airflow_breeze/utils/reproducible.py:142:25: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.
... 11 additional changes omitted for rule FURB188
+ providers/tests/amazon/aws/transfers/test_dynamodb_to_s3.py:94:21: RUF032 `Decimal()` called with float literal argument
+ providers/tests/google/cloud/transfers/test_cassandra_to_gcs.py:136:27: RUF032 `Decimal()` called with float literal argument
+ tests/www/views/test_views_trigger_dag.py:105:28: RUF032 `Decimal()` called with float literal argument
... 10 additional changes omitted for project

bokeh/bokeh (+2 -2 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.
- src/bokeh/util/compiler.py:511:9: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
+ tests/support/plugins/file_server.py:63:9: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- tests/support/plugins/file_server.py:63:9: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.

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

+ ibis/expr/datatypes/tests/test_value.py:48:26: RUF032 `Decimal()` called with float literal argument

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

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

latchbio/latch (+2 -2 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/snakemake/single_task_snakemake.py:365:12: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.
+ src/latch_cli/utils/__init__.py:106:5: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- src/latch_cli/utils/__init__.py:106:5: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.

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

+ pandas/tests/dtypes/cast/test_downcast.py:36:39: RUF032 `Decimal()` called with float literal argument
+ pandas/tests/dtypes/cast/test_downcast.py:38:39: RUF032 `Decimal()` called with float literal argument
+ pandas/tests/dtypes/test_missing.py:324:21: RUF032 `Decimal()` called with float literal argument
+ pandas/tests/tools/test_to_numeric.py:195:40: RUF032 `Decimal()` called with float literal argument
+ pandas/tests/tools/test_to_numeric.py:210:31: RUF032 `Decimal()` called with float literal argument
+ pandas/tests/tools/test_to_numeric.py:210:60: RUF032 `Decimal()` called with float literal argument
+ pandas/tests/tools/test_to_numeric.py:213:37: RUF032 `Decimal()` called with float literal argument

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

+ reflex/components/component.py:664:17: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
- reflex/components/component.py:664:17: FURB188 [*] Prefer `str.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 -6 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/hdu/compressed/_tiled_compression.py:259:5: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.
+ astropy/io/fits/header.py:1646:9: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- astropy/io/fits/header.py:1646:9: FURB188 [*] Prefer `str.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:1056:13: FURB188 [*] Prefer `str.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:1058:13: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
+ astropy/io/votable/converters.py:326:13: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
- astropy/io/votable/converters.py:326:13: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
... 2 additional changes omitted for project

Changes by rule (3 rules affected)

code total + violation - violation + fix - fix
FURB188 42 21 21 0 0
RUF032 25 25 0 0 0
FA100 4 4 0 0 0

Linter (preview)

ℹ️ ecosystem check detected linter changes. (+2553 -1620 violations, +4 -0 fixes in 31 projects; 24 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 (+496 -20 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/configuration.py:1313:17: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
- airflow/configuration.py:1313:17: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
+ airflow/utils/log/action_logger.py:22:5: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- airflow/utils/log/action_logger.py:22:5: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.
... 506 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 (+252 -2 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
... 245 additional changes omitted for rule UP006
+ src/bokeh/util/compiler.py:511:9: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
- src/bokeh/util/compiler.py:511:9: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
+ tests/support/plugins/file_server.py:63:9: FURB188 [*] Prefer `removeprefix` over conditionally replacing with slice.
- tests/support/plugins/file_server.py:63:9: FURB188 [*] Prefer `str.removeprefix()` over conditionally replacing with slice.
... 244 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 (+300 -1150 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/langchain_core/language_models/llms.py:352:9: FURB188 [*] Prefer `removesuffix` over conditionally replacing with slice.
- libs/core/langchain_core/language_models/llms.py:352:9: FURB188 [*] Prefer `str.removesuffix()` over conditionally replacing with slice.
- 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 (+15 -15 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
... 20 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
UP006 2431 2431 0 0 0
UP045 1552 0 1552 0 0
UP007 92 92 0 0 0
FURB188 42 21 21 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

@dylwil3
Copy link
Collaborator Author

dylwil3 commented Jan 7, 2025

On the one hand I wish the ecosystem check knew I was targeting a different branch so that it wasn't so messy, but on the other hand I do like that my PR makes red_knot faster 😂

That said: ecosystem check looks good to me for the rule in question!

@MichaReiser MichaReiser merged commit 412084e into ruff-0.9 Jan 8, 2025
@MichaReiser MichaReiser deleted the dylan/stabilize-decimal branch January 8, 2025 07:39
@MichaReiser MichaReiser mentioned this pull request Jan 8, 2025
2 tasks
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