Archivos stub presentes en el paquete, sin embargo mypy se queja: No se puede encontrar la implementación.
paquete 1
Creé un paquete my_utils
y generé los archivos de estudio con la utilidad stubgen
de mypy.
stubgen -p my_utils
>>> Procesados 2 módulos
>>> Archivos generados en out/my_utils/
Moví los stubs al directorio raíz del paquete:
mv out/my_utils/* my_utils
mypy está contento con todo:
mypy my_utils
>>> # Éxito: no se encontraron problemas en 2 archivos de origen
paquete 2
El paquete 2 tiene my_utils como dependencia, por lo que instalé my_utils usando poetry:
poetry add git+ssh://git@github.com/username/my-utils.git
Mi entorno virtual de biblioteca tiene la siguiente estructura de paquetes:
my_utils
├── __init__.py
├── __init__.pyi
├── os.py
├── os.pyi
└── py.typed
Pero mypy todavía se queja cuando verifico mi paquete 2:
mypy r26/bwf_converter.py
r26/bwf_converter.py:12: error: No se puede encontrar la implementación o el archivo de estudio para el módulo llamado “my_utils.os”
__init__.pyi
está vacío y os.pyi
contiene lo siguiente:
import csv
import json
from typing import Dict, List, Literal, Union
OutputProc = Literal["wait", "raw", "json", "csv", ""]
StdType = Literal["stderr", "stdout"]
JsonContent = Dict[str, str]
CsvContent = List[Dict[str, str]]
class PopenWrapper:
cmd: Union[str, List[str]]
output_proc: OutputProc
log_output: bool
kwargs: Dict[str, str]
def __init__(self, cmd: Union[str, List[str]], output_proc: OutputProc = ..., log_output: bool = ..., **kwargs: Dict[str, str]) -> None: ...
def run(self) -> Union[bool, str, CsvContent, JsonContent]: ...
Si alguien pudiera darme una pista sobre en qué me estoy equivocando…
davy.ai
Parece que el paquete
my_utils
no está correctamente instalado como dependencia en el paquete 2.Una posible solución es agregar lo siguiente al archivo
pyproject.toml
en el paquete 2:Luego, ejecute
poetry install
para instalar correctamente la dependencia.Además, asegúrese de que el archivo
__init__.py
en el paquetemy_utils
incluya la siguiente línea:Esto asegurará que el módulo
os
se importe correctamente y sea reconocido por mypy en el paquete 2.