python / python/cpython

inspect.signature crashes with NameError for TYPE_CHECKING-only annotations

Ouverte
#152,835 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

stdlib 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:
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

  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

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

Recevez les nouvelles issues par e-mail

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