-
-
Notifications
You must be signed in to change notification settings - Fork 32.3k
gh-134082: Modernize docstrings in string.Formatter
#134083
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
Changes from all commits
9ef4e56
9aa1a87
b3815b5
3a3de36
b2a33a7
ffc59ef
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -264,22 +264,18 @@ def _vformat(self, format_string, args, kwargs, used_args, recursion_depth, | |
|
||
return ''.join(result), auto_arg_index | ||
|
||
|
||
def get_value(self, key, args, kwargs): | ||
if isinstance(key, int): | ||
return args[key] | ||
else: | ||
return kwargs[key] | ||
|
||
|
||
def check_unused_args(self, used_args, args, kwargs): | ||
pass | ||
|
||
|
||
def format_field(self, value, format_spec): | ||
return format(value, format_spec) | ||
|
||
|
||
def convert_field(self, value, conversion): | ||
# do any conversion on the resulting object | ||
if conversion is None: | ||
|
@@ -292,34 +288,32 @@ def convert_field(self, value, conversion): | |
return ascii(value) | ||
raise ValueError("Unknown conversion specifier {0!s}".format(conversion)) | ||
|
||
|
||
# returns an iterable that contains tuples of the form: | ||
# (literal_text, field_name, format_spec, conversion) | ||
# literal_text can be zero length | ||
# field_name can be None, in which case there's no | ||
# object to format and output | ||
# if field_name is not None, it is looked up, formatted | ||
# with format_spec and conversion and then used | ||
def parse(self, format_string): | ||
return _string.formatter_parser(format_string) | ||
""" | ||
Return an iterable that contains tuples of the form | ||
(literal_text, field_name, format_spec, conversion). | ||
|
||
|
||
# given a field_name, find the object it references. | ||
# field_name: the field being looked up, e.g. "0.name" | ||
# or "lookup[3]" | ||
# used_args: a set of which args have been used | ||
# args, kwargs: as passed in to vformat | ||
*field_name* can be None, in which case there's no object | ||
to format and output; otherwise, it is looked up and | ||
formatted with *format_spec* and *conversion*. | ||
""" | ||
return _string.formatter_parser(format_string) | ||
|
||
def get_field(self, field_name, args, kwargs): | ||
first, rest = _string.formatter_field_name_split(field_name) | ||
"""Find the object referenced by a given field name. | ||
|
||
The field name *field_name* can be for instance "0.name" | ||
or "lookup[3]". The *args* and *kwargs* arguments are | ||
passed to get_value(). | ||
""" | ||
first, rest = _string.formatter_field_name_split(field_name) | ||
obj = self.get_value(first, args, kwargs) | ||
|
||
# loop through the rest of the field_name, doing | ||
# getattr or getitem as needed | ||
for is_attr, i in rest: | ||
if is_attr: | ||
obj = getattr(obj, i) | ||
else: | ||
obj = obj[i] | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why remove empty lines that provide «breathing space» and make it easy to follow the code? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Mmh, I shouldn't have removed those ones indeed. My bad. I however think that too many empty lines hinder the flow but I should have left them out in this case. I'll try to keep in mind. Note that from what I saw in more modern code, we tend to avoid too many blank lines in general except in long functions where logical sections are split. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree with @picnixz. PEP 8 says to use a single blank line to separate methods and two blank lines to separate top-level functions and classes (there are also exceptions). https://peps.python.org/pep-0008/#blank-lines We don't usually make changes solely to meet PEP 8 requirements, but in this case I think it was justified. |
||
return obj, first |
Uh oh!
There was an error while loading. Please reload this page.