Thanks to visit codestin.com
Credit goes to github.com

Skip to content

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

Merged
merged 2 commits into from
Jun 5, 2018

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented May 22, 2018

Also, use contextlib.redirect_stderr/cbook._setattr_cm where
appropriate.

PR Summary

PR Checklist

  • Has Pytest style unit tests
  • Code is PEP 8 compliant
  • New features are documented, with examples if plot related
  • Documentation is sphinx and numpydoc compliant
  • Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
  • Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way

@anntzer anntzer added this to the v3.0 milestone May 22, 2018
@@ -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:
Copy link
Member

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.

Copy link
Contributor Author

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...).

Copy link
Member

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).

Copy link
Contributor Author

@anntzer anntzer May 23, 2018

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...

Copy link
Member

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.

@dstansby dstansby added the Py3k label May 29, 2018
anntzer added 2 commits May 29, 2018 14:28
Also, use contextlib.redirect_stderr/cbook._setattr_cm where
appropriate.
@phobson phobson merged commit 9b835b5 into matplotlib:master Jun 5, 2018
@anntzer anntzer deleted the ioopen branch June 5, 2018 21:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants