GeezerVison is showing github.com — bpo-38693: Use f-strings instead of str.format() within importlib by gpshead · Pull Request #17058 · python/cpython
Conversation
gpshead
commented
Nov 5, 2019
•
edited by bedevere-bot
Loading
Uh oh!
There was an error while loading. Please reload this page.
This is a small performance improvement, especially for one or two hot
places such as _handle_fromlist() that are called a lot and the
str.format() method was being used just to join two strings with a '.'.
Otherwise it is merely a readability improvement.
This could be backported to 3.8 as it does not change any logic.
I kept _ERR_MSG as an attribute in importlib._bootstrap and imp
as I wasn't sure if there were other things in the world that might
refer to those. They're private and could go away in 3.9 but should
not within 3.8 just in case.
https://bugs.python.org/issue38693
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This is a small performance improvement, especially for one or two hot
places such as _handle_fromlist() that are called a lot and the
.format() method was being used just to join two strings with a dot.
Otherwise it is merely a readability improvement.
This could be backported to 3.8 as it changes no functionality.
I kept `_ERR_MSG` as an attribute in `importlib._bootstrap` and `imp`
as I wasn't sure if there were other things in the world that might
refer to those. They're private and could go away in 3.9 but should
not within 3.8 just in case.
It belongs with a later _ERR_MSG cleanup.
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.
I think this is generally a good idea, and all of the changes look correct.
However, I'm not sure I'd remove the use of _ERR_MSG, since it is used outside of this file. Either that, or remove it in Lib/imp.py, too (the only other place it's used).
I'm also not sure what value is added by _ERR_MSG_PREFIX. It doesn't seem to be used anywhere. I'd just roll it into _ERR_MSG, if it's being kept.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
_ERR_MSG was actually created specifically because there have been numerous instances where that sentence has been formatted differently across the code base (with or without a period, capitalized or not, wording, etc.). I think _ERR_MSG_PREFIX was created because it was used from import.c.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
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.
Need to decide what the ultimate fate of _ERR_MSG is.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
When you're done making the requested changes, leave the comment: I have made the requested changes; please review again.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
@gpshead, please take a look at the review comments. Thanks!
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
This missed the boat for inclusion in Python 3.9 which accepts security fixes only as of today.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
I'm not sure I'd remove the use of _ERR_MSG, since it is used outside of this file. Either that, or remove it in Lib/imp.py, too (the only other place it's used).
I left _ERR_MSG and _ERR_MSG_PREFIX in place as they could be used by others. The code now uses the latter within its own f-string.
PTAL
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
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.
Other than the tiny nit I mentioned, LGTM.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
|
if module is None:
|
|
|
message = ('import of {} halted; '
|
|
|
'None in sys.modules'.format(name))
|
|
|
message = (f'import of {name} halted; None in sys.modules')
|
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 parens here can be deleted; it looks like they were previously used for the multi-line string.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
carljm
added a commit
to carljm/cpython
that referenced
this pull request
Oct 8, 2022
mpage
pushed a commit
to mpage/cpython
that referenced
this pull request
Oct 11, 2022
…thon#17058)
This is a small performance improvement, especially for one or two hot
places such as _handle_fromlist() that are called a lot and the
.format() method was being used just to join two strings with a dot.
Otherwise it is merely a readability improvement.
We keep `_ERR_MSG` and `_ERR_MSG_PREFIX` as those may be used elsewhere for canonical looking error messages.
Reviewers
jaraco
jaraco approved these changes
Uh oh!
There was an error while loading. Please reload this page.
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|