Changes ======= 1.7.1 (2020-08-20) ------------------ - ``STRtree`` now safely implements the pickle protocol (#915). - Documentation has been added for ``minimum_clearance`` (#875, #874). - In ``STRtree.__del__()`` we guard against calling ``GEOSSTRtree_destroy`` when the lgeos module has already been torn down on exit (#897, #830). - Documentation for the ``overlaps()`` method has been corrected (#920). - Correct the test in ``shapely.geometry.base.BaseGeometry.empty()`` to eliminate memory leaks like the one reported in #745. - Get free() not from libc but from the processes global symbols (#891), fixing a bug that manifests on OS X 10.15 and 10.16. - Extracting substrings from complex lines has been made more correct (#848, #849). - Splitting of complex geometries has been sped up by preparing the input geometry (#871). - Fix bug in concatenation of function argtypes (#866). - Improved documentation of STRtree usage (#857). - Improved handling for empty list or list of lists in GeoJSON coordinates (#852). - The polylabel algorithm now accounts for polygon holes (#851, #817). 1.7.0 (2020-01-28) ------------------ This is the final 1.7.0 release. There have been no changes since 1.7b1. 1.7b1 (2020-01-13) ------------------ First beta release. 1.7a3 (2019-12-31) ------------------ New features: - The buffer operation can now be single-sides (#806, #727). Bug fixes: - Add /usr/local/lib to the list of directories to be searched for the GEOS shared library (#795). - ops.substring now returns a line with coords in end-to-front order when given a start position that is greater than the end position (#628). - Implement ``__bool__()`` for geometry base classes so that ``bool(geom)`` returns the logical complement of ``geom.is_empty`` (#754). - Remove assertion on the number of version-like strings found in the GEOS version string. It could be 2 or 3. 1.7a2 (2019-06-21) ------------------ - Nearest neighbor search has been added to STRtree (#668). - Disallow sequences of MultiPolygons as arguments to the MultiPolygon constructor, resolving #588. - Removed vendorized `functools` functions previously used to support Python 2.5. Bug fixes: - Avoid reloading the GEOS shared library when using an installed binary wheel on OS X (#735), resolving issue #553. - The shapely.ops.orient function can now orient multi polygons and geometry collections as well as polygons (#733). - Polygons can now be constructed from sequences of point objects as well as sequences of x, y sequences (#732). - The exterior of an empty polygon is now equal to an empty linear ring (#731). - The bounds property of an empty point object now returns an empty tuple, consistent with other geometry types (#723). - Segmentation faults when non-string values are passed to the WKT loader are avoided by #700. - Failure of ops.substring when the sub linestring coincides with the beginning of the linestring has been fixed (#658). - Segmentation faults from interpolating on an empty linestring are prevented by #655. - A missing special case for rectangular polygons has been added to the polylabel algorithm (#644). - LinearRing can be created from a LineString (#638). - The prepared geoemtry validation condition has been tightened in #632 to fix the bug reported in #631. - Attempting to interpolate an empty geometry no longer results in a segmentation fault, raising `ValueError` instead (#653). 1.7a1 (2018-07-29) ------------------ New features: - A Python version check is made by the package setup script. Shapely 1.7 supports only Python versions 2.7 and 3.4+ (#610). - Added a new `EmptyGeometry` class to support GeoPandas (#514). - Added new `shapely.ops.substring` function (#459). - Added new `shapely.ops.clip_by_rect` function (#583). - Use DLLs indicated in sys._MEIPASS' to support PyInstaller frozen apps (#523). - `shapely.wkb.dumps` now accepts an `srid` integer keyword argument to write WKB data including a spatial reference ID in the output data (#593). Bug fixes: - `shapely.geometry.shape` can now marshal empty GeoJSON representations (#573). - An exception is raised when an attempt is made to `prepare` a `PreparedGeometry` (#577, #595). - Keyword arguments have been removed from a geometry object's `wkt` property getter (#581, #594). 1.6.4.post1 (2018-01-24) ------------------------ - Fix broken markup in this change log, which restores our nicely formatted readme on PyPI. 1.6.4 (2018-01-24) ------------------ - Handle a ``TypeError`` that can occur when geometries are torn down (#473, #528). 1.6.3 (2017-12-09) ------------------ - AttributeError is no longer raised when accessing __geo_interface__ of an empty polygon (#450). - ``asShape`` now handles empty coordinates in mappings as ``shape`` does (#542). Please note that ``asShape`` is likely to be deprecated in a future version of Shapely. - Check for length of LineString coordinates in speed mode, preventing crashes when using LineStrings with only one coordinate (#546). 1.6.2 (2017-10-30) ------------------ - A 1.6.2.post1 release has been made to fix a problem with macosx wheels uploaded to PyPI. 1.6.2 (2017-10-26) ------------------ - Splitting a linestring by one of its end points will now succeed instead of failing with a ``ValueError`` (#524, #533). - Missing documentation of a geometry's ``overlaps`` predicate has been added (#522). 1.6.1 (2017-09-01) ------------------ - Avoid ``STRTree`` crashes due to dangling references (#505) by maintaining references to added geometries. - Reduce log level to debug when reporting on calls to ctypes ``CDLL()`` that don't succeed and are retried (#515). - Clarification: applications like GeoPandas that need an empty geometry object should use ``BaseGeometry()`` instead of ``Point()`` or ``Polygon()``. An ``EmptyGeometry`` class has been added in the master development branch and will be available in the next non-bugfix release. 1.6.0 (2017-08-21) ------------------ Shapely 1.6.0 adds new attributes to existing geometry classes and new functions (``split()`` and ``polylabel()``) to the shapely.ops module. Exceptions are consolidated in a shapely.errors module and logging practices have been improved. Shapely's optional features depending on Numpy are now gathered into a requirements set named "vectorized" and these may be installed like ``pip install shapely[vectorized]``. Much of the work on 1.6.0 was aimed to improve the project's build and packaging scripts and to minimize run-time dependencies. Shapely now vendorizes packaging to use during builds only and never again invokes the geos-config utility at run-time. In addition to the changes listed under the alpha and beta pre-releases below, the following change has been made to the project: - Project documentation is now hosted at https://shapely.readthedocs.io/en/latest/. Thank you all for using, promoting, and contributing to the Shapely project. 1.6b5 (2017-08-18) ------------------ Bug fixes: - Passing a single coordinate to ``LineString()`` with speedups disabled now raises a ValueError as happens with speedups enabled. This resolves #509. 1.6b4 (2017-02-15) ------------------ Bug fixes: - Isolate vendorized packaging in a _vendor directory, remove obsolete dist-info, and remove packaging from project requirements (resolves #468). 1.6b3 (2016-12-31) ------------------ Bug fixes: - Level for log messages originating from the GEOS notice handler reduced from WARNING to INFO (#447). - Permit speedups to be imported again without Numpy (#444). 1.6b2 (2016-12-12) ------------------ New features: - Add support for GeometryCollection to shape and asShape functions (#422). 1.6b1 (2016-12-12) ------------------ Bug fixes: - Implemented __array_interface__ for empty Points and LineStrings (#403). 1.6a3 (2016-12-01) ------------------ Bug fixes: - Remove accidental hard requirement of Numpy (#431). Packaging: - Put Numpy in an optional requirement set named "vectorized" (#431). 1.6a2 (2016-11-09) ------------------ Bug fixes: - Shapely no longer configures logging in ``geos.py`` (#415). Refactoring: - Consolidation of exceptions in ``shapely.errors``. - ``UnsupportedGEOSVersionError`` is raised when GEOS < 3.3.0 (#407). Packaging: - Added new library search paths to assist Anaconda (#413). - geos-config will now be bypassed when NO_GEOS_CONFIG env var is set. This allows configuration of Shapely builds on Linux systems that for whatever reasons do not include the geos-config program (#322). 1.6a1 (2016-09-14) ------------------ New features: - A new error derived from NotImplementedError, with a more useful message, is raised when the GEOS backend doesn't support a called method (#216). - The ``project()`` method of LineString has been extended to LinearRing geometries (#286). - A new ``minimum_rotated_rectangle`` attribute has been added to the base geometry class (#354). - A new ``shapely.ops.polylabel()`` function has been added. It computes a point suited for labeling concave polygons (#395). - A new ``shapely.ops.split()`` function has been added. It splits a geometry by another geometry of lesser dimension: polygon by line, line by point (#293, #371). - ``Polygon.from_bounds()`` constructs a Polygon from bounding coordinates (#392). - Support for testing with Numpy 1.4.1 has been added (#301). - Support creating all kinds of empty geometries from empty lists of Python objects (#397, #404). Refactoring: - Switch from ``SingleSidedBuffer()`` to ``OffsetCurve()`` for GEOS >= 3.3 (#270). - Cython speedups are now enabled by default (#252). Packaging: - Packaging 16.7, a setup dependency, is vendorized (#314). - Infrastructure for building manylinux1 wheels has been added (#391). - The system's ``geos-config`` program is now only checked when ``setup.py`` is executed, never during normal use of the module (#244). - Added new library search paths to assist PyInstaller (#382) and Windows (#343). 1.5.17 (2016-08-31) ------------------- - Bug fix: eliminate memory leak in geom_factory() (#408). - Bug fix: remove mention of negative distances in parallel_offset and note that vertices of right hand offset lines are reversed (#284). 1.5.16 (2016-05-26) ------------------- - Bug fix: eliminate memory leak when unpickling geometry objects (#384, #385). - Bug fix: prevent crashes when attempting to pickle a prepared geometry, raising ``PicklingError`` instead (#386). - Packaging: extension modules in the OS X wheels uploaded to PyPI link only libgeos_c.dylib now (you can verify and compare to previous releases with ``otool -L shapely/vectorized/_vectorized.so``). 1.5.15 (2016-03-29) ------------------- - Bug fix: use uintptr_t to store pointers instead of long in _geos.pxi, preventing an overflow error (#372, #373). Note that this bug fix was erroneously reported to have been made in 1.5.14, but was not. 1.5.14 (2016-03-27) ------------------- - Bug fix: use ``type()`` instead of ``isinstance()`` when evaluating geometry equality, preventing instances of base and derived classes from being mistaken for equals (#317). - Bug fix: ensure that empty geometries are created when constructors have no args (#332, #333). - Bug fix: support app "freezing" better on Windows by not relying on the ``__file__`` attribute (#342, #377). - Bug fix: ensure that empty polygons evaluate to be ``==`` (#355). - Bug fix: filter out empty geometries that can cause segfaults when creating and loading STRtrees (#345, #348). - Bug fix: no longer attempt to reuse GEOS DLLs already loaded by Rasterio or Fiona on OS X (#374, #375). 1.5.13 (2015-10-09) ------------------- - Restore setup and runtime discovery and loading of GEOS shared library to state at version 1.5.9 (#326). - On OS X we try to reuse any GEOS shared library that may have been loaded via import of Fiona or Rasterio in order to avoid a bug involving the GEOS AbstractSTRtree (#324, #327). 1.5.12 (2015-08-27) ------------------- - Remove configuration of root logger from libgeos.py (#312). - Skip test_fallbacks on Windows (#308). - Call setlocale(locale.LC_ALL, "") instead of resetlocale() on Windows when tearing down the locale test (#308). - Fix for Sphinx warnings (#309). - Addition of .cache, .idea, .pyd, .pdb to .gitignore (#310). 1.5.11 (2015-08-23) ------------------- - Remove packaging module requirement added in 1.5.10 (#305). Distutils can't parse versions using 'rc', but if we stick to 'a' and 'b' we will be fine. 1.5.10 (2015-08-22) ------------------- - Monkey patch affinity module by absolute reference (#299). - Raise TopologicalError in relate() instead of crashing (#294, #295, #303). 1.5.9 (2015-05-27) ------------------ - Fix for 64 bit speedups compatibility (#274). 1.5.8 (2015-04-29) ------------------ - Setup file encoding bug fix (#254). - Support for pyinstaller (#261). - Major prepared geometry operation fix for Windows (#268, #269). - Major fix for OS X binary wheel (#262). 1.5.7 (2015-03-16) ------------------ - Test and fix buggy error and notice handlers (#249). 1.5.6 (2015-02-02) ------------------ - Fix setup regression (#232, #234). - SVG representation improvements (#233, #237). 1.5.5 (2015-01-20) ------------------ - MANIFEST changes to restore _geox.pxi (#231). 1.5.4 (2015-01-19) ------------------ - Fixed OS X binary wheel library load path (#224). 1.5.3 (2015-01-12) ------------------ - Fixed ownership and potential memory leak in polygonize (#223). - Wider release of binary wheels for OS X. 1.5.2 (2015-01-04) ------------------ - Fail installation if GEOS dependency is not met, preventing update breakage (#218, #219). 1.5.1 (2014-12-04) ------------------ - Restore geometry hashing (#209). 1.5.0 (2014-12-02) ------------------ - Affine transformation speedups (#197). - New `==` rich comparison (#195). - Geometry collection constructor (#200). - ops.snap() backed by GEOSSnap (#201). - Clearer exceptions in cases of topological invalidity (#203). 1.4.4 (2014-11-02) ------------------ - Proper conversion of numpy float32 vals to coords (#186). 1.4.3 (2014-10-01) ------------------ - Fix for endianness bug in WKB writer (#174). 1.4.2 (2014-09-29) ------------------ - Fix bungled 1.4.1 release (#176). 1.4.1 (2014-09-23) ------------------ - Return of support for GEOS 3.2 (#176, #178). 1.4.0 (2014-09-08) ------------------ - SVG representations for IPython's inline image protocol. - Efficient and fast vectorized contains(). - Change mitre_limit default to 5.0; raise ValueError with 0.0 (#139). - Allow mix of tuples and Points in sped-up LineString ctor (#152). - New STRtree class (#73). - Add ops.nearest_points() (#147). - Faster creation of geometric objects from others (cloning) (#165). - Removal of tests from package. 1.3.3 (2014-07-23) ------------------ - Allow single-part geometries as argument to ops.cacaded_union() (#135). - Support affine transformations of LinearRings (#112). 1.3.2 (2014-05-13) ------------------ - Let LineString() take a sequence of Points (#130). 1.3.1 (2014-04-22) ------------------ - More reliable proxy cleanup on exit (#106). - More robust DLL loading on all platforms (#114). 1.3.0 (2013-12-31) ------------------ - Include support for Python 3.2 and 3.3 (#56), minimum version is now 2.6. - Switch to GEOS WKT/WKB Reader/Writer API, with defaults changed to enable 3D output dimensions, and to 'trim' WKT output for GEOS >=3.3.0. - Use GEOS version instead of GEOS C API version to determine library capabilities (#65). 1.2.19 (2013-12-30) ------------------- - Add buffering style options (#55). 1.2.18 (2013-07-23) -------------------- - Add shapely.ops.transform. - Permit empty sequences in collection constructors (#49, #50). - Individual polygons in MultiPolygon.__geo_interface__ are changed to tuples to match Polygon.__geo_interface__ (#51). - Add shapely.ops.polygonize_full (#57). 1.2.17 (2013-01-27) ------------------- - Avoid circular import between wkt/wkb and geometry.base by moving calls to GEOS serializers to the latter module. - Set _ndim when unpickling (issue #6). - Don't install DLLs to Python's DLL directory (#37). - Add affinity module of affine transformation (#31). - Fix NameError that blocked installation with PyPy (#40, #41). 1.2.16 (2012-09-18) ------------------- - Add ops.unary_union function. - Alias ops.cascaded_union to ops.unary_union when GEOS CAPI >= (1,7,0). - Add geos_version_string attribute to shapely.geos. - Ensure parent is set when child geometry is accessed. - Generate _speedups.c using Cython when building from repo when missing, stale, or the build target is "sdist". - The is_simple predicate of invalid, self-intersecting linear rings now returns ``False``. - Remove VERSION.txt from repo, it's now written by the distutils setup script with value of shapely.__version__. 1.2.15 (2012-06-27) ------------------- - Eliminate numerical sensitivity in a method chaining test (Debian bug #663210). - Account for cascaded union of random buffered test points being a polygon or multipolygon (Debian bug #666655). - Use Cython to build speedups if it is installed. - Avoid stumbling over SVN revision numbers in GEOS C API version strings. 1.2.14 (2012-01-23) ------------------- - A geometry's coords property is now sliceable, yielding a list of coordinate values. - Homogeneous collections are now sliceable, yielding a new collection of the same type. 1.2.13 (2011-09-16) ------------------- - Fixed errors in speedups on 32bit systems when GEOS references memory above 2GB. - Add shapely.__version__ attribute. - Update the manual. 1.2.12 (2011-08-15) ------------------- - Build Windows distributions with VC7 or VC9 as appropriate. - More verbose report on failure to speed up. - Fix for prepared geometries broken in 1.2.11. - DO NOT INSTALL 1.2.11 1.2.11 (2011-08-04) ------------------- - Ignore AttributeError during exit. - PyPy 1.5 support. - Prevent operation on prepared geometry crasher (#12). - Optional Cython speedups for Windows. - Linux 3 platform support. 1.2.10 (2011-05-09) ------------------- - Add optional Cython speedups. - Add is_cww predicate to LinearRing. - Add function that forces orientation of Polygons. - Disable build of speedups on Windows pending packaging work. 1.2.9 (2011-03-31) ------------------ - Remove extra glob import. - Move examples to shapely.examples. - Add box() constructor for rectangular polygons. - Fix extraneous imports. 1.2.8 (2011-12-03) ------------------ - New parallel_offset method (#6). - Support for Python 2.4. 1.2.7 (2010-11-05) ------------------ - Support for Windows eggs. 1.2.6 (2010-10-21) ------------------ - The geoms property of an empty collection yields [] instead of a ValueError (#3). - The coords and geometry type sproperties have the same behavior as above. - Ensure that z values carry through into products of operations (#4). 1.2.5 (2010-09-19) ------------------ - Stop distributing docs/_build. - Include library fallbacks in test_dlls.py for linux platform. 1.2.4 (2010-09-09) ------------------ - Raise AttributeError when there's no backend support for a method. - Raise OSError if libgeos_c.so (or variants) can't be found and loaded. - Add geos_c DLL loading support for linux platforms where find_library doesn't work. 1.2.3 (2010-08-17) ------------------ - Add mapping function. - Fix problem with GEOSisValidReason symbol for GEOS < 3.1. 1.2.2 (2010-07-23) ------------------ - Add representative_point method. 1.2.1 (2010-06-23) ------------------ - Fixed bounds of singular polygons. - Added shapely.validation.explain_validity function (#226). 1.2 (2010-05-27) ---------------- - Final release. 1.2rc2 (2010-05-26) ------------------- - Add examples and tests to MANIFEST.in. - Release candidate 2. 1.2rc1 (2010-05-25) ------------------- - Release candidate. 1.2b7 (2010-04-22) ------------------ - Memory leak associated with new empty geometry state fixed. 1.2b6 (2010-04-13) ------------------ - Broken GeometryCollection fixed. 1.2b5 (2010-04-09) ------------------ - Objects can be constructed from others of the same type, thereby making copies. Collections can be constructed from sequences of objects, also making copies. - Collections are now iterators over their component objects. - New code for manual figures, using the descartes package. 1.2b4 (2010-03-19) ------------------ - Adds support for the "sunos5" platform. 1.2b3 (2010-02-28) ------------------ - Only provide simplification implementations for GEOS C API >= 1.5. 1.2b2 (2010-02-19) ------------------ - Fix cascaded_union bug introduced in 1.2b1 (#212). 1.2b1 (2010-02-18) ------------------ - Update the README. Remove cruft from setup.py. Add some version 1.2 metadata regarding required Python version (>=2.5,<3) and external dependency (libgeos_c >= 3.1). 1.2a6 (2010-02-09) ------------------ - Add accessor for separate arrays of X and Y values (#210). TODO: fill gap here 1.2a1 (2010-01-20) ------------------ - Proper prototyping of WKB writer, and avoidance of errors on 64-bit systems (#191). - Prototype libgeos_c functions in a way that lets py2exe apps import shapely (#189). 1.2 Branched (2009-09-19) 1.0.12 (2009-04-09) ------------------- - Fix for references held by topology and predicate descriptors. 1.0.11 (2008-11-20) ------------------- - Work around bug in GEOS 2.2.3, GEOSCoordSeq_getOrdinate not exported properly (#178). 1.0.10 (2008-11-17) ------------------- - Fixed compatibility with GEOS 2.2.3 that was broken in 1.0.8 release (#176). 1.0.9 (2008-11-16) ------------------ - Find and load MacPorts libgeos. 1.0.8 (2008-11-01) ------------------ - Fill out GEOS function result and argument types to prevent faults on a 64-bit arch. 1.0.7 (2008-08-22) ------------------ - Polygon rings now have the same dimensions as parent (#168). - Eliminated reference cycles in polygons (#169). 1.0.6 (2008-07-10) ------------------ - Fixed adaptation of multi polygon data. - Raise exceptions earlier from binary predicates. - Beginning distributing new windows DLLs (#166). 1.0.5 (2008-05-20) ------------------ - Added access to GEOS polygonizer function. - Raise exception when insufficient coordinate tuples are passed to LinearRing constructor (#164). 1.0.4 (2008-05-01) ------------------ - Disentangle Python and topological equality (#163). - Add shape(), a factory that copies coordinates from a geo interface provider. To be used instead of asShape() unless you really need to store coordinates outside shapely for efficient use in other code. - Cache GEOS geometries in adapters (#163). 1.0.3 (2008-04-09) ------------------ - Do not release GIL when calling GEOS functions (#158). - Prevent faults when chaining multiple GEOS operators (#159). 1.0.2 (2008-02-26) ------------------ - Fix loss of dimensionality in polygon rings (#155). 1.0.1 (2008-02-08) ------------------ - Allow chaining expressions involving coordinate sequences and geometry parts (#151). - Protect against abnormal use of coordinate accessors (#152). - Coordinate sequences now implement the numpy array protocol (#153). 1.0 (2008-01-18) ---------------- - Final release. 1.0 RC2 (2008-01-16) -------------------- - Added temporary solution for #149. 1.0 RC1 (2008-01-14) -------------------- - First release candidate