-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
io.open and codecs.open are redundant with open on Py3. #11289
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
@@ -834,7 +834,7 @@ def print_pgf(self, fname_or_fh, *args, **kwargs): | |||
|
|||
# figure out where the pgf is to be written to | |||
if isinstance(fname_or_fh, str): | |||
with codecs.open(fname_or_fh, "w", encoding="utf-8") as fh: | |||
with open(fname_or_fh, "w", encoding="utf-8") as fh: |
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.
As far as I understand, this is not identical, since codecs.open
always uses binary mode.
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.
The only difference from binary mode (given that we're giving an explicit encoding) (see the Note under https://docs.python.org/3/library/functions.html#open) is that there's no newline conversion, i.e. previously this would generate files with \n
newlines on Windows and Linux but now this generates files with \r\n
newlines on Windows and \n
on Linux.
Which, if anything, is more correct IMO (for example, notepad (dunno who uses that to edit tex files on Windows, but I guess that's not the only tool) doesn't like files that use \n as newline...).
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.
Yes the newline is the difference. I'd say, if it ain't broken don't fix it - you can work perfectly fine with \n
-only files in windows. On the other hand, if you want that change, it's fine by me. We have just to be sure that all the (latex?) tools that are running on that file will handle \r\n
properly.
Side remark: Notepad just got support for unix line endings (not that there are still a lot of reasons to use other editors on windows which already support unix line endings for decades).
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.
There's apoproximately a million other places where we generate files with \r\n endings on Windows, I don't see why pgf would be different. Unless you want to ban the use of open() in favor of codecs.open() throughout the codebase...
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.
It's fine. I just wanted to make sure, we're making this change consciously.
Also, use contextlib.redirect_stderr/cbook._setattr_cm where appropriate.
Also, use contextlib.redirect_stderr/cbook._setattr_cm where
appropriate.
PR Summary
PR Checklist