今、 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 でエラーにならないで実装するのは、一般的にどのように行われますか?