The IDENTIFIERS list in Tools/scripts/generate_global_objects.py is a slight burden
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Métriques de merge des PR
- Métriques de PR en attente
Description
(This is partly inspired by gh-94706.)
In generate_global_objects.py, iter_global_strings() detects global strings by looking for _Py_ID() and _Py_DECLARE_STR() in the C source files. In some places those macros are used indirectly, which means the corresponding strings won't be detected by iter_global_strings().
Currently we manually add such strings to the IDENTIFIERS list at the top of the script. Before we added the discovery mechanism in iter_global_strings(), basically all the static strings were in this list. However, we found that there were several maintenance/development downsides to the manual list, so we added iter_global_strings(). At the time we didn't take the extra step of automating discovery of indirectly used names. We should address this.
CC @kumaraditya303
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 Tools/scripts/generate_global_objects.py, en vous concentrant sur iter_global_strings() et sur la liste IDENTIFIERS maintenue manuellement. Suivez la manière dont le script parcourt les fichiers sources C à la recherche de _Py_ID() et de _Py_DECLARE_STR(), puis déterminez comment les noms utilisés indirectement peuvent être détectés. Le travail est terminé lorsque les chaînes globales utilisées indirectement ne nécessitent plus d’ajouts manuels et que la génération reste correcte.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, python
- Domaine
- build-system, tooling
- Type d'issue
- Refactorisation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100