es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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…

Tags:  , , ,

Answer

  1. Avatar for 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:

    [tool.poetry.dependencies]
    my_utils = {git = "git@github.com:username/my-utils.git", branch = "main"}
    

    Luego, ejecute poetry install para instalar correctamente la dependencia.

    Además, asegúrese de que el archivo __init__.py en el paquete my_utils incluya la siguiente línea:

    __all__ = ['os']
    

    Esto asegurará que el módulo os se importe correctamente y sea reconocido por mypy en el paquete 2.

Comments are closed.