PEP696 + PEP749: Defer evaluation of defaults when parametrizing
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:
With PEP 696 + PEP 749, the following works just fine:
class Scalar[CompatT, TruthT = BoolScalar]: ...
class BoolScalar(Scalar): ...
class IntScalar(Scalar[int]): ... # OK ✅️
However, if we switch around the order of definition, the code breaks:
class Scalar[CompatT, TruthT = BoolScalar]: ...
class IntScalar(Scalar[int]): ... # ❌️ NameError: name 'BoolScalar' is not defined
class BoolScalar(Scalar): ...
I guess since the default gets evaluated here. Not sure whether this is a bug or feature request, but it would be nice if the evaluation of the default could be deferred in is case as well.
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-152208
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
Exécutez les deux exemples de définition de classes de l’issue sur CPython 3.14 et comparez leur comportement. Lisez les discussions liées de PEP 696 et PEP 749, puis examinez la PR liée gh-152208 ; la tâche est considérée comme terminée lorsque l’exemple avec la définition en amont ne lève plus de NameError, tandis que l’exemple existant continue de fonctionner.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100