python / python/typing

`get_type_hints` occurs NameError only if import `__future__.annotations`

Abierto
#2,132 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

topic: other
Lenguaje dominante
Python
Estrellas
1.8k
Forks
302
Merge medio
23 h
PR fusionados (30 d)
8

Descripción

from typing import get_type_hints


class A[T]:
    def __init__(self, x: T):
        self.x = x

    def foo(self):
        def bar() -> T:
            return self.x

        print(get_type_hints(bar))


A[int](5).foo()

Output: {'return': T}

from __future__ import annotations  # Add this

from typing import get_type_hints


class A[T]:
    def __init__(self, x: T):
        self.x = x

    def foo(self):
        def bar() -> T:
            return self.x

        print(get_type_hints(bar))


A[int](5).foo()

Error:

NameError: name 'T' is not defined

Is this the expected behavior?

Also, is there a way to make it work if __future__.annotations is imported?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce ambos ejemplos y compara cómo typing.get_type_hints resuelve la anotación de retorno de la función local con y sin future.annotations. Después, inspecciona la implementación de get_type_hints y sus pruebas para los alias genéricos y las anotaciones diferidas; se considera terminado cuando el comportamiento esperado y cualquier workaround compatible estén establecidos en el issue o cubiertos por una prueba de regresión específica.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
tooling
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
28/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.