GeezerVison is showing github.com — Use f-strings instead of str.format within importlib · Issue #82874 · python/cpython
Use f-strings instead of str.format within importlib #82874Description
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = 'https://github.com/gpshead'
closed_at = None
created_at = <Date 2019-11-05.06:20:17.309>
labels = ['3.11', 'performance']
title = 'Use f-strings instead of str.format within importlib'
updated_at = <Date 2021-05-26.21:09:35.360>
user = 'https://github.com/gpshead'
bugs.python.org fields:
activity = <Date 2021-05-26.21:09:35.360>
actor = 'jaraco'
assignee = 'gregory.p.smith'
closed = False
closed_date = None
closer = None
components = []
creation = <Date 2019-11-05.06:20:17.309>
creator = 'gregory.p.smith'
dependencies = []
files = []
hgrepos = []
issue_num = 38693
keywords = ['patch']
message_count = 9.0
messages = ['356005', '369672', '378998', '393617', '393629', '394453', '394454', '394460', '394463']
nosy_count = 8.0
nosy_names = ['gregory.p.smith', 'jaraco', 'eric.smith', 'serhiy.storchaka', 'cheryl.sabella', 'miss-islington', 'xtreak', 'FFY00']
pr_nums = ['17058', '26383', '26386', '26387', '26389']
priority = 'normal'
resolution = None
stage = 'patch review'
status = 'open'
superseder = None
type = 'performance'
url = 'https://bugs.python.org/issue38693'
versions = ['Python 3.11']
Activitygpshead commented on Nov 5, 2019 importlib is full of str.format calls, modernizing it to use f-strings is a slight performance win and much more readable. csabella commented on May 23, 2020 Did you want this one to land in 3.9? gpshead commented on Oct 19, 2020 Status: Waiting until after the importlib.metadata and importlib.resources backports drop support for both Python 2.7 and 3.5 as keeping them in sync would be a pain for maintainers (per jaraco on our sprint importlib-any chat today) FFY00 commented on May 13, 2021 Both importlib_metadata and importlib_resources have dropped support for Python 2.7 and 3.5, this should now be unblocked. serhiy-storchaka commented on May 14, 2021 I just have merged a change which makes many C-style formatting as fast as f-strings (bpo-28307) and am working on supporting more format codes (%d, %x, %f, etc). Using C-style formatting can be a good option if you want performance and backward compatibility. It was faster than str.format() even without that optimization. miss-islington commented on May 26, 2021 miss-islington commented on May 26, 2021 miss-islington commented on May 26, 2021 New changeset f6fbdb9 by Jason R. Coombs in branch 'main':
bpo-38693: Prefer f-strings in importlib.resources (importlib_resources 5.0.6). (GH-26387)
f6fbdb9 jaraco commented on May 26, 2021 gpshead commented on Oct 6, 2022 #17058 did this for Lib/importlib/_bootstrap.py gpshead commented on Oct 6, 2022 remaining things to consider (not all need to be converted):
$ grep -R '[.]format' Lib/importlib/
Lib/importlib/_bootstrap_external.py: path_tmp = '{}.{}'.format(path, id(path))
Lib/importlib/_bootstrap_external.py: raise ValueError('{!r} is not alphanumeric'.format(optimization))
Lib/importlib/_bootstrap_external.py: almost_filename = '{}.{}{}'.format(almost_filename, _OPT, optimization)
Lib/importlib/_bootstrap_external.py: _warnings.warn(msg.format(portions[0]), ImportWarning)
Lib/importlib/_bootstrap_external.py: raise ImportError('Non-code object in {!r}'.format(bytecode_path),
Lib/importlib/_bootstrap_external.py: key = registry_key.format(fullname=fullname,
Lib/importlib/_bootstrap_external.py: 'returns None'.format(module.__name__))
Lib/importlib/_bootstrap_external.py: return '_NamespacePath({!r})'.format(self._path)
Lib/importlib/_bootstrap_external.py: new_name = '{}.{}'.format(name, suffix.lower())
Lib/importlib/_bootstrap_external.py: return 'FileFinder({!r})'.format(self.path)
Lib/importlib/metadata/__init__.py: return text and map('"{}"'.format, text.splitlines())
Lib/importlib/resources/_adapters.py: "Invalid mode value '{}', only 'r' and 'rb' are supported".format(mode)
Lib/importlib/_bootstrap.py: print(message.format(*args), file=sys.stderr)
Lib/importlib/__init__.py: raise ValueError('{}.__loader__ is None'.format(name))
Lib/importlib/__init__.py: raise ValueError('{}.__loader__ is not set'.format(name)) from None
Lib/importlib/__init__.py: raise ImportError('spec for {} missing loader'.format(name),
Lib/importlib/__init__.py: raise TypeError(msg.format(name))
Lib/importlib/__init__.py: raise ImportError(msg.format(name), name=name)
Lib/importlib/__init__.py: raise ImportError(msg.format(parent_name),
Lib/importlib/util.py: raise ValueError('{}.__spec__ is not set'.format(name)) from None
Lib/importlib/util.py: raise ValueError('{}.__spec__ is None'.format(name))
Lib/importlib/util.py: raise ValueError('{}.__spec__ is not set'.format(name)) from None
Lib/importlib/util.py: raise ValueError('{}.__spec__ is None'.format(name))
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|