Allow specifying length of sized object
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Sometimes I want to specify the size of a container. This could be done manually with casts, but it would be really cool if Mypy could figure this out automatically. __len__() is guaranteed to return an int, and since a is defined as a literal the match could be statically inferrable. The same is true of other container types.
from typing_extensions import Protocol, Literal
class Char(Protocol):
def __len__(self) -> Literal[1]:
...
a: Char = "X"
Mypy reports
error: Incompatible types in assignment (expression has type "str", variable has type "Char")
note: Following member(s) of "str" have conflicts:
note: Expected:
note: def __len__(self) -> Literal[1]
note: Got:
note: def __len__(self) -> int
Mypy 0.720
CPython 3.7.3
Guía de contribución
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 ejecutando el ejemplo proporcionado de Python 3.7.3 con el comportamiento reportado de Mypy 0.720 y examina cómo la compatibilidad de protocolos gestiona los tipos de retorno de len y los valores Literal. Se considera terminado cuando se acepta la asignación a Char si el tamaño del contenedor puede inferirse estáticamente, con un comportamiento equivalente para otros tipos de contenedor.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- 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
- 30/100