shapely 2.0.7__tar.gz → 2.1.0__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.0}/CHANGES.txt +25 -2
  2. {shapely-2.0.7 → shapely-2.1.0}/CITATION.cff +2 -2
  3. {shapely-2.0.7 → shapely-2.1.0}/PKG-INFO +10 -11
  4. {shapely-2.0.7 → shapely-2.1.0}/README.rst +4 -4
  5. shapely-2.1.0/docs/coverage.rst +13 -0
  6. {shapely-2.0.7 → shapely-2.1.0}/docs/design.rst +0 -1
  7. {shapely-2.0.7 → shapely-2.1.0}/docs/geometry.rst +8 -8
  8. {shapely-2.0.7 → shapely-2.1.0}/docs/index.rst +2 -0
  9. {shapely-2.0.7 → shapely-2.1.0}/docs/installation.rst +49 -32
  10. {shapely-2.0.7 → shapely-2.1.0}/docs/io.rst +0 -1
  11. {shapely-2.0.7 → shapely-2.1.0}/docs/manual.rst +226 -185
  12. {shapely-2.0.7 → shapely-2.1.0}/docs/migration.rst +10 -8
  13. {shapely-2.0.7 → shapely-2.1.0}/docs/migration_pygeos.rst +6 -4
  14. shapely-2.1.0/docs/plotting.rst +12 -0
  15. {shapely-2.0.7 → shapely-2.1.0}/docs/strtree.rst +1 -1
  16. {shapely-2.0.7 → shapely-2.1.0}/docs/testing.rst +2 -2
  17. shapely-2.1.0/pyproject.toml +188 -0
  18. {shapely-2.0.7 → shapely-2.1.0}/setup.cfg +0 -12
  19. {shapely-2.0.7 → shapely-2.1.0}/setup.py +53 -63
  20. shapely-2.1.0/shapely/__init__.py +36 -0
  21. shapely-2.1.0/shapely/_coverage.py +168 -0
  22. {shapely-2.0.7 → shapely-2.1.0}/shapely/_enum.py +1 -1
  23. {shapely-2.0.7 → shapely-2.1.0}/shapely/_geometry.py +317 -165
  24. shapely-2.1.0/shapely/_geometry_helpers.pyx +730 -0
  25. {shapely-2.0.7 → shapely-2.1.0}/shapely/_geos.pxd +10 -4
  26. {shapely-2.0.7 → shapely-2.1.0}/shapely/_geos.pyx +0 -1
  27. {shapely-2.0.7 → shapely-2.1.0}/shapely/_pygeos_api.pxd +26 -3
  28. {shapely-2.0.7 → shapely-2.1.0}/shapely/_ragged_array.py +117 -95
  29. {shapely-2.0.7 → shapely-2.1.0}/shapely/_version.py +3 -3
  30. {shapely-2.0.7 → shapely-2.1.0}/shapely/affinity.py +6 -6
  31. shapely-2.1.0/shapely/algorithms/__init__.py +1 -0
  32. {shapely-2.0.7 → shapely-2.1.0}/shapely/algorithms/_oriented_envelope.py +1 -3
  33. shapely-2.1.0/shapely/algorithms/cga.py +50 -0
  34. shapely-2.1.0/shapely/algorithms/polylabel.py +43 -0
  35. shapely-2.1.0/shapely/conftest.py +70 -0
  36. {shapely-2.0.7 → shapely-2.1.0}/shapely/constructive.py +679 -197
  37. shapely-2.1.0/shapely/coordinates.py +335 -0
  38. shapely-2.1.0/shapely/coords.py +119 -0
  39. {shapely-2.0.7 → shapely-2.1.0}/shapely/creation.py +372 -96
  40. {shapely-2.0.7 → shapely-2.1.0}/shapely/decorators.py +54 -3
  41. {shapely-2.0.7 → shapely-2.1.0}/shapely/errors.py +13 -15
  42. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/__init__.py +11 -12
  43. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/base.py +302 -191
  44. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/collection.py +11 -11
  45. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/geo.py +23 -15
  46. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/linestring.py +53 -30
  47. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/multilinestring.py +11 -9
  48. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/multipoint.py +25 -16
  49. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/multipolygon.py +13 -14
  50. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/point.py +44 -23
  51. {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/polygon.py +55 -65
  52. shapely-2.1.0/shapely/geos.py +17 -0
  53. {shapely-2.0.7 → shapely-2.1.0}/shapely/io.py +91 -56
  54. {shapely-2.0.7 → shapely-2.1.0}/shapely/linear.py +69 -36
  55. {shapely-2.0.7 → shapely-2.1.0}/shapely/measurement.py +93 -64
  56. {shapely-2.0.7 → shapely-2.1.0}/shapely/ops.py +90 -108
  57. {shapely-2.0.7 → shapely-2.1.0}/shapely/plotting.py +17 -12
  58. {shapely-2.0.7 → shapely-2.1.0}/shapely/predicates.py +438 -243
  59. shapely-2.1.0/shapely/prepared.py +74 -0
  60. shapely-2.1.0/shapely/set_operations.py +784 -0
  61. {shapely-2.0.7 → shapely-2.1.0}/shapely/speedups.py +12 -9
  62. {shapely-2.0.7 → shapely-2.1.0}/shapely/strtree.py +36 -30
  63. {shapely-2.0.7 → shapely-2.1.0}/shapely/testing.py +12 -8
  64. shapely-2.1.0/shapely/tests/common.py +285 -0
  65. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_collection.py +14 -1
  66. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_coords.py +31 -6
  67. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_decimal.py +28 -28
  68. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_equality.py +78 -31
  69. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_format.py +29 -27
  70. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_geometry_base.py +90 -2
  71. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_linestring.py +22 -3
  72. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multi.py +1 -1
  73. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multilinestring.py +0 -1
  74. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multipoint.py +17 -2
  75. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multipolygon.py +22 -0
  76. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_point.py +23 -10
  77. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_polygon.py +4 -7
  78. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/conftest.py +0 -9
  79. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_affinity.py +4 -7
  80. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_buffer.py +3 -2
  81. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_cga.py +1 -1
  82. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_clip_by_rect.py +1 -2
  83. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_create_inconsistent_dimensionality.py +8 -5
  84. shapely-2.1.0/shapely/tests/legacy/test_equality.py +24 -0
  85. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_invalid_geometries.py +1 -3
  86. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_linemerge.py +0 -1
  87. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_locale.py +2 -4
  88. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_make_valid.py +0 -3
  89. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_mapping.py +1 -1
  90. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_minimum_clearance.py +2 -12
  91. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_operations.py +5 -3
  92. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_orient.py +28 -0
  93. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_persist.py +2 -5
  94. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_pickle.py +4 -7
  95. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_polygonize.py +0 -1
  96. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_polylabel.py +24 -39
  97. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_predicates.py +2 -6
  98. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_prepared.py +4 -1
  99. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_shape.py +16 -1
  100. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_snap.py +0 -1
  101. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_split.py +41 -5
  102. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_substring.py +1 -1
  103. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_union.py +3 -7
  104. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_vectorized.py +4 -1
  105. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_voronoi_diagram.py +1 -18
  106. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_wkb.py +4 -21
  107. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_wkt.py +2 -2
  108. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/threading_test.py +6 -6
  109. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_constructive.py +413 -33
  110. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_coordinates.py +188 -32
  111. shapely-2.1.0/shapely/tests/test_coverage.py +249 -0
  112. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_creation.py +150 -2
  113. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_creation_indices.py +168 -1
  114. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_geometry.py +89 -88
  115. shapely-2.1.0/shapely/tests/test_io.py +1351 -0
  116. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_linear.py +15 -3
  117. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_measurement.py +0 -11
  118. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_misc.py +8 -14
  119. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_plotting.py +21 -3
  120. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_predicates.py +95 -12
  121. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_ragged_array.py +210 -21
  122. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_set_operations.py +87 -54
  123. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_strtree.py +12 -34
  124. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_testing.py +2 -8
  125. {shapely-2.0.7 → shapely-2.1.0}/shapely/validation.py +10 -10
  126. {shapely-2.0.7 → shapely-2.1.0}/shapely/vectorized/__init__.py +22 -6
  127. {shapely-2.0.7 → shapely-2.1.0}/shapely/wkb.py +11 -5
  128. {shapely-2.0.7 → shapely-2.1.0}/shapely/wkt.py +14 -19
  129. {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/PKG-INFO +10 -11
  130. {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/SOURCES.txt +7 -1
  131. {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/requires.txt +2 -1
  132. shapely-2.1.0/src/c_api.c +31 -0
  133. {shapely-2.0.7 → shapely-2.1.0}/src/c_api.h +9 -6
  134. {shapely-2.0.7 → shapely-2.1.0}/src/coords.c +24 -24
  135. {shapely-2.0.7 → shapely-2.1.0}/src/fast_loop_macros.h +14 -3
  136. {shapely-2.0.7 → shapely-2.1.0}/src/geos.c +375 -183
  137. {shapely-2.0.7 → shapely-2.1.0}/src/geos.h +37 -15
  138. {shapely-2.0.7 → shapely-2.1.0}/src/lib.c +6 -2
  139. {shapely-2.0.7 → shapely-2.1.0}/src/pygeom.c +36 -36
  140. shapely-2.1.0/src/pygeos.c +258 -0
  141. shapely-2.1.0/src/pygeos.h +8 -0
  142. {shapely-2.0.7 → shapely-2.1.0}/src/strtree.c +3 -9
  143. {shapely-2.0.7 → shapely-2.1.0}/src/ufuncs.c +549 -247
  144. {shapely-2.0.7 → shapely-2.1.0}/src/vector.c +0 -1
  145. shapely-2.0.7/pyproject.toml +0 -78
  146. shapely-2.0.7/shapely/__init__.py +0 -33
  147. shapely-2.0.7/shapely/_geometry_helpers.pyx +0 -395
  148. shapely-2.0.7/shapely/algorithms/cga.py +0 -24
  149. shapely-2.0.7/shapely/algorithms/polylabel.py +0 -139
  150. shapely-2.0.7/shapely/coordinates.py +0 -198
  151. shapely-2.0.7/shapely/coords.py +0 -67
  152. shapely-2.0.7/shapely/geometry/conftest.py +0 -10
  153. shapely-2.0.7/shapely/geos.py +0 -8
  154. shapely-2.0.7/shapely/prepared.py +0 -77
  155. shapely-2.0.7/shapely/set_operations.py +0 -509
  156. shapely-2.0.7/shapely/tests/common.py +0 -125
  157. shapely-2.0.7/shapely/tests/legacy/__init__.py +0 -10
  158. shapely-2.0.7/shapely/tests/legacy/test_equality.py +0 -32
  159. shapely-2.0.7/shapely/tests/test_io.py +0 -790
  160. shapely-2.0.7/src/c_api.c +0 -31
  161. {shapely-2.0.7 → shapely-2.1.0}/CREDITS.txt +0 -0
  162. {shapely-2.0.7 → shapely-2.1.0}/LICENSE.txt +0 -0
  163. {shapely-2.0.7 → shapely-2.1.0}/docs/constructive.rst +0 -0
  164. {shapely-2.0.7 → shapely-2.1.0}/docs/coordinates.rst +0 -0
  165. {shapely-2.0.7 → shapely-2.1.0}/docs/creation.rst +0 -0
  166. {shapely-2.0.7 → shapely-2.1.0}/docs/linear.rst +0 -0
  167. {shapely-2.0.7 → shapely-2.1.0}/docs/measurement.rst +0 -0
  168. {shapely-2.0.7 → shapely-2.1.0}/docs/predicates.rst +0 -0
  169. {shapely-2.0.7 → shapely-2.1.0}/docs/properties.rst +0 -0
  170. {shapely-2.0.7 → shapely-2.1.0}/docs/release.rst +0 -0
  171. {shapely-2.0.7 → shapely-2.1.0}/docs/set_operations.rst +0 -0
  172. {shapely-2.0.7/shapely/algorithms → shapely-2.1.0/shapely/tests}/__init__.py +0 -0
  173. {shapely-2.0.7/shapely/tests → shapely-2.1.0/shapely/tests/geometry}/__init__.py +0 -0
  174. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_emptiness.py +0 -0
  175. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_hash.py +0 -0
  176. {shapely-2.0.7/shapely/tests/geometry → shapely-2.1.0/shapely/tests/legacy}/__init__.py +0 -0
  177. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_box.py +0 -0
  178. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_delaunay.py +0 -0
  179. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_empty_polygons.py +0 -0
  180. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_geointerface.py +0 -0
  181. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_linear_referencing.py +0 -0
  182. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_ndarrays.py +0 -0
  183. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_nearest.py +0 -0
  184. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_operators.py +0 -0
  185. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_parallel_offset.py +0 -0
  186. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_products_z.py +0 -0
  187. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_shared_paths.py +0 -0
  188. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_singularity.py +0 -0
  189. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_svg.py +0 -0
  190. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_transform.py +0 -0
  191. {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_validation.py +0 -0
  192. {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/dependency_links.txt +0 -0
  193. {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/top_level.txt +0 -0
  194. {shapely-2.0.7 → shapely-2.1.0}/src/coords.h +0 -0
  195. {shapely-2.0.7 → shapely-2.1.0}/src/kvec.h +0 -0
  196. {shapely-2.0.7 → shapely-2.1.0}/src/pygeom.h +0 -0
  197. {shapely-2.0.7 → shapely-2.1.0}/src/strtree.h +0 -0
  198. {shapely-2.0.7 → shapely-2.1.0}/src/ufuncs.h +0 -0
  199. {shapely-2.0.7 → shapely-2.1.0}/src/vector.h +0 -0
  200. {shapely-2.0.7 → shapely-2.1.0}/versioneer.py +0 -0
@@ -1,6 +1,21 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 2.1.0 (2025-04-03)
5
+ ------------------
6
+
7
+ Shapely 2.1.0 is a feature release with various new functions,
8
+ improvements and bug fixes. Highlights include initial support for geometries
9
+ with M or ZM values, functionality for coverage validation and
10
+ simplification, and a set of new top-level functions.
11
+
12
+ Shapely supports Python >= 3.10, and binary wheels on PyPI include GEOS 3.13.1
13
+ and are now also provided for musllinux (Alpine) x86_64 platforms.
14
+
15
+ For a full changelog, see
16
+ https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-1-0
17
+
18
+
4
19
  2.0.7 (2025-01-30)
5
20
  ------------------
6
21
 
@@ -46,6 +61,7 @@ Bug fixes:
46
61
  - Fix bug in ``to_wkt`` with multiple empty Z geometries (#2012).
47
62
  - Fix bug in ``to_ragged_array`` for an array of Points with missing values (#2034).
48
63
 
64
+
49
65
  2.0.3 (2024-02-16)
50
66
  ------------------
51
67
 
@@ -55,6 +71,7 @@ Bug fixes:
55
71
  therefore a ``numpy<2`` upper pin was added to the requirements (#1972).
56
72
  - Upgraded the GEOS version in the binary wheel distributions to 3.11.3.
57
73
 
74
+
58
75
  2.0.2 (2023-10-12)
59
76
  ------------------
60
77
 
@@ -66,11 +83,16 @@ Bug fixes:
66
83
  - Fix ``minimum_rotated_rectangle`` (``oriented_envelope``) to always return
67
84
  the minimum area solution (instead of minimum width). In practice, it will use the
68
85
  GEOS implementation only for GEOS 3.12+, and for older GEOS versions fall back to the
69
- implementation that was included in Shapely < 2.
86
+ implementation that was included in Shapely < 2 (#1670).
87
+ - Fix ``from_ragged_array`` to work with read-only array input (#1744).
88
+ - Fix the handling of z coordinates ``shapely.ops.substring`` (#1699).
70
89
 
71
90
  Wheels are available for Python 3.12 (and still include GEOS 3.11.2). Building
72
91
  from source is now compatible with Cython 3.
73
92
 
93
+ For a full changelog, see
94
+ https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-2
95
+
74
96
  2.0.1 (2023-01-30)
75
97
  ------------------
76
98
 
@@ -91,12 +113,13 @@ Improvements:
91
113
  For a full changelog, see
92
114
  https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-1
93
115
 
116
+
94
117
  2.0.0 (2022-12-12)
95
118
  ------------------
96
119
 
97
120
  Shapely version 2.0.0 is a major release featuring a complete refactor of the
98
121
  internals and new vectorized (element-wise) array operations providing
99
- considerable performance improvements.
122
+ considerable performance improvements.
100
123
 
101
124
  For a full changelog, see
102
125
  https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-0
@@ -2,8 +2,8 @@ cff-version: 1.2.0
2
2
  message: "Please cite this software using these metadata."
3
3
  type: software
4
4
  title: Shapely
5
- version: "2.0.7"
6
- date-released: "2025-01-30"
5
+ version: "2.1.0"
6
+ date-released: "2025-04-03"
7
7
  doi: 10.5281/zenodo.5597138
8
8
  abstract: "Manipulation and analysis of geometric objects in the Cartesian plane."
9
9
  repository-artifact: https://pypi.org/project/Shapely
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: shapely
3
- Version: 2.0.7
3
+ Version: 2.1.0
4
4
  Summary: Manipulation and analysis of geometric objects
5
5
  Author: Sean Gillies
6
6
  Maintainer: Shapely contributors
@@ -16,27 +16,26 @@ 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"
37
35
  Requires-Dist: sphinx; extra == "docs"
38
36
  Requires-Dist: sphinx-book-theme; extra == "docs"
39
37
  Requires-Dist: sphinx-remove-toctrees; extra == "docs"
38
+ Dynamic: license-file
40
39
 
41
40
  =======
42
41
  Shapely
@@ -143,11 +142,11 @@ See the documentation for more examples and guidance: https://shapely.readthedoc
143
142
  Requirements
144
143
  ============
145
144
 
146
- Shapely 2.0 requires
145
+ Shapely 2.1 requires
147
146
 
148
- * Python >=3.7
149
- * GEOS >=3.5
150
- * NumPy >=1.14
147
+ * Python >=3.10
148
+ * GEOS >=3.9
149
+ * NumPy >=1.21
151
150
 
152
151
  Installing Shapely
153
152
  ==================
@@ -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,13 @@
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 %}
12
+ coverage_union
13
+ coverage_union_all
@@ -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
-