shapely 2.0.7__tar.gz → 2.1.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. {shapely-2.0.7 → shapely-2.1.0rc1}/CHANGES.txt +93 -2
  2. {shapely-2.0.7 → shapely-2.1.0rc1}/PKG-INFO +8 -10
  3. {shapely-2.0.7 → shapely-2.1.0rc1}/README.rst +4 -4
  4. shapely-2.1.0rc1/docs/coverage.rst +11 -0
  5. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/design.rst +0 -1
  6. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/geometry.rst +8 -8
  7. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/index.rst +2 -0
  8. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/installation.rst +49 -32
  9. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/io.rst +0 -1
  10. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/manual.rst +226 -185
  11. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/migration.rst +10 -8
  12. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/migration_pygeos.rst +6 -4
  13. shapely-2.1.0rc1/docs/plotting.rst +12 -0
  14. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/strtree.rst +1 -1
  15. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/testing.rst +2 -2
  16. shapely-2.1.0rc1/pyproject.toml +188 -0
  17. {shapely-2.0.7 → shapely-2.1.0rc1}/setup.cfg +0 -12
  18. {shapely-2.0.7 → shapely-2.1.0rc1}/setup.py +53 -63
  19. shapely-2.1.0rc1/shapely/__init__.py +36 -0
  20. shapely-2.1.0rc1/shapely/_coverage.py +168 -0
  21. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_enum.py +1 -1
  22. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_geometry.py +317 -165
  23. shapely-2.1.0rc1/shapely/_geometry_helpers.pyx +730 -0
  24. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_geos.pxd +10 -4
  25. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_geos.pyx +0 -1
  26. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_pygeos_api.pxd +26 -3
  27. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_ragged_array.py +117 -95
  28. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_version.py +3 -3
  29. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/affinity.py +6 -6
  30. shapely-2.1.0rc1/shapely/algorithms/__init__.py +1 -0
  31. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/algorithms/_oriented_envelope.py +1 -3
  32. shapely-2.1.0rc1/shapely/algorithms/cga.py +50 -0
  33. shapely-2.1.0rc1/shapely/algorithms/polylabel.py +43 -0
  34. shapely-2.1.0rc1/shapely/conftest.py +70 -0
  35. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/constructive.py +679 -197
  36. shapely-2.1.0rc1/shapely/coordinates.py +335 -0
  37. shapely-2.1.0rc1/shapely/coords.py +119 -0
  38. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/creation.py +372 -96
  39. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/decorators.py +54 -3
  40. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/errors.py +13 -15
  41. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/__init__.py +11 -12
  42. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/base.py +302 -191
  43. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/collection.py +11 -11
  44. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/geo.py +23 -15
  45. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/linestring.py +53 -30
  46. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/multilinestring.py +11 -9
  47. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/multipoint.py +25 -16
  48. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/multipolygon.py +13 -14
  49. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/point.py +44 -23
  50. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/polygon.py +55 -65
  51. shapely-2.1.0rc1/shapely/geos.py +17 -0
  52. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/io.py +91 -56
  53. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/linear.py +69 -36
  54. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/measurement.py +93 -64
  55. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/ops.py +90 -108
  56. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/plotting.py +17 -12
  57. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/predicates.py +438 -243
  58. shapely-2.1.0rc1/shapely/prepared.py +74 -0
  59. shapely-2.1.0rc1/shapely/set_operations.py +784 -0
  60. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/speedups.py +12 -9
  61. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/strtree.py +36 -30
  62. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/testing.py +12 -8
  63. shapely-2.1.0rc1/shapely/tests/common.py +285 -0
  64. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_collection.py +14 -1
  65. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_coords.py +31 -6
  66. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_decimal.py +28 -28
  67. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_equality.py +78 -31
  68. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_format.py +29 -27
  69. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_geometry_base.py +90 -2
  70. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_linestring.py +22 -3
  71. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multi.py +1 -1
  72. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multilinestring.py +0 -1
  73. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multipoint.py +17 -2
  74. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multipolygon.py +22 -0
  75. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_point.py +23 -10
  76. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_polygon.py +4 -7
  77. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/conftest.py +0 -9
  78. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_affinity.py +4 -7
  79. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_buffer.py +3 -2
  80. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_cga.py +1 -1
  81. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_clip_by_rect.py +1 -2
  82. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_create_inconsistent_dimensionality.py +8 -5
  83. shapely-2.1.0rc1/shapely/tests/legacy/test_equality.py +24 -0
  84. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_invalid_geometries.py +1 -3
  85. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_linemerge.py +0 -1
  86. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_locale.py +2 -4
  87. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_make_valid.py +0 -3
  88. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_mapping.py +1 -1
  89. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_minimum_clearance.py +2 -12
  90. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_operations.py +5 -3
  91. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_orient.py +28 -0
  92. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_persist.py +2 -5
  93. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_pickle.py +4 -7
  94. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_polygonize.py +0 -1
  95. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_polylabel.py +24 -39
  96. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_predicates.py +2 -6
  97. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_prepared.py +4 -1
  98. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_shape.py +16 -1
  99. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_snap.py +0 -1
  100. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_split.py +41 -5
  101. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_substring.py +1 -1
  102. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_union.py +3 -7
  103. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_vectorized.py +4 -1
  104. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_voronoi_diagram.py +1 -18
  105. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_wkb.py +4 -21
  106. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_wkt.py +2 -2
  107. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/threading_test.py +6 -6
  108. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_constructive.py +413 -33
  109. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_coordinates.py +188 -32
  110. shapely-2.1.0rc1/shapely/tests/test_coverage.py +249 -0
  111. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_creation.py +150 -2
  112. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_creation_indices.py +168 -1
  113. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_geometry.py +89 -88
  114. shapely-2.1.0rc1/shapely/tests/test_io.py +1351 -0
  115. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_linear.py +15 -3
  116. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_measurement.py +0 -11
  117. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_misc.py +8 -14
  118. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_plotting.py +21 -3
  119. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_predicates.py +95 -12
  120. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_ragged_array.py +210 -21
  121. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_set_operations.py +87 -54
  122. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_strtree.py +12 -34
  123. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_testing.py +2 -8
  124. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/validation.py +10 -10
  125. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/vectorized/__init__.py +22 -6
  126. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/wkb.py +11 -5
  127. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/wkt.py +14 -19
  128. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/PKG-INFO +8 -10
  129. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/SOURCES.txt +7 -1
  130. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/requires.txt +2 -1
  131. shapely-2.1.0rc1/src/c_api.c +31 -0
  132. {shapely-2.0.7 → shapely-2.1.0rc1}/src/c_api.h +9 -6
  133. {shapely-2.0.7 → shapely-2.1.0rc1}/src/coords.c +24 -24
  134. {shapely-2.0.7 → shapely-2.1.0rc1}/src/fast_loop_macros.h +14 -3
  135. {shapely-2.0.7 → shapely-2.1.0rc1}/src/geos.c +375 -183
  136. {shapely-2.0.7 → shapely-2.1.0rc1}/src/geos.h +37 -15
  137. {shapely-2.0.7 → shapely-2.1.0rc1}/src/lib.c +6 -2
  138. {shapely-2.0.7 → shapely-2.1.0rc1}/src/pygeom.c +36 -36
  139. shapely-2.1.0rc1/src/pygeos.c +258 -0
  140. shapely-2.1.0rc1/src/pygeos.h +8 -0
  141. {shapely-2.0.7 → shapely-2.1.0rc1}/src/strtree.c +3 -9
  142. {shapely-2.0.7 → shapely-2.1.0rc1}/src/ufuncs.c +549 -247
  143. {shapely-2.0.7 → shapely-2.1.0rc1}/src/vector.c +0 -1
  144. shapely-2.0.7/pyproject.toml +0 -78
  145. shapely-2.0.7/shapely/__init__.py +0 -33
  146. shapely-2.0.7/shapely/_geometry_helpers.pyx +0 -395
  147. shapely-2.0.7/shapely/algorithms/cga.py +0 -24
  148. shapely-2.0.7/shapely/algorithms/polylabel.py +0 -139
  149. shapely-2.0.7/shapely/coordinates.py +0 -198
  150. shapely-2.0.7/shapely/coords.py +0 -67
  151. shapely-2.0.7/shapely/geometry/conftest.py +0 -10
  152. shapely-2.0.7/shapely/geos.py +0 -8
  153. shapely-2.0.7/shapely/prepared.py +0 -77
  154. shapely-2.0.7/shapely/set_operations.py +0 -509
  155. shapely-2.0.7/shapely/tests/common.py +0 -125
  156. shapely-2.0.7/shapely/tests/legacy/__init__.py +0 -10
  157. shapely-2.0.7/shapely/tests/legacy/test_equality.py +0 -32
  158. shapely-2.0.7/shapely/tests/test_io.py +0 -790
  159. shapely-2.0.7/src/c_api.c +0 -31
  160. {shapely-2.0.7 → shapely-2.1.0rc1}/CITATION.cff +0 -0
  161. {shapely-2.0.7 → shapely-2.1.0rc1}/CREDITS.txt +0 -0
  162. {shapely-2.0.7 → shapely-2.1.0rc1}/LICENSE.txt +0 -0
  163. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/constructive.rst +0 -0
  164. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/coordinates.rst +0 -0
  165. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/creation.rst +0 -0
  166. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/linear.rst +0 -0
  167. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/measurement.rst +0 -0
  168. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/predicates.rst +0 -0
  169. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/properties.rst +0 -0
  170. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/release.rst +0 -0
  171. {shapely-2.0.7 → shapely-2.1.0rc1}/docs/set_operations.rst +0 -0
  172. {shapely-2.0.7/shapely/algorithms → shapely-2.1.0rc1/shapely/tests}/__init__.py +0 -0
  173. {shapely-2.0.7/shapely/tests → shapely-2.1.0rc1/shapely/tests/geometry}/__init__.py +0 -0
  174. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_emptiness.py +0 -0
  175. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_hash.py +0 -0
  176. {shapely-2.0.7/shapely/tests/geometry → shapely-2.1.0rc1/shapely/tests/legacy}/__init__.py +0 -0
  177. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_box.py +0 -0
  178. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_delaunay.py +0 -0
  179. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_empty_polygons.py +0 -0
  180. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_geointerface.py +0 -0
  181. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_linear_referencing.py +0 -0
  182. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_ndarrays.py +0 -0
  183. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_nearest.py +0 -0
  184. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_operators.py +0 -0
  185. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_parallel_offset.py +0 -0
  186. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_products_z.py +0 -0
  187. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_shared_paths.py +0 -0
  188. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_singularity.py +0 -0
  189. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_svg.py +0 -0
  190. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_transform.py +0 -0
  191. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_validation.py +0 -0
  192. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/dependency_links.txt +0 -0
  193. {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/top_level.txt +0 -0
  194. {shapely-2.0.7 → shapely-2.1.0rc1}/src/coords.h +0 -0
  195. {shapely-2.0.7 → shapely-2.1.0rc1}/src/kvec.h +0 -0
  196. {shapely-2.0.7 → shapely-2.1.0rc1}/src/pygeom.h +0 -0
  197. {shapely-2.0.7 → shapely-2.1.0rc1}/src/strtree.h +0 -0
  198. {shapely-2.0.7 → shapely-2.1.0rc1}/src/ufuncs.h +0 -0
  199. {shapely-2.0.7 → shapely-2.1.0rc1}/src/vector.h +0 -0
  200. {shapely-2.0.7 → shapely-2.1.0rc1}/versioneer.py +0 -0
@@ -1,6 +1,89 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 2.1.0 (unreleased)
5
+ ------------------
6
+
7
+ API changes:
8
+
9
+ - Equality of geometries (``geom1 == geom2``) now considers NaN coordinate
10
+ values in the same location to be equal (#1775). It is recommended however to
11
+ ensure geometries don't have NaN values in the first place, for which you can
12
+ now use the ``handle_nan`` parameter in construction functions.
13
+
14
+ Bug fixes:
15
+
16
+ - Prevent crash when serializing a number > 1e100 to WKT with GEOS < 3.13. (#1907)
17
+ - Ensure ``plot_polygon`` does not color the interiors of polygons (#1933).
18
+ - Fixes GeoJSON serialization of empty points (#2118)
19
+ - Fixes `__geo_interface__` handling of empty points (#2120)
20
+ - Fixes ``GeometryCollection()`` constructor accepting an array of geometries (#2017).
21
+
22
+ Improvements:
23
+
24
+ - Add a ``handle_nan`` parameter to ``shapely.points()``,
25
+ ``shapely.linestrings()`` and ``shapely.linearrings()`` to allow, skip, or
26
+ error on nonfinite (NaN / Inf) coordinates. The default behaviour (allow) is
27
+ backwards compatible (#1594, #1811).
28
+ - Add an ``interleaved`` parameter to ``shapely.transform()`` allowing a transposed call
29
+ signature in the ``transformation`` function.
30
+ - The ``include_z`` in ``shapely.transform()`` now also allows ``None``, which
31
+ lets it automatically detect the dimensionality of each input geometry.
32
+ - Add an ``include_m`` keyword in ``to_ragged_array`` and ``get_coordinates`` (#2234, #2235)
33
+ - Add parameters ``method`` and ``keep_collapsed`` to ``shapely.make_valid()`` (#1941)
34
+ - The ``voronoi_polygons`` now accepts the ``ordered`` keyword, optionally forcing the
35
+ order of polygons within the GeometryCollection to follow the order of input
36
+ coordinates. Requires at least GEOS 3.12. (#1968)
37
+ - Add option on ``invalid="fix"`` to ``from_wkb`` and ``from_wkt`` (#2094)
38
+ - Add a ``normalize`` keyword to ``equals_exact`` (#1231)
39
+ - Handle ``Feature`` type in ``shapely.geometry.shape`` (#1815)
40
+ - Add support to split polygons by multilinestrings (#2206)
41
+ - Add an ``m`` attribute on the Point class and an ``has_m`` attribute on the base Geometry class.
42
+
43
+ New functions:
44
+
45
+ - Add ``disjoint_subset_union`` and ``disjoint_subset_union_all`` as an optimized
46
+ version of union and union_all, assuming inputs can be divided into subsets that do
47
+ not intersect. Requires at least GEOS 3.12.
48
+ - Add function ``minimum_clearance_line`` (#2106)
49
+ - Add function ``maximum_inscribed_circle`` (#1307)
50
+ - Add function ``orient_polygons`` (#2147)
51
+ - Add function ``constrained_delaunay_triangles`` (#1685)
52
+ - Add function ``coverage_simplify`` to allow topological simplification of polygonal
53
+ coverages (#1969)
54
+ - Add function ``coverage_is_valid`` and ``coverage_invalid_edges`` to validate
55
+ an array of geometries as valid topological coverage (#2156)
56
+ - Add function ``equals_identical`` (#1760)
57
+ - Add function ``has_m`` (#2008)
58
+ - Add function ``get_m`` (#2019)
59
+
60
+ Breaking changes in GEOS 3.12:
61
+
62
+ - ``oriented_envelope`` / ``minimum_rotated_rectangle`` changed its implementation
63
+ in GEOS 3.12. Be aware that results will change when updating GEOS. Coincidentally
64
+ the implementation is similar to the shapely 1.x approach. (#1885)
65
+ - ``get_coordinate_dimension`` / ``has_z`` now considers geometries three dimensional if
66
+ they have a NaN z coordinate. (#1885)
67
+ - ``voronoi_polygons`` changed its output from a LINESTRING to a MULTILINESTRING in case
68
+ ``only_edges=True``. (#1885)
69
+ - The WKT representation of a MULTIPOINT changed from for example "MULTIPOINT (0 0, 1 1)"
70
+ to "MULTIPOINT ((0 0), (1 1))". (#1885)
71
+
72
+ Deprecations:
73
+
74
+ - The ``shapely.geos`` module is deprecated. All GEOS-version related attributes are
75
+ available directly from the top-level ``shapely`` namespace as well (already since
76
+ shapely 2.0) (#2145).
77
+ - The ``shapely.vectorized`` module is deprecated. The two functions (``contains and
78
+ ``touches``) can be replaced by the top-level vectorized functions ``contains_xy``
79
+ and ``intersects_xy`` (#1630).
80
+
81
+ Packaging:
82
+
83
+ - Require GEOS >= 3.9, NumPy >= 1.21, and Python >= 3.10 (#1802, #1885, #2124)
84
+ - Binary wheels are now built for musllinux (Alpine) x86_64 platforms (#1996).
85
+ - Upgraded the GEOS version in the binary wheel distributions to 3.13.1.
86
+
4
87
  2.0.7 (2025-01-30)
5
88
  ------------------
6
89
 
@@ -46,6 +129,7 @@ Bug fixes:
46
129
  - Fix bug in ``to_wkt`` with multiple empty Z geometries (#2012).
47
130
  - Fix bug in ``to_ragged_array`` for an array of Points with missing values (#2034).
48
131
 
132
+
49
133
  2.0.3 (2024-02-16)
50
134
  ------------------
51
135
 
@@ -55,6 +139,7 @@ Bug fixes:
55
139
  therefore a ``numpy<2`` upper pin was added to the requirements (#1972).
56
140
  - Upgraded the GEOS version in the binary wheel distributions to 3.11.3.
57
141
 
142
+
58
143
  2.0.2 (2023-10-12)
59
144
  ------------------
60
145
 
@@ -66,11 +151,16 @@ Bug fixes:
66
151
  - Fix ``minimum_rotated_rectangle`` (``oriented_envelope``) to always return
67
152
  the minimum area solution (instead of minimum width). In practice, it will use the
68
153
  GEOS implementation only for GEOS 3.12+, and for older GEOS versions fall back to the
69
- implementation that was included in Shapely < 2.
154
+ implementation that was included in Shapely < 2 (#1670).
155
+ - Fix ``from_ragged_array`` to work with read-only array input (#1744).
156
+ - Fix the handling of z coordinates ``shapely.ops.substring`` (#1699).
70
157
 
71
158
  Wheels are available for Python 3.12 (and still include GEOS 3.11.2). Building
72
159
  from source is now compatible with Cython 3.
73
160
 
161
+ For a full changelog, see
162
+ https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-2
163
+
74
164
  2.0.1 (2023-01-30)
75
165
  ------------------
76
166
 
@@ -91,12 +181,13 @@ Improvements:
91
181
  For a full changelog, see
92
182
  https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-1
93
183
 
184
+
94
185
  2.0.0 (2022-12-12)
95
186
  ------------------
96
187
 
97
188
  Shapely version 2.0.0 is a major release featuring a complete refactor of the
98
189
  internals and new vectorized (element-wise) array operations providing
99
- considerable performance improvements.
190
+ considerable performance improvements.
100
191
 
101
192
  For a full changelog, see
102
193
  https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: shapely
3
- Version: 2.0.7
3
+ Version: 2.1.0rc1
4
4
  Summary: Manipulation and analysis of geometric objects
5
5
  Author: Sean Gillies
6
6
  Maintainer: Shapely contributors
@@ -16,21 +16,19 @@ Classifier: Operating System :: Unix
16
16
  Classifier: Operating System :: MacOS
17
17
  Classifier: Operating System :: Microsoft :: Windows
18
18
  Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.7
20
- Classifier: Programming Language :: Python :: 3.8
21
- Classifier: Programming Language :: Python :: 3.9
22
19
  Classifier: Programming Language :: Python :: 3.10
23
20
  Classifier: Programming Language :: Python :: 3.11
24
21
  Classifier: Programming Language :: Python :: 3.12
25
22
  Classifier: Programming Language :: Python :: 3.13
26
23
  Classifier: Topic :: Scientific/Engineering :: GIS
27
- Requires-Python: >=3.7
24
+ Requires-Python: >=3.10
28
25
  Description-Content-Type: text/x-rst
29
26
  License-File: LICENSE.txt
30
- Requires-Dist: numpy<3,>=1.14
27
+ Requires-Dist: numpy>=1.21
31
28
  Provides-Extra: test
32
29
  Requires-Dist: pytest; extra == "test"
33
30
  Requires-Dist: pytest-cov; extra == "test"
31
+ Requires-Dist: scipy-doctest; extra == "test"
34
32
  Provides-Extra: docs
35
33
  Requires-Dist: numpydoc==1.1.*; extra == "docs"
36
34
  Requires-Dist: matplotlib; extra == "docs"
@@ -143,11 +141,11 @@ See the documentation for more examples and guidance: https://shapely.readthedoc
143
141
  Requirements
144
142
  ============
145
143
 
146
- Shapely 2.0 requires
144
+ Shapely 2.1 requires
147
145
 
148
- * Python >=3.7
149
- * GEOS >=3.5
150
- * NumPy >=1.14
146
+ * Python >=3.10
147
+ * GEOS >=3.9
148
+ * NumPy >=1.21
151
149
 
152
150
  Installing Shapely
153
151
  ==================
@@ -103,11 +103,11 @@ See the documentation for more examples and guidance: https://shapely.readthedoc
103
103
  Requirements
104
104
  ============
105
105
 
106
- Shapely 2.0 requires
106
+ Shapely 2.1 requires
107
107
 
108
- * Python >=3.7
109
- * GEOS >=3.5
110
- * NumPy >=1.14
108
+ * Python >=3.10
109
+ * GEOS >=3.9
110
+ * NumPy >=1.21
111
111
 
112
112
  Installing Shapely
113
113
  ==================
@@ -0,0 +1,11 @@
1
+ Coverage operations
2
+ ===================
3
+
4
+ .. currentmodule:: shapely
5
+
6
+ .. autosummary::
7
+ :toctree: reference/
8
+
9
+ {% for function in get_module_functions("_coverage") %}
10
+ {{ function }}
11
+ {% endfor %}
@@ -27,4 +27,3 @@ In sum, Shapely's stack is 4 layers:
27
27
  .. [1] John R. Herring, Ed.,
28
28
  “OpenGIS Implementation Specification for Geographic information - Simple
29
29
  feature access - Part 1: Common architecture,” Oct. 2006.
30
-
@@ -53,8 +53,8 @@ or WKB (Well-Known Binary) representation:
53
53
  >>> from_wkb(b"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?")
54
54
  <POINT (1 1)>
55
55
 
56
- A more efficient way of constructing geometries is by making use of the (vectorized)
57
- functions described in :ref:`ref-creation`.
56
+ A more efficient way of constructing geometries is by making use of the
57
+ (vectorized) functions described in :ref:`ref-creation`.
58
58
 
59
59
  Pickling
60
60
  ~~~~~~~~
@@ -181,9 +181,9 @@ Canonical form
181
181
  When operations are applied on geometries the result is returned according to
182
182
  some conventions.
183
183
 
184
- In most cases, geometries will be returned in "mild" canonical form. There is no
185
- goal to keep this form stable, so it is expected to change in future versions of
186
- GEOS:
184
+ In most cases, geometries will be returned in "mild" canonical form. There is
185
+ no goal to keep this form stable, so it is expected to change in future
186
+ versions of GEOS:
187
187
 
188
188
  - the coordinates of exterior rings follow a clockwise orientation and interior
189
189
  rings have a counter-clockwise orientation. This is the opposite of the OGC
@@ -194,9 +194,9 @@ GEOS:
194
194
  - the order of geometry types in a collection can be changed, but the order is
195
195
  undefined
196
196
 
197
- When :func:`~shapely.normalize` is used, the "strict" canonical form is applied.
198
- This type of normalization is meant to be stable, so changes to it will be
199
- avoided if possible:
197
+ When :func:`~shapely.normalize` is used, the "strict" canonical form is
198
+ applied. This type of normalization is meant to be stable, so changes to it
199
+ will be avoided if possible:
200
200
 
201
201
  - the coordinates of exterior rings follow a clockwise orientation and interior
202
202
  rings have a counter-clockwise orientation
@@ -29,9 +29,11 @@
29
29
  set_operations
30
30
  constructive
31
31
  linear
32
+ coverage
32
33
  coordinates
33
34
  strtree
34
35
  testing
36
+ plotting
35
37
 
36
38
  Indices and tables
37
39
  ==================
@@ -25,6 +25,15 @@ Shapely is available on the conda-forge channel. Install as follows::
25
25
 
26
26
  $ conda install shapely --channel conda-forge
27
27
 
28
+ Installation of the development version using nightly wheels
29
+ ------------------------------------------------------------
30
+
31
+ If you want to test the latest development version of Shapely, the easiest way
32
+ to get this version is by installing it from the Scientific Python index of
33
+ nightly wheel packages::
34
+
35
+ python -m pip install --pre --upgrade --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple shapely
36
+
28
37
 
29
38
  Installation from source with custom GEOS library
30
39
  -------------------------------------------------
@@ -45,16 +54,17 @@ On macOS::
45
54
  $ brew install geos # skip this if you already have GEOS
46
55
  $ pip install shapely --no-binary shapely
47
56
 
48
- If you've installed GEOS to a standard location on Linux or macOS, the installation will automatically
49
- find it using ``geos-config``. See the notes below on GEOS discovery at compile time
50
- to configure this.
57
+ If you've installed GEOS to a standard location on Linux or macOS, the
58
+ installation will automatically find it using ``geos-config``. See the notes
59
+ below on GEOS discovery at compile time to configure this.
51
60
 
52
- We do not have a recipe for Windows platforms. The following steps should enable you
53
- to build Shapely yourself:
61
+ We do not have a recipe for Windows platforms. The following steps should
62
+ enable you to build Shapely yourself:
54
63
 
55
64
  - Get a C compiler applicable to your Python version (https://wiki.python.org/moin/WindowsCompilers)
56
65
  - Download and install a GEOS binary (https://trac.osgeo.org/osgeo4w/)
57
- - Set GEOS_INCLUDE_PATH and GEOS_LIBRARY_PATH environment variables (see below for notes on GEOS discovery)
66
+ - Set GEOS_INCLUDE_PATH and GEOS_LIBRARY_PATH environment variables (see below
67
+ for notes on GEOS discovery)
58
68
  - Run ``pip install shapely --no-binary``
59
69
  - Make sure the GEOS .dll files are available on the PATH
60
70
 
@@ -62,8 +72,8 @@ to build Shapely yourself:
62
72
  Installation for local development
63
73
  -----------------------------------
64
74
 
65
- This is similar to installing with a custom GEOS binary, but then instead of installing
66
- Shapely with pip from PyPI, you clone the package from Github::
75
+ This is similar to installing with a custom GEOS binary, but then instead of
76
+ installing Shapely with pip from PyPI, you clone the package from Github::
67
77
 
68
78
  $ git clone git@github.com:shapely/shapely.git
69
79
  $ cd shapely/
@@ -72,8 +82,8 @@ Install it in development mode using ``pip``::
72
82
 
73
83
  $ pip install -e .[test]
74
84
 
75
- For development, use of a virtual environment is strongly recommended. For example
76
- using ``venv``:
85
+ For development, use of a virtual environment is strongly recommended. For
86
+ example using ``venv``:
77
87
 
78
88
  .. code-block:: console
79
89
 
@@ -101,9 +111,10 @@ Shapely can be tested using ``pytest``::
101
111
  GEOS discovery (compile time)
102
112
  -----------------------------
103
113
 
104
- If GEOS is installed on Linux or macOS, the ``geos-config`` command line utility
105
- should be available and ``pip`` will find GEOS automatically.
106
- If the correct ``geos-config`` is not on the PATH, you can add it as follows (on Linux/macOS)::
114
+ If GEOS is installed on Linux or macOS, the ``geos-config`` command line
115
+ utility should be available and ``pip`` will find GEOS automatically.
116
+ If the correct ``geos-config`` is not on the PATH, you can add it as follows
117
+ (on Linux/macOS)::
107
118
 
108
119
  $ export PATH=/path/to/geos/bin:$PATH
109
120
 
@@ -113,8 +124,8 @@ header files using environment variables (on Linux/macOS)::
113
124
  $ export GEOS_INCLUDE_PATH=/path/to/geos/include
114
125
  $ export GEOS_LIBRARY_PATH=/path/to/geos/lib
115
126
 
116
- On Windows, there is no ``geos-config`` and the include and lib folders need to be
117
- specified manually in any case::
127
+ On Windows, there is no ``geos-config`` and the include and lib folders need to
128
+ be specified manually in any case::
118
129
 
119
130
  $ set GEOS_INCLUDE_PATH=C:\path\to\geos\include
120
131
  $ set GEOS_LIBRARY_PATH=C:\path\to\geos\lib
@@ -129,13 +140,15 @@ Common locations of GEOS (to be suffixed by ``lib``, ``include`` or ``bin``):
129
140
  GEOS discovery (runtime)
130
141
  ------------------------
131
142
 
132
- Shapely is dynamically linked to GEOS. This means that the same GEOS library that was used
133
- during Shapely compilation is required on your system at runtime. When using Shapely that was distributed
134
- as a binary wheel or through conda, this is automatically the case and you can stop reading.
143
+ Shapely is dynamically linked to GEOS. This means that the same GEOS library
144
+ that was used during Shapely compilation is required on your system at runtime.
145
+ When using Shapely that was distributed as a binary wheel or through conda,
146
+ this is automatically the case and you can stop reading.
135
147
 
136
- In other cases this can be tricky, especially if you have multiple GEOS installations next
137
- to each other. We only include some guidelines here to address this issue as this document is
138
- not intended as a general guide of shared library discovery.
148
+ In other cases this can be tricky, especially if you have multiple GEOS
149
+ installations next to each other. We only include some guidelines here to
150
+ address this issue as this document is not intended as a general guide of
151
+ shared library discovery.
139
152
 
140
153
  If you encounter exceptions like:
141
154
 
@@ -143,17 +156,21 @@ If you encounter exceptions like:
143
156
 
144
157
  ImportError: libgeos_c.so.1: cannot open shared object file: No such file or directory
145
158
 
146
- You will have to make the shared library file available to the Python interpreter. There are in
147
- general four ways of making Python aware of the location of shared library:
148
-
149
- 1. Copy the shared libraries into the ``shapely`` module directory (this is how Windows binary wheels work:
150
- they are distributed with the correct dlls in the ``shapely`` module directory)
151
- 2. Copy the shared libraries into the library directory of the Python interpreter (this is how
152
- Anaconda environments work)
153
- 3. Copy the shared libraries into some system location (``C:\Windows\System32``; ``/usr/local/lib``,
154
- this happens if you installed GEOS through ``apt`` or ``brew``)
155
- 4. Add the shared library location to a the dynamic linker path variable at runtime.
156
- (Advanced usage; Linux and macOS only; on Windows this method was deprecated in Python 3.8)
159
+ You will have to make the shared library file available to the Python
160
+ interpreter. There are in general four ways of making Python aware of the
161
+ location of shared library:
162
+
163
+ 1. Copy the shared libraries into the ``shapely`` module directory (this is how
164
+ Windows binary wheels work: they are distributed with the correct dlls in
165
+ the ``shapely`` module directory)
166
+ 2. Copy the shared libraries into the library directory of the Python
167
+ interpreter (this is how Anaconda environments work)
168
+ 3. Copy the shared libraries into some system location
169
+ (``C:\Windows\System32``; ``/usr/local/lib``, this happens if you installed
170
+ GEOS through ``apt`` or ``brew``)
171
+ 4. Add the shared library location to a the dynamic linker path variable at
172
+ runtime. (Advanced usage; Linux and macOS only; on Windows this method was
173
+ deprecated in Python 3.8)
157
174
 
158
175
  The filenames of the GEOS shared libraries are:
159
176
 
@@ -9,4 +9,3 @@ Input/Output
9
9
  {% for function in get_module_functions("io") %}
10
10
  {{ function }}
11
11
  {% endfor %}
12
-