TypeVar substitution in get_type_hints
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 1.8k
- Forks
- 302
- Merge medio
- 23 h
- PR fusionados (30 d)
- 8
Descripción
When it comes to generic classes, type annotations retrieved with get_type_hints are not really easy to use, as in the following example:
from typing import Generic, TypeVar, get_type_hints
T = TypeVar("T")
class A(Generic[T]):
a: T
U = TypeVar("U")
class B(A[U]):
b: U
assert get_type_hints(B) == {"a": T, "b": U}
It could be useful to add a TypeVar substitution to get_type_hints, for example with an additional substitute_type_vars parameter (with a False default)
By the way, get_type_hints could also allow to pass generic alias in order to substitute directly TypeVars with their related argument.
It would give for the example above:
assert get_type_hints(B, substitute_type_vars=True) == {"a": U, "b": U} # typevars are consistent
assert get_type_hints(B[T], substitute_type_vars=True) == {"a": T, "b": T}
assert get_type_hints(B[int], substitute_type_vars=True) == {"a": int, "b": int} # ready to use
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la API get_type_hints y los ejemplos de generic-class del issue; después, revisa cómo se representan actualmente los generic aliases y las relaciones de TypeVar. Se considera terminado cuando se haya definido e implementado el comportamiento de sustitución propuesto, incluido el parámetro desactivado de forma predeterminada y las entradas de alias, con pruebas que cubran B, B[T] y B[int].
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100