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.
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?
Komentar yang paling membantu
Saya ingin melihat anotasi ketik di Shapely.