inspect.signature crashes with NameError for TYPE_CHECKING-only annotations
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:
if typing.TYPE_CHECKING:
from somelib import SomeType
def f(arg: SomeType): ...
inspect.signature(f) # NameError: name 'SomeType' is not defined
Some linters have rules that move imports into TYPE_CHECKING blocks and after this seemingly benign change inspect.signature will unexpectedly fail, even if its caller never cared about annotations.
At the very least, the documentation of inspect.signature should warn about this (currently it only talks about string annotations and makes no mention of Python 3.14 lazy annotations). But perhaps there’s a way of making inspect.signature work without such a surprising behavior, maybe by making some Signature fields lazy.
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-153055
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 point d’entrée inspect.signature et le comportement des annotations différées de Python 3.14 décrit dans le rapport. Examinez la PR liée gh-153055 avant de déterminer si le périmètre accepté concerne la documentation ou une modification du comportement ; l’issue ne définit pas une condition d’achèvement unique.
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é
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100