-
Notifications
You must be signed in to change notification settings - Fork 568
/
CHANGES.txt
458 lines (324 loc) · 16 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
Changes
=======
2.1.0 (unreleased)
------------------
Bug fixes:
- Prevent crash when serializing a number > 1e100 to WKT with GEOS < 3.13. (#1907)
- Fixes GeoJSON serialization of empty points (#2118)
- Fixes `__geo_interface__` handling of empty points (#2120)
- Fixes crash when reading nonlinear geometry types (CircularString,
CompoundCurve, MultiCurve, CurvePolygon, MultiSurface) from WKB/WKT with
GEOS >= 3.13; these types are not yet supported in Shapely and now raise a
``NotImplementedError`` (#2160)
Improvements:
- Require GEOS >= 3.9, NumPy >= 1.20, and Python >= 3.9 (#1802, #1885, #2124)
- Handle ``Feature`` type in ``shapely.geometry.shape`` (#1815)
- Add a ``handle_nan`` parameter to ``shapely.linestrings()`` and ``shapely.linearrings()``
to allow, skip, or error on nonfinite (NaN / Inf) coordinates. The default
behaviour (allow) is backwards compatible (#1594).
- Add an ``interleaved`` parameter to ``shapely.transform()`` allowing a transposed call
signature in the ``transformation`` function.
- The ``include_z`` in ``shapely.transform()`` now also allows ``None``, which
lets it automatically detect the dimensionality of each input geometry.
- Add parameters ``method`` and ``keep_collapsed`` to ``shapely.make_valid()`` (#1941)
- Upgraded the GEOS version in the binary wheel distributions to 3.12.1.
- Add ``disjoint_subset_union`` and ``disjoint_subset_union_all`` as an optimized
version of union and union_all, assuming inputs can be divided into subsets that do
not intersect. Requires at least GEOS 3.12.
- The ``voronoi_polygons`` now accepts the ``ordered`` keyword, optionally forcing the
order of polygons within the GeometryCollection to follow the order of input
coordinates. Requires at least GEOS 3.12. (#1968)
- Add option on ``invalid="fix"`` to ``from_wkb`` and ``from_wkt`` (#2094)
- Add function ``minimum_clearance_line`` (#2106)
- Add function ``maximum_inscribed_circle`` (#1307)
Breaking changes in GEOS 3.12:
- ``oriented_envelope`` / ``minimum_rotated_rectangle`` changed its implementation
in GEOS 3.12. Be aware that results will change when updating GEOS. Coincidentally
the implementation is similar to the shapely 1.x approach. (#1885)
- ``get_coordinate_dimension`` / ``has_z`` now considers geometries three dimensional if
they have a NaN z coordinate. (#1885)
- ``voronoi_polygons`` changed its output from a LINESTRING to a MULTILINESTRING in case
``only_edges=True``. (#1885)
- The WKT representation of a MULTIPOINT changed from for example "MULTIPOINT (0 0, 1 1)"
to "MULTIPOINT ((0 0), (1 1))". (#1885)
Deprecations:
- The ``shapely.geos`` module is deprecated. All GEOS-version related attributes are
available directly from the top-level ``shapely`` namespace as well (already since
shapely 2.0) (#2145).
- The ``shapely.vectorized`` module is deprecated. The two functions (``contains and
``touches``) can be replaced by the top-level vectorized functions ``contains_xy``
and ``intersects_xy`` (#1630).
Packaging:
- Binary wheels are now built for musllinux (Alpine) x86_64 platforms (#1996).
2.0.6 (2024-08-19)
------------------
Bug fixes:
- Fix compatibility with NumPy 2.1.0 (#2099).
Wheels are available for Python 3.13 (and still include GEOS 3.11.4).
2.0.5 (2024-07-13)
------------------
Binary wheels on PyPI include GEOS 3.11.4 from 2024-06-05. Furthermore,
universal2 wheels are removed for macOS since both x86_64 and arm64 wheels are
provided.
Bug fixes:
- Fix Point x/y/z attributes to return Python floats (#2074).
- Fix affinity for Apple silicon with NumPy 2.0 by reverting matmul, and
use direct matrix multiplication instead (#2085).
2.0.4 (2024-04-16)
------------------
Wheels for Python versions >= 3.9 will be compatible with the upcoming NumPy 2.0
release (as well as with supported NumPy 1.x versions).
Bug fixes:
- Fix bug in ``to_wkt`` with multiple empty Z geometries (#2012).
- Fix bug in ``to_ragged_array`` for an array of Points with missing values (#2034).
2.0.3 (2024-02-16)
------------------
- Fix regression in the ``oriented_envelope`` ufunc to accept array-like input
in case of GEOS<3.12 (#1929).
- The binary wheels are not yet compatible with a future NumPy 2.0 release,
therefore a ``numpy<2`` upper pin was added to the requirements (#1972).
- Upgraded the GEOS version in the binary wheel distributions to 3.11.3.
2.0.2 (2023-10-12)
------------------
Bug fixes:
- Fix regression in the (in)equality comparison (``geom1 == geom2``) using ``__eq__`` to
not ignore the z-coordinates (#1732).
- Fix ``MultiPolygon()`` constructor to accept polygons without holes (#1850).
- Fix ``minimum_rotated_rectangle`` (``oriented_envelope``) to always return
the minimum area solution (instead of minimum width). In practice, it will use the
GEOS implementation only for GEOS 3.12+, and for older GEOS versions fall back to the
implementation that was included in Shapely < 2 (#1670).
- Fix ``from_ragged_array`` to work with read-only array input (#1744).
- Fix the handling of z coordinates ``shapely.ops.substring`` (#1699).
Wheels are available for Python 3.12 (and still include GEOS 3.11.2). Building
from source is now compatible with Cython 3.
For a full changelog, see
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-2
2.0.1 (2023-01-30)
------------------
Bug fixes:
- Fix regression in the ``Polygon()`` constructor taking a sequence of Points (#1662).
- Fix regression in the geometry constructors when passing ``decimal.Decimal``
coordinate values (#1707).
- Fix ``STRtree()`` to not make the passed geometry array immutable as side-effect of
the constructor (#1714).
- Fix the ``directed`` keyword in ``shapely.ops.linemerge()`` (#1695).
Improvements:
- Expose the function to get a matplotlib Patch object from a (Multi)Polygon (without
already plotting it) publicly as :func:`shapely.plotting.patch_from_polygon` (#1704).
For a full changelog, see
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-1
2.0.0 (2022-12-12)
------------------
Shapely version 2.0.0 is a major release featuring a complete refactor of the
internals and new vectorized (element-wise) array operations providing
considerable performance improvements.
For a full changelog, see
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-0
Relevant changes in behaviour compared to 2.0rc3:
- Added temporary support for unpickling shapely<2.0 geometries.
2.0rc1 (2022-11-26)
-------------------
Relevant changes in behaviour compared to 2.0b2:
- The ``Point(..)`` constructor no longer accepts a sequence of coordinates
consisting of more than one coordinate pair (previously, subsequent
coordinates were ignored) (#1600).
- Fix performance regression in the ``LineString()`` constructor when passing
a numpy array of coordinates (#1602).
Wheels for 2.0rc1 published on PyPI include GEOS 3.11.1.
2.0b2 (2022-10-29)
------------------
Relevant changes in behaviour compared to 2.0b1:
- Fix for compatibility with PyPy (#1577).
- Fix to the ``Point()`` constructor to accept arrays of length 1 for the x and y
coordinates (fix compatibility with Shapely 1.8).
- Raise ValueError for non-finite distance in the ``buffer()`` and ``offset_curve()``
methods on the Geometry classes (consistent with Shapely 1.8).
2.0b1 (2022-10-17)
------------------
Relevant changes in behaviour compared to 2.0a1:
- Renamed the ``tolerance`` keyword to ``max_segment_length`` in the
``segmentize`` function.
- Renamed the ``quadsegs`` keyword in the top-level ``buffer`` and
``offset_curve`` functions and the ``resolution`` keyword in the Geometry
class ``buffer`` and ``offset_curve`` methods all to ``quad_segs``.
- Added use of ``GEOSGeom_getExtent`` to speed up bounds calculations for
GEOS >= 3.11.
- Restored the behaviour of ``unary_union`` to return an empty GeometryCollection
for an empty or all-None sequence as input (and the same for ``intersection_all``
and ``symmetric_difference_all``).
- Fixed the Geometry objects to be weakref-able again (#1535).
- The ``.type`` attribute is deprecated, use ``.geom_type`` instead (which
already existed before as well) (#1492).
Wheels for 2.0b1 published on PyPI include GEOS 3.11.0.
2.0a1 (2022-08-03)
------------------
Shapely version 2.0 alpha 1 is the first of a major release featuring a
complete refactor of the internals and new vectorized (element-wise) array
operations providing considerable performance improvements. For a full
changelog, see https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-0
Wheels for 2.0a1 published on PyPI include GEOS 3.10.3.
1.8.5.post1 (2022-10-13)
------------------------
Packaging:
Wheels are provided for Python versions 3.6-3.11 and Cython 0.29.32 is used to
generate C extension module code.
1.8.5 (2022-10-12)
------------------
Packaging:
Python 3.11 wheels have been added to the matrix for all platforms.
Bug fixes:
- Assign _lgeos in the macos frozen app check, fixing a bug introduced in 1.8.2
(#1528).
- An exception is now raised when nan is passed to buffer and parallel_offset,
preventing segmentation faults (#1516).
1.8.4 (2022-08-17)
------------------
Bug fixes:
- The new c_geom_p type caused a regression and has been removed (#1487).
1.8.3 (2022-08-16)
------------------
Deprecations:
The STRtree class will be changed in 2.0.0 and will not be compatible with the
class in versions 1.8.x. This change obsoletes the deprecation announcement in
1.8a3 (below).
Packaging:
Wheels for 1.8.3 published on PyPI include GEOS 3.10.3.
Bug fixes:
- The signature for GEOSMinimumClearance has been corrected, fixing an issue
affecting aarch64-darwin (#1480)
- Return and arg types have been corrected and made more strict for area,
length, and distance properties.
- A new c_geom_p type has been created to replace c_void_p when calling GEOS
functions (#1479).
- An incorrect polygon-line intersection (#1427) has been fixed in GEOS 3.10.3,
which will be included in wheels published to PyPI.
- GEOS buffer parameters are now destroyed, fixing a memory leak (#1440).
1.8.2 (2022-05-03)
------------------
- Make Polygons and MultiPolygons closed by definition, like LinearRings.
Resolves #1246.
- Perform frozen app check for GEOS before conda env check on macos as we
already do on linux (#1301).
- Fix leak of GEOS coordinate sequence in nearest_points reported in #1098.
1.8.1.post1 (2022-02-17)
------------------------
This post-release addresses a defect in the 1.8.1 source distribution. No .c
files are included in the 1.8.1.post1 sdist and Cython is required to build and
install from source.
1.8.1 (2022-02-16)
------------------
Packaging:
Wheels for 1.8.1 published on PyPI include GEOS 3.10.2. This version is the
best version of GEOS yet. Discrepancies in behavior compared to previous
versions are considered to be improvements.
For the first time, we will publish wheels for macos_arm64 (see PR #1310).
Python version support:
Shapely 1.8.1 works with Pythons 3.6-3.10.
Bug fixes:
- Require Cython >= 0.29.24 to support Python 3.10 (#1224).
- Fix array_interface_base (#1235).
1.8.0 (2021-10-25)
------------------
This is the final 1.8.0 release. There have been no changes since 1.8rc2.
1.8rc2 (2021-10-19)
-------------------
Build:
A pyproject.toml file has been added to specify build dependencies for the
_vectorized and _speedups modules (#1128). To install shapely without these
build dependencies, use the features of your build tool that disable PEP 517
and 518 support.
Bug fixes:
- Part of PR #1042, which added a new primary GEOS library name to be searched
for, has been reverted by PR #1201.
1.8rc1 (2021-10-04)
-------------------
Deprecations:
The almost_exact() method of BaseGeometry has been deprecated. It is confusing
and will be removed in 2.0.0. The equals_exact() method is to be used instead.
Bug fixes:
- We ensure that the _speedups module is always imported before _vectorized to
avoid an unexplained condition on Windows with Python 3.8 and 3.9 (#1184).
1.8a3 (2021-08-24)
------------------
Deprecations:
The STRtree class deprecation warnings have been removed. The class in 2.0.0
will be backwards compatible with the class in 1.8.0.
Bug fixes:
- The __array_interface__ raises only AttributeError, all other exceptions are
deprecated starting with Numpy 1.21 (#1173).
- The STRtree class now uses a pair of item, geom sequences internally instead
of a dict (#1177).
1.8a2 (2021-07-15)
------------------
Python version support:
Shapely 1.8 will support only Python versions >= 3.6.
New features:
- The STRtree nearest*() methods now take an optional argument that
specifies exclusion of the input geometry from results (#1115).
- A GeometryTypeError has been added to shapely.errors and is consistently
raised instead of TypeError or ValueError as in version 1.7. For backwards
compatibility, the new exception will derive from TypeError and Value error
until version 2.0 (#1099).
- The STRtree class constructor now takes an optional second argument, a
sequence of objects to be stored in the tree. If not provided, the sequence
indices of the geometries will be stored, as before (#1112).
- The STRtree class has new query_geoms(), query_items(), nearest_geom(), and
nearest_item() methods (#1112). The query() and nearest() methods remain as
aliases for query_geoms() and nearest_geom().
Bug fixes:
- We no longer attempt to load libc to get the free function on Linux, but get
it from the global symbol table.
- GEOS error messages printed when GEOS_getCoordSeq() is passed an empty
geometry are avoided by never passing an empty geometry (#1134).
- Python's builtin super() is now used only as described in PEP 3135 (#1109).
- Only load conda GEOS dll if it exists (on Windows) (#1108).
- Add /opt/homebrew/lib to the list of directories to be searched for the GEOS
shared library.
- Added new library search path to assist app creation with cx_Freeze.
1.8a1 (2021-03-03)
------------------
Shapely 1.8.0 will be a transitional version. There are a few bug fixes and new
features, but it is mainly about warning of the upcoming changes in 2.0.0.
Several more pre-releases before 1.8.0 are expected. See the migration guide
to Shapely 1.8 / 2.0 for more details on how to update your code
(https://shapely.readthedocs.io/en/latest/migration.html).
Python version support:
Shapely 1.8 will support only Python versions >= 3.5 (#884).
Deprecations:
The following functions and geometry attributes and methods will be removed in
version 2.0.0.
- ops.cascaded_union
- geometry .empty()
- geometry .ctypes and .__array_interface__
- multi-part geometry .__len__
- setting custom attributes on geometry objects
Geometry objects will become immutable in version 2.0.0.
The STRtree class will be entirely changed in 2.0.0. The exact future API is
not yet decided, but will be decided before 1.8.0 is released.
Deprecation warnings will be emitted in 1.8a1 when any of these features are
used.
The deprecated .to_wkb() and .to_wkt() methods on the geometry objects have
been removed.
New features:
- Add a normalize() method to geometry classes, exposing the GEOSNormalize
algorithm (#1090).
- Initialize STRtree with a capacity of 10 items per node (#1070).
- Load libraries relocated to shapely/.libs by auditwheel versions < 3.1 or
relocated to Shapely.libs by auditwheel versions >= 3.1.
- shapely.ops.voronoi_diagram() computes the Voronoi Diagram of a geometry or
geometry collection (#833, #851).
- shapely.validation.make_valid() fixes invalid geometries (#883)
Bug fixes:
- For pyinstaller we now handle the case of more than one GEOS library in the
environment, such as when fiona and rasterio wheels are co-installed with
shapely (#1071).
- The ops.split function now splits on touch to eliminate confusing
discrepancies between results using multi and single part splitters (#1034).
- Several issues with duplication and order of vertices in ops.substring have
been fixed (#1008).
Packaging:
- The wheels uploaded to PyPI will include GEOS 3.9.1.
Previous releases
-----------------
For older releases in the 1.x line, see https://shapely.readthedocs.io/en/latest/release/1.x.html