Shapely: Wie wäre es mit Typhinweisen?

Erstellt am 25. Mai 2019  ·  5Kommentare  ·  Quelle: Toblerity/Shapely

Wie Shapely derzeit nicht hat Typen Hinweise , nach Art Kontrolleure produzierten Ergebnisse sind bei weitem nicht perfekt. Einige Beispiele:

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

und so weiter.

Wie wäre es also mit dem Hinzufügen von Stub-Dateien mit den Typhinweisen, zumindest für die grundlegendsten Funktionen aus den Dokumenten?


Formschöne Version: 1.6.4.post1, installiert von conda.

Hilfreichster Kommentar

Ich würde gerne Typanmerkungen in Shapely sehen.

Alle 5 Kommentare

Ich bin nicht dagegen, Stub-Dateien hinzuzufügen. Da ich jedoch (noch) kein mypy-Benutzer bin und viel Code zu kommentieren ist, werde ich diese Aufgabe nicht übernehmen. Ich würde mich freuen, eine PR zu überprüfen, insbesondere wenn sie Tests der Anmerkungen enthält.

Ich würde gerne Typanmerkungen in Shapely sehen.

Anmerkungen wären wünschenswert, vielleicht für den 1,8-Meilenstein (?)

Eine Sache, die Sie bei der Planung dieser Funktion in Betracht ziehen sollten, ist, ob Annotationen in Stub-Dateien eingefügt werden sollen, um die Python 2.7-Kompatibilität für zukünftige Versionen von Shapely aufrechtzuerhalten. Oder lassen Sie den nächsten Meilenstein (zB 1.8) nur Python 3+ veröffentlichen und pflegen Sie einen separaten Zweig für Python 2.7-Bugs.

Beachten Sie, dass Python 2.7 nach 2020 (in etwa 7 Monaten ) nicht mehr gewartet wird.

Inline-Anmerkungen werden in Zukunft viel einfacher zu verwalten sein.

Wenn wir die neue Annotationssyntax verwenden möchten, benötigen wir als Mindestversion 3.5, während wir derzeit 3.4 unterstützen. Ich weiß nicht, ob wir das schon vereinbart haben?

Typanmerkungen sehen so aus:

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

Es sei denn, wir müssen 3.4 unterstützen, in diesem Fall müssten sie als Kommentare erfolgen (nicht so schön!):

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

Ich bevorzuge Python 3.5 für Shapely 1.8.

Python 3.4 erreichte im März 2019 sein

Dies bedeutet jedoch, dass wir für Python 2.7-Benutzer (auch <=3.4) einen 1.7-Zweig pflegen müssen.

@sgillies ist es an der Zeit, sich von der Python 2.x-Ära zu lösen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen