mypy で Iterable[Optional[type]] から Iterable[type] を導出したい
今、 mypy を用いて開発を行なっています。
Iterable[Optional[type]]
があったとき、これを Iterable[type]
に変換する関数を記述しようと思い、次のコードを記述しました。
from typing import Optional, Iterable
def remove_none(iterable: Iterable[Optional[int]]) -> Iterable[int]:
return filter(lambda x: x is not None, iterable)
しかし、これは以下のエラーになります。
test.py:5: error: Argument 2 to "filter" has incompatible type "Iterable[Optional[int]]"; expected "Iterable[int]"
質問
Iterable の中身から Optional を外すのは、割と一般的な行為だと思われますが、これは、 mypy でエラーにならないで実装するのは、一般的にどのように行われますか?