Unpacking int arguments to datetime.datetime gives a complaint about tzinfo
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
Bug Report
mypy complains about this line of code. First I don't understand why and second I cannot bring it to accept it, even when including tzinfo=None in the parameter list.
# error: "datetime" gets multiple values for keyword argument "tzinfo"
dt.datetime(*split_int_string(date, 4, 6, 8), *split_int_string(time, 2, 4))
# or
# error: "datetime" gets multiple values for keyword argument "tzinfo"
dt.datetime(*split_int_string(date, 4, 6, 8), *split_int_string(time, 2, 4), tzinfo=None)
Why does mypy think tzinfo would already be used, it cannot be from a List[int]. The behavior when running is as expected.
The helper function is annotated like this:
def split_int_string(digits: str, *at: int) -> List[int]:
"""
Split a string at given indices and parse the parts to int.
"""
# Make a canonical representation.
split: List[int] = sorted(at)
if not split or split[0] != 0:
split.insert(0, 0)
if split[-1] != len(digits):
split.append(len(digits))
return [int(digits[split[i - 1] : split[i]]) for i in range(1, len(split))]
To Reproduce
(Write your steps here:)
- Paste from here into a file.
- Run with
python3, it works. - Pass to
mypyto see the error.
Expected Behavior
I expect not to get a typing error for that line.
Actual Behavior
It prints
error: Argument 1 to "datetime" has incompatible type "*List[int]"; expected "Optional[tzinfo]"
or
error: "datetime" gets multiple values for keyword argument "tzinfo"
depending on whether one also adds the tzinfo=None or not.
Your Environment
- Mypy version used: 0.812
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files): none - Python version used: 3.8.6
- Operating system and version: Linux CL003356 4.19.128-microsoft-standard #1 SMP Tue Jun 23 12:58:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
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 con el reproductor pegado enlazado en el issue e inspecciona cómo mypy analiza las llamadas a datetime.datetime con múltiples argumentos List[int] desempaquetados. Confirma el diagnóstico relacionado con tzinfo y compáralo después con el comportamiento en tiempo de ejecución mostrado en el informe. Se considera terminado cuando la llamada válida ya no produce el error de tipado incorrecto, mientras que los conflictos de argumentos reales siguen siendo diagnosticados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100