Ошибка Mypy, вызванная Psycopg в контейнере DockerPython

Программы на Python
Ответить
Anonymous
 Ошибка Mypy, вызванная Psycopg в контейнере Docker

Сообщение Anonymous »

Я использую mypy для проверки моего проекта Python внутри моего контейнера. Я использую psycopg и SQLAlchemy. Однако я сталкиваюсь с проблемами, связанными с проверкой типов psycopg.
Когда я запускаю mypy src/datasets/database.py в своем коде, я получаю следующая ошибка, связанная с psycopg:

Код: Выделить всё

/usr/local/lib/python3.10/site-packages/psycopg/_cmodule.py:1: error: disable_error_code: Invalid error code(s): import-not-found  [misc]
Found 1 error in 1 file (checked 1 source file)
У меня mypy настроен со следующими настройками в моем файле pyproject.toml:

Код: Выделить всё

[[tool.mypy.overrides]]
module = "psycopg.*"
ignore_missing_imports = true
Моя база данных.py выглядит следующим образом

Код: Выделить всё

from typing import Any, Dict

import pandas as pd
import sqlalchemy.orm.decl_api
from kedro.extras.datasets.pandas.sql_dataset import SQLTableDataSet
from kedro.utils import load_obj
from sqlalchemy.dialects.postgresql import insert as pg_insert

class SQLTableORMDataset(SQLTableDataSet):
def __init__(
self,
orm_model: str,
credentials: Dict[str, Any],
load_args: Dict[str, Any] = None,
save_args: Dict[str, Any] = None,
) -> None:
self.orm_model: sqlalchemy.orm.decl_api.DeclarativeBase = load_obj(orm_model)

super().__init__(table_name=self.table_name, credentials=credentials, load_args=load_args, save_args=save_args)

@property
def table_name(self):
return self.orm_model.__table__.name

@property
def table_schema(self):
return self.orm_model.__table__.schema

def delete_rows(self):
engine = self.engines[self._connection_str]
with engine.begin() as conn:
statement = sqlalchemy.delete(self.orm_model).where(sqlalchemy.text("true"))
conn.execute(statement)

def upsert_data(self, data: pd.DataFrame):
engine = self.engines[self._connection_str]
with engine.begin() as conn:
for row in data.to_dict(orient="records"):
stmt = pg_insert(self.orm_model).values(**row)  # type: ignore

on_conflict_stmt = stmt.on_conflict_do_update(
index_elements=["foo"],
set_=row,
)
conn.execute(on_conflict_stmt)
Среда: Вопрос:
Я попробовал несколько шагов по устранению неполадок, но постоянно получаю ту же ошибку, связанную с psycopg2 и его заглушками типа. Кто-нибудь знает, как решить эту проблему или требуется ли определенная конфигурация, чтобы заглушки типа psycopg2 работали с mypy в среде Dockerized?


Подробнее здесь: https://stackoverflow.com/questions/793 ... -container
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»