Clarify that format strings accept arbitrary tokens as field names
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
Should the code below produce an error?
'{(}'.format(**{'(': 2})
This produces '2' in Python 3.14.5 on MacOS.
Reading
https://docs.python.org/3/library/string.html#format-string-syntax
replacement_field: "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name: arg_name ("." attribute_name | "[" element_index "]")*
arg_name: [identifier | digit+]
this ends up pointing to identifier at https://docs.python.org/3/reference/lexical_analysis.html#grammar-token-python-grammar-identifier
NAME: name_start name_continue*
name_start: "a"..."z" | "A"..."Z" | "_" | <non-ASCII character>
name_continue: name_start | "0"..."9"
identifier: <NAME, except keywords>
Given that '(' is an Ascii character, then ( is not a valid identifier and it should not be allowed.
CPython versions tested on:
3.14
Operating systems tested on:
macOS
Linked PRs
- gh-151064
- gh-153143
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple de format-string présenté et lire la documentation liée sur la syntaxe des format strings et la grammaire des identifiants. Comparez les règles documentées concernant les noms de champ avec le comportement observé et considérez les PRs liés comme le travail déjà existant ; le travail est terminé lorsque le comportement et la documentation concordent sur l’acceptation ou non de tokens arbitraires.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100