Skip to content

Comments

[refurb] Avoid None | None as well as better detection and fix (FURB168)#15779

Merged
AlexWaygood merged 4 commits intoastral-sh:mainfrom
InSyncWithFoo:FURB168
Jan 31, 2025
Merged

[refurb] Avoid None | None as well as better detection and fix (FURB168)#15779
AlexWaygood merged 4 commits intoastral-sh:mainfrom
InSyncWithFoo:FURB168

Conversation

@InSyncWithFoo
Copy link
Contributor

@InSyncWithFoo InSyncWithFoo commented Jan 28, 2025

Summary

Resolves #15776.

The rule has been rewritten to address the problems discussed at the aforementioned issue. Additionally, Union[] is now detected and the fix marked as unsafe if there are any comments in the range.

Test Plan

cargo nextest run and cargo insta test.

@InSyncWithFoo
Copy link
Contributor Author

refurb::helpers::generate_none_identity_comparison() and other rules using it need to be rewritten as well. I'll take care of those in a follow-up PR.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 28, 2025

ruff-ecosystem results

Linter (stable)

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

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

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

+ tests/core/test_configuration.py:906:16: FURB168 [*] Prefer `is` operator over `isinstance` to check if an object is `None`

Changes by rule (1 rules affected)

code total + violation - violation + fix - fix
FURB168 1 1 0 0 0

Linter (preview)

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

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

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

+ tests/core/test_configuration.py:906:16: FURB168 [*] Prefer `is` operator over `isinstance` to check if an object is `None`

Changes by rule (1 rules affected)

code total + violation - violation + fix - fix
FURB168 1 1 0 0 0

Copy link
Member

@AlexWaygood AlexWaygood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@AlexWaygood AlexWaygood self-assigned this Jan 28, 2025
@AlexWaygood AlexWaygood added the bug Something isn't working label Jan 28, 2025
Copy link
Member

@AlexWaygood AlexWaygood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

@AlexWaygood AlexWaygood merged commit 59be5f5 into astral-sh:main Jan 31, 2025
21 checks passed
@InSyncWithFoo InSyncWithFoo deleted the FURB168 branch January 31, 2025 16:20
dcreager added a commit that referenced this pull request Jan 31, 2025
* main:
  [`flake8-pyi`] Fix several correctness issues with `custom-type-var-return-type` (`PYI019`) (#15851)
  [`pyupgrade`] Reuse replacement logic from `UP046` and `UP047` (`UP040`) (#15840)
  [`refurb`] Avoid `None | None` as well as better detection and fix (`FURB168`) (#15779)
  Remove non-existing `lint.extendIgnore` editor setting (#15844)
  [`refurb`] Mark fix as unsafe if there are comments (`FURB171`) (#15832)
  [`flake8-comprehensions`] Skip when `TypeError` present from too many (kw)args for `C410`,`C411`, and `C418` (#15838)
  [`pyflakes`] Visit forward annotations in `TypeAliasType` as types (`F401`) (#15829)
MichaReiser pushed a commit that referenced this pull request Feb 5, 2025
## Summary

Follow-up to #15779.

Prior to this change, non-name expressions are not reported at all:

```python
type(a.b) is type(None)  # no error
```

This change enhances the rule so that such cases are also reported in
preview. Additionally:

* The fix will now be marked as unsafe if there are any comments within
its range.
* Error messages are slightly modified.

## Test Plan

`cargo nextest run` and `cargo insta test`.

---------

Co-authored-by: Alex Waygood <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FURB168 false negative and false positives

2 participants