Open henryiii opened 1 year ago
Python 3.15!
Should this be detected when enabling PLW1514
in current versions of ruff? The PR https://github.com/astral-sh/ruff/pull/3416 does seem to include some tests for issues with Path
, but it didn't make it into ruff yet?
I would like to bump this request!
Currently when you have some code such as:
import pathlib
with open(pathlib.Path("path/to/file.txt")) as f:
print(f)
Ruff will raise 2 issues:
open
in text mode without explicit encoding
argumentopen()
should be replaced by Path.open()
If you first solve the second issue, the first issue will be gone, which led me to believe that Path.open()
doesn't require it, which is not the case!
Would the Ruff team be open to include the flake8-encodings ruleset? And do you think this could be a good first issue? If so I would be willing to pick it up (it would mean it will take a while before this will be implemented though 🙃 )
I noticed https://pypi.org/project/flake8-encodings/ was missing when porting a package over to Ruff. This checks for
encoding=
missing from open (andconfigparser.ConfigParser
andpathlib.Path
) calls.Here are the checks:
This is an extremely common need (it's available at runtime with
PYTHONWARNDEFAULTENCODING
(PEP 597) and is needed for Python 3.15 compatibility PEP 686), so I'm surprised no existing checks seem to cover it; wouldn't be surprised if my searching skills were just not good enough.Edit: Ahh, this might be the not-yet-implemented
unspecified-encoding / W1514
from pylint.