python / python/mypy

`--strict-equality` flag not working with membership operator and `Literal` types

Abierto
#17,062 0 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

feature topic-literal-types topic-overlap
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Bug Report

When using any container (set, frozenset, list, tuples...) containing Literal based types, the --strict-equality is not detecting any issues when I use the membership operator in a non-overlapping check.

To Reproduce

from typing import Literal

OPTIONS = Literal["a", "b"]
var: list[OPTIONS] = ["a"]
if "c" in var:  # MYPY OK
    pass

Expected Behavior

When the flag --strict-equality is set, I would expect that mypy raises an erorr here. Same as it does when I do a non-overlapping equality check:

from typing import Literal

OPTIONS = Literal["a", "b"]
var: list[OPTIONS] = ["a"]
if var[0] == "c":  #  error: Non-overlapping equality check (left operand type: "Literal['a', 'b']", right operand type: "Literal['c']")  [comparison-overlap]
    pass

Actual Behavior

No errors are raised

Your Environment
Using Mypy version 1.9.0

Guía de contribución

Abrir la guía de contribución

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

Comienza ejecutando la reproducción reportada en Python con --strict-equality y compara su comprobación de pertenencia con la comprobación de igualdad indexada. Localiza los puntos de entrada de strict-equality y del análisis de pertenencia; después, añade una prueba de regresión que cubra un contenedor de valores Literal. Se considera terminado cuando mypy informa de una comprobación sin solapamiento para la expresión de pertenencia sin hacer que regresen las comprobaciones de pertenencia válidas.

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
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.