Shapely: Que diriez-vous d'ajouter des conseils de type ?

Créé le 25 mai 2019  ·  5Commentaires  ·  Source: Toblerity/Shapely

Comme Shapely n'a actuellement pas d' indices de type , les résultats produits par les vérificateurs de type sont loin d'être parfaits. Quelques exemples:

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

etc.

Alors, que diriez-vous d'ajouter des fichiers de raccord avec les conseils de type, au moins pour les fonctionnalités les plus basiques de la documentation ?


Version Shapely : 1.6.4.post1, installée depuis conda.

Commentaire le plus utile

J'aimerais voir des annotations de type dans Shapely.

Tous les 5 commentaires

Je ne suis pas opposé à l'ajout de fichiers de raccord. Cependant, comme je ne suis pas (encore) un utilisateur de mypy et qu'il y a beaucoup de code à annoter, je ne vais pas me charger de cette tâche. Je serais heureux de revoir un PR, surtout s'il comportait des tests des annotations.

J'aimerais voir des annotations de type dans Shapely.

Des annotations seraient bien d'avoir, peut-être pour le jalon 1.8 (?)

Une chose à considérer pour planifier cette fonctionnalité est de savoir s'il faut mettre des annotations dans les fichiers de raccord pour maintenir la compatibilité Python 2.7 pour les futures versions de shapely. Ou bien, faites en sorte que le prochain jalon (par exemple 1.8) publie uniquement Python 3+ et conservez une branche distincte pour les bogues Python 2.7.

Notez que Python 2.7 ne sera pas maintenu après 2020 ( environ 7 mois à partir de maintenant ).

Les annotations de type en ligne seront beaucoup plus faciles à maintenir à l'avenir.

Si nous voulons utiliser la nouvelle syntaxe d'annotation, cela nécessitera 3.5 comme version minimale, alors que nous supportons actuellement 3.4. Je ne sais pas si nous nous sommes mis d'accord ?

Les annotations de type ressembleront à ceci :

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

À moins que nous ayons besoin de prendre en charge la version 3.4, auquel cas ils devraient être effectués sous forme de commentaires (pas aussi sympas !) :

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

Ma préférence serait d'exiger Python 3.5 pour Shapely 1.8.

Python 3.4 a atteint sa fin de vie en mars 2019 et le numéro 680 a résolu ce problème pour les tests Travis CI, donc je pense qu'exiger Python 3.5+ pour la prochaine étape (1,8 ?) est logique.

Mais cela signifie que nous aurions besoin de maintenir une branche 1.7 pour les utilisateurs de Python 2.7 (également <=3.4).

@sgillies est-il temps de rompre avec l'ère Python 2.x ?

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

benediktbrandt picture benediktbrandt  ·  3Commentaires

sgillies picture sgillies  ·  6Commentaires

FuriousRococo picture FuriousRococo  ·  5Commentaires

akadouri picture akadouri  ·  4Commentaires

sgillies picture sgillies  ·  5Commentaires