[issue31907] Clarify error message when attempting to call function via str.format()

mickey695 report at bugs.python.org
Fri Dec 29 12:59:42 EST 2017


mickey695 <mickey695 at gmail.com> added the comment:

Well, it has been more than the 2 weeks I promised however now I finally have time to look into this.

I did some fuzzing to build a list quickly and the following ASCII characters can not be used as part of the argument name:
exclamation mark(!)
period(.)
colon(:)
opening square bracket([)
opening/closing curly brackets({})

also, the argument name may not start with digits from zero to nine(0-9)

Basically what needs to be changed is arg_name under the section "Format String Syntax" in \Doc\library\string.rst

Problem is, I really don't understand the syntax of the Python/sphinx formal language.

The following expression is what I came up with:
arg_name ::= [^`decinteger`] [<any character except "!" | "." | "[" | "{" | "}"> | `integer` ]+

If anyone from the documentation team could look into it I would be grateful.

Moreover, I think attribute_name should probably be changed as it does not have to be a valid identifier. In fact, it can be any text. Eric V. Smiths' example can be used with any text as the attribute name. A comment should be added to the aforementioned section explaining that normally only valid identifiers are accepted, however by implementing your own __getattr__ this can be changed.

----------
components: +Documentation

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue31907>
_______________________________________


More information about the Python-bugs-list mailing list