рдЬреИрд╕рд╛ рдХрд┐ рд╢реЗрдкрд▓реА рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЯрд╛рдЗрдк рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ, рдЯрд╛рдЗрдк рдЪреЗрдХрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рдкрд░рд┐рдгрд╛рдо рдПрдХрджрдо рд╕рд╣реА рд╣реИрдВред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:
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
рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рддреЛ, рдХрдо рд╕реЗ рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
рд╕реБрдбреМрд▓ рд╕рдВрд╕реНрдХрд░рдг: 1.6.4.post1, рдХреЛрдВрдбрд╛ рд╕реЗ рд╕реНрдерд╛рдкрд┐рддред
рдореИрдВ рд╕реНрдЯрдм рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреВрдВрдХрд┐ рдореИрдВ рдПрдХ mypy рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реВрдВ (рдЕрднреА рддрдХ) рдФрд░ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реИрдВ, рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдВред
рдореБрдЭреЗ рд╢реЗрдкрд▓реА рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред
рдПрдиреЛрдЯреЗрд╢рди рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж 1.8 рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ (?)
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 2.7 рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╕реНрдЯрдм рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПред рдпрд╛, рдЕрдЧрд▓рд╛ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдмрдирд╛рдПрдВ (рдЬреИрд╕реЗ 1.8) рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3+ рдЬрд╛рд░реА рдХрд░реЗрдВ, рдФрд░ рдкрд╛рдпрдерди 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]
рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╢реЗрдкрд▓реА 1.8 рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 3.5 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдорд╛рд░реНрдЪ 2019 рдореЗрдВ рдкрд╛рдпрдерди 3.4 рдЕрдкрдиреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛, рдФрд░ #680 рдиреЗ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ (1.8?) рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 3.5+ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд╛рдпрдерди 2.7 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рднреА <=3.4) рдХреЗ рд▓рд┐рдП 1.7 рд╢рд╛рдЦрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
@sgillies рдХреНрдпрд╛ рдпрд╣ рд╕рдордп Python 2.x рдпреБрдЧ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рд╢реЗрдкрд▓реА рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред