Mypy informa falsamente el error en la variable de tipo unión cuando se bifurca en el tipo

Me encontré con un problema al usar mypy y pude encontrar ayuda / informes al respecto. El siguiente código simplificado y mensaje de error debe explicarse por sí mismo:

#!/usr/bin/env python3

from typing import List, Union

class Corpus:
  path: List[str]

  def __init__(self, path:Union[str,List[str]]) -> None:
    if type(path) == str:
      self.path = [path]
    else:
      self.path = path

Mypy da los siguientes errores:

simplified.py:10: error: List item 0 has incompatible type "Union[str, List[str]]"; expected "str"
simplified.py:12: error: Incompatible types in assignment (expression has type "Union[str, List[str]]", variable has type "List[str]")

Aun cuando el tipo de variable de ruta está marcada para que self.path siempre dé como resultado una lista de cadenas, mypy se queja de tipos incompatibles.

¿Estoy pasando por alto algo o es un error en mypy? (Es un error, debería ir con#type: ignore anotación o hay una mejor solución?)

(Algunos antecedentes: decidí facilitar mi vida escribiendo un módulo que se encargaría de repetir el trabajo. El argumento en cuestión debería ser una ruta a los datos de texto y espero que sea solo una cadena la mayor parte del tiempo, así que no quiero forzarlo a ponerlo en una lista. Sin embargo, deseo permitir que se especifiquen más rutas también. Internamente, lo almaceno como una lista de todos modos ya que el iterador sobre la clase siempre se inicializa con dicha lista (y luego posiblemente la amplía aún más) "desempacando" directorios)).

Respuestas a la pregunta(1)

Su respuesta a la pregunta