Тип Python, намекающий на db-api - PullRequest
       50

Тип Python, намекающий на db-api

0 голосов
/ 27 сентября 2018

Я хотел бы добавить подсказку типа db-api, например:

def test_connect() -> Connection :
...

Зная, что я загружаю драйвер модуля динамически (имеется в виду, без жестко запрограммированных слов "pyodbc.Connection"), ичто в Python нет официального контракта на интерфейс.

Есть идеи?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы, вероятно, захотите использовать протоколы здесь.

Короче говоря, вы определяете пользовательский протокол в вашей кодовой базе, содержащий подписи для методов, которые должен иметь любой объект "соединения".Затем вы можете возвращать любой произвольный объект, если он содержит эти методы с указанными методами.

Последнее замечание: я знаю, что mypy поддерживает протоколы, но я не уверен, что другие контроллеры типов делают,Существует открытый PEP для официального представления протоколов в экосистеме типирования Python - предположительно, другие контролеры типов добавят поддержку протоколов после того, как PEP будет принят, если они этого еще не сделали.

...