Shapely: タイプヒントを追加するのはどうですか?

作成日 2019年05月25日  ·  5コメント  ·  ソース: Toblerity/Shapely

Shapelyには現在型ヒントがないため、型チェッカーによって生成される結果は完全にはほど遠いものです。 いくつかの例:

from shapely.geometry import Polygon, LineString, Point

area = Polygon().area  # Inferred type: Any. Should be: float
geom_type = LineString().geom_type  # Inferred type: Union[str, List[str]]
# Should be LineString in this case
representative_point = Polygon().representative_point()
# Inferred type: Union[Polygon, Any]. Should be: Point
x = Point(1, 1).x  # Inferred type: Union[object, Tuple[object, object, object], Tuple[object, object]]
# Should be: float

等々。

では、少なくともドキュメントの最も基本的な機能については、タイプヒントを使用して


形の良いバージョン:1.6.4.post1、condaからインストール。

最も参考になるコメント

Shapelyで型注釈を確認したいと思います。

全てのコメント5件

私はスタブファイルを追加することに反対していません。 ただし、私は(まだ)mypyユーザーではなく、注釈を付けるコードがたくさんあるので、このタスクを引き受けるつもりはありません。 特に注釈のテストがあった場合は、PRを確認できれば幸いです。

Shapelyで型注釈を確認したいと思います。

おそらく1.8マイルストーン(?)の場合、注釈があると便利です。

この機能の計画を検討する際に考慮すべきことの1つは、Shapelyの将来のバージョンでPython 2.7との互換性を維持するために、アノテーションをスタブファイルに配置するかどうかです。 または、次のマイルストーン(1.8など)でPython 3以降のみをリリースし、Python2.7のバグ用に別のブランチを維持します。

Python 2.7は2020年以降(今から約7か月後)は維持されないことに注意してください。

インライン型アノテーションは、今後の保守がはるかに簡単になります。

新しい注釈構文を使用する場合は、最小バージョンとして3.5が必要ですが、現在は3.4をサポートしています。 まだ同意したかどうかわかりませんか?

型注釈は次のようになります。

def nearest_points(g1: Geometry, g2: Geometry) -> Tuple[Geometry, Geometry]:

3.4をサポートする必要がない限り、その場合はコメントとして行う必要があります(それほど良くはありません!):

def nearest_points(g1, g2): # type: (Geometry, Geometry) -> Tuple[Geometry, Geometry]

私の好みは、Shapely1.8にPython3.5を要求することです。

Python 3.4は2019年3月にサポートが終了し、#680はTravis CIテストでこれに対処したため、次のマイルストーン(1.8?)にPython3.5以降を要求することは理にかなっていると思います。

ただし、これは、Python 2.7ユーザー用に1.7ブランチを維持する必要があることを意味します(これも<= 3.4)。

@sgilliesは、Python 2.xの時代から脱却する時ですか?

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

LostFan123 picture LostFan123  ·  3コメント

chivasblue picture chivasblue  ·  3コメント

romainfontaine picture romainfontaine  ·  5コメント

mikedh picture mikedh  ·  6コメント

ispmarin picture ispmarin  ·  3コメント