Shapely: Bagaimana dengan menambahkan petunjuk jenis?

Dibuat pada 25 Mei 2019  ·  5Komentar  ·  Sumber: Toblerity/Shapely

Karena Shapely saat ini tidak memiliki petunjuk tipe , hasil yang dihasilkan oleh pemeriksa tipe jauh dari sempurna. Beberapa contoh:

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

dan seterusnya.

Jadi, bagaimana dengan menambahkan file rintisan dengan petunjuk jenis, setidaknya untuk fungsionalitas paling dasar dari dokumen?


Versi indah: 1.6.4.post1, diinstal dari conda.

Komentar yang paling membantu

Saya ingin melihat anotasi ketik di Shapely.

Semua 5 komentar

Saya tidak menentang menambahkan file rintisan. Namun, karena saya bukan pengguna mypy (belum) dan ada banyak kode untuk dijelaskan, saya tidak akan mengambil tugas ini. Saya akan senang untuk meninjau PR, terutama jika memiliki tes anotasi.

Saya ingin melihat anotasi ketik di Shapely.

Anotasi akan menyenangkan untuk dimiliki, mungkin untuk tonggak 1,8 (?)

Satu hal yang perlu dipertimbangkan untuk merencanakan fitur ini adalah apakah akan memasukkan anotasi ke dalam file rintisan untuk mempertahankan kompatibilitas Python 2.7 untuk versi shapely yang akan datang. Atau, buat pencapaian berikutnya (misalnya 1.8) rilis Python 3+ saja, dan pertahankan cabang terpisah untuk bug Python 2.7.

Perhatikan bahwa Python 2.7 tidak akan dipertahankan setelah tahun 2020 ( sekitar 7 bulan dari sekarang ).

Anotasi jenis sebaris akan jauh lebih mudah dipertahankan di masa mendatang.

Jika kita ingin menggunakan sintaks anotasi baru ini akan membutuhkan 3.5 sebagai versi minimum, sedangkan saat ini kami mendukung 3.4. Saya tidak tahu apakah kita sudah menyetujui ini?

Ketik anotasi akan terlihat seperti ini:

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

Kecuali kita perlu mendukung 3.4, dalam hal ini mereka harus dilakukan sebagai komentar (tidak sebaik!):

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

Preferensi saya adalah membutuhkan Python 3.5 untuk Shapely 1.8.

Python 3.4 mencapai akhir masa pakainya pada Maret 2019 , dan #680 membahasnya untuk pengujian Travis CI, jadi saya pikir membutuhkan Python 3.5+ untuk pencapaian berikutnya (1,8?) masuk akal.

Tapi ini berarti kita perlu mempertahankan cabang 1.7 untuk pengguna Python 2.7 (juga <=3.4).

@sgillies apakah sudah waktunya untuk melepaskan diri dari era Python 2.x?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

dopplershift picture dopplershift  ·  3Komentar

ispmarin picture ispmarin  ·  3Komentar

kannes picture kannes  ·  4Komentar

benediktbrandt picture benediktbrandt  ·  3Komentar

MarkWieczorek picture MarkWieczorek  ·  4Komentar