Я новичок в использовании typing
и mypy
.
В приведенном ниже блоке кода mypy
жалуется, что ret
не может быть назначен None
, потому что Incompatible types in assignment (expression has type "None", variable has type "Tuple[Connection, Cursor]") (python-mypy)
.
def __connect__(self) -> Tuple[Optional[Tuple[Conn, Cursor]], Status]:
"""Establish DB connection."""
if self.db_type is DB_Type.SQLITE:
conn = sqlite3.connect(self.db_name)
cur = conn.cursor()
ret, status = (conn, cur), Status(Code.OK)
else:
ret, status = None, self.INVALID_STATUS # mypy error
return ret, status
Но я определяю сигнатуру возвращаемого типа как Optional[Tuple[Connection, Cursor]
вместо Tuple[Connection, Cursor]
. Так что либо я что-то упускаю, либо есть ограничение в mypy
статическом анализе, для которого, вероятно, есть какое-то обходное решение ... указатели очень ценятся.