`AbstractContextManger.__enter__` should be abstract
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 5.1k
- Forks
- 2.1k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 82
Description
Code sample in basedpyright playground
from contextlib import AbstractContextManager
from typing import override
class CM(AbstractContextManager[int]):
@override
def __exit__(self, *_): ...
with CM() as i:
print(i + 1)
AbstractContextManger.__enter__ has a default implementation that returns self, so by making it abstract you would require implementations to provide the correct implementation. this would force a redundant implementation if the type is Self, but that is currently impossible to type anyway: https://discuss.python.org/t/self-as-typevar-default/90939
even without Self support, it is only one line of redundant code: def __enter__(self) -> Self: return self
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 le basedpyright playground example et le AbstractContextManager stub entry point qu’il met à l’épreuve. Vérifiez comment le enter par défaut actuel affecte la vérification des classes abstraites, puis vérifiez que le rendre abstrait exige une implémentation tout en préservant le comportement de typage prévu pour les gestionnaires de contexte.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 55/100