-
Notifications
You must be signed in to change notification settings - Fork 1.6k
[flake8-use-pathlib] Avoid suggesting Path.iterdir() for os.listdir with file descriptor (PTH208)
#17715
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
Conversation
|
dhruvmanila
left a comment
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.
Thanks for looking into it. Can you please add soe test cases when os.listdir is being used with file descriptors? We should also make sure to support both positional and keyword arguments, so both os.listdir('/tmp') and os.listdir(path='/tmp') are considered and tested.
crates/ruff_linter/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs
Show resolved
Hide resolved
dhruvmanila
left a comment
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.
Thank you!
I think you forgot to update the snapshots which caused the CI failure. I moved the test cases at the end of the file to avoid needing to update the snapshots as this shouldn't raise any diagnostics.
I also took this moment to refactor the code in replaceable_by_pathlib to use let ... else ... instead of the long if let ... code, specifically by separating the resolve_qualified_name call and the match against the qualified name. I also update the diagnostic_kind conversion to avoid using Option and use early return instead.
flake8-use-pathlib] do not suggest Path.iterdir() for os.listdir with file descriptorflake8-use-pathlib] Avoid suggesting Path.iterdir() for os.listdir with file descriptor (PTH208)
Thank you very much for your help! —I’m also learning a lot from this experience. |
* main: [red-knot] Preliminary `NamedTuple` support (#17738) [red-knot] Add tests for classes that have incompatible `__new__` and `__init__` methods (#17747) Update dependency vite to v6.2.7 (#17746) [red-knot] Update call binding to return all matching overloads (#17618) [`airflow`] apply Replacement::AutoImport to `AIR312` (#17570) [`ruff`] Add fix safety section (`RUF028`) (#17722) [syntax-errors] Detect single starred expression assignment `x = *y` (#17624) py-fuzzer: fix minimization logic when `--only-new-bugs` is passed (#17739) Fix example syntax for pydocstyle ignore_var_parameters option (#17740) [red-knot] Update salsa to prevent panic in custom panic-handler (#17742) [red-knot] Ban direct instantiation of generic protocols as well as non-generic ones (#17741) [red-knot] Lookup of `__new__` (#17733) [red-knot] Check decorator consistency on overloads (#17684) [`flake8-use-pathlib`] Avoid suggesting `Path.iterdir()` for `os.listdir` with file descriptor (`PTH208`) (#17715) [red-knot] Check overloads without an implementation (#17681) Expand Semantic Syntax Coverage (#17725) [red-knot] Check for invalid overload usages (#17609)
Summary
Fixes: #17695