Неожиданная ошибка mypy: почему мой тип неприемлем?Python

Программы на Python
Anonymous
Неожиданная ошибка mypy: почему мой тип неприемлем?

Сообщение Anonymous »

Я получаю сообщение об ошибке от mypy, которую не могу объяснить (и, следовательно, не могу исправить):

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

build_rag.py:116: error:
Argument "metadatas" to "add" of "AsyncCollection"
has incompatible type "list[dict[str, str]]";
expected "Mapping[str, str | int | float | bool] |
list[Mapping[str, str | int | float | bool]] |
None"  [arg-type]
Я передаю список[dict[str,str]], который правильно обнаружен mypy. Я ожидал, что это будет соответствовать второму из трех ожидаемых типов: list[Mapping[str, str|int|float|bool]]. Я не являюсь автором вызываемой функции add(). (Это метод chromadb.AsyncCollection.add().)
Я глуп/слеп, или mypy должен был принять мой ввод?
Код, вызывающий функцию, имеет идентификаторы и фрагменты, определенные ранее. Переменная code уже является строкой; вызов str() был просто актом отчаяния с моей стороны. Переменная path является объектом pathlib.Path. chunks — это список[str].

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

            metadata = {
"dc.identifier": str(path),
"code": str(code),
}
metadatas = [metadata for chunk in chunks]
await collection.add(
ids=ids,
documents=chunks,
metadatas=metadatas,
)
Это единственная ошибка mypy, отмеченная в моем файле, поэтому, скрестив пальцы, остальные типы соответствуют рекламе.

Подробнее здесь: https://stackoverflow.com/questions/790 ... acceptable

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