Shapely: ماذا عن إضافة تلميحات الكتابة؟

تم إنشاؤها على ٢٥ مايو ٢٠١٩  ·  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

وما إلى ذلك وهلم جرا.

لذا ، ماذا عن إضافة ملفات stub مع تلميحات الكتابة ، على الأقل بالنسبة للوظائف الأساسية من المستندات؟


إصدار جميل: 1.6.4.post1 ، مثبت من conda.

التعليق الأكثر فائدة

أود أن أرى كتابة التعليقات التوضيحية في Shapely.

ال 5 كومينتر

أنا لا أعارض إضافة ملفات كعب روتين. ومع ذلك ، نظرًا لأنني لست مستخدم mypy (حتى الآن) وهناك الكثير من التعليمات البرمجية للتعليق عليها ، فلن أقوم بهذه المهمة. سأكون سعيدًا بمراجعة العلاقات العامة ، خاصةً إذا كانت تحتوي على اختبارات للتعليقات التوضيحية.

أود أن أرى كتابة التعليقات التوضيحية في Shapely.

سيكون من الجيد الحصول على التعليقات التوضيحية ، ربما بالنسبة إلى المعلم 1.8 (؟)

شيء واحد يجب مراعاته عند التخطيط لهذه الميزة هو ما إذا كان يجب وضع التعليقات التوضيحية في ملفات كعب روتين للحفاظ على توافق Python 2.7 للإصدارات المستقبلية من الشكل الجميل. أو ، اجعل المرحلة التالية (على سبيل المثال 1.8) إصدار Python 3+ فقط ، واحتفظ بفرع منفصل لأخطاء Python 2.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]

أفضّل أن أطلب Python 3.5 لـ Shapely 1.8.

وصلت Python 3.4 إلى نهاية عمرها الافتراضي في مارس 2019 ، و # 680 عالج ذلك بالنسبة لاختبارات Travis CI ، لذلك أعتقد أن طلب Python 3.5+ للخطوة التالية (1.8؟) أمر منطقي.

لكن هذا يعني أننا سنحتاج إلى الاحتفاظ بفرع 1.7 لمستخدمي Python 2.7 (أيضًا <= 3.4).

sgillies هل حان الوقت للانفصال عن عصر Python 2.x؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

FuriousRococo picture FuriousRococo  ·  5تعليقات

sgillies picture sgillies  ·  6تعليقات

MarkWieczorek picture MarkWieczorek  ·  4تعليقات

chivasblue picture chivasblue  ·  3تعليقات

jGaboardi picture jGaboardi  ·  5تعليقات