python / python/cpython

PEP696 + PEP749: Defer evaluation of defaults when parametrizing

Ouverte
#144,361 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

stdlib topic-typing type-bug
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.