Changelogs » Shapely

Shapely

1.7b1

------------------

First beta release.

1.7a3

------------------

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

------------------

- 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

------------------

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

------------------------

- Fix broken markup in this change log, which restores our nicely formatted
readme on PyPI.

1.6.4

------------------

- Handle a ``TypeError`` that can occur when geometries are torn down (473,
528).

1.6.3

------------------

- 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

------------------

- 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

------------------

- 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

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

------------------

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

------------------

Bug fixes:

- Isolate vendorized packaging in a _vendor directory, remove obsolete
dist-info, and remove packaging from project requirements (resolves 468).

1.6b3

------------------

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

------------------

New features:

- Add support for GeometryCollection to shape and asShape functions (422).

1.6b1

------------------

Bug fixes:

- Implemented __array_interface__ for empty Points and LineStrings (403).

1.6a3

------------------

Bug fixes:

- Remove accidental hard requirement of Numpy (431).

Packaging:

- Put Numpy in an optional requirement set named "vectorized" (431).

1.6a2

------------------

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

------------------

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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- Monkey patch affinity module by absolute reference (299).
- Raise TopologicalError in relate() instead of crashing (294, 295, 303).

1.5.9

------------------
- Fix for 64 bit speedups compatibility (274).

1.5.8

------------------
- 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

------------------
- Test and fix buggy error and notice handlers (249).

1.5.6

------------------
- Fix setup regression (232, 234).
- SVG representation improvements (233, 237).

1.5.5

------------------
- MANIFEST changes to restore _geox.pxi (231).

1.5.4

------------------
- Fixed OS X binary wheel library load path (224).

1.5.3

------------------
- Fixed ownership and potential memory leak in polygonize (223).
- Wider release of binary wheels for OS X.

1.5.2

------------------
- Fail installation if GEOS dependency is not met, preventing update breakage
(218, 219).

1.5.1

------------------
- Restore geometry hashing (209).

1.5.0

------------------
- 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

------------------
- Proper conversion of numpy float32 vals to coords (186).

1.4.3

------------------
- Fix for endianness bug in WKB writer (174).

1.4.2

------------------
- Fix bungled 1.4.1 release (176).

1.4.1

------------------
- Return of support for GEOS 3.2 (176, 178).

1.4.0

------------------
- 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

------------------
- Allow single-part geometries as argument to ops.cacaded_union() (135).
- Support affine transformations of LinearRings (112).

1.3.2

------------------
- Let LineString() take a sequence of Points (130).

1.3.1

------------------
- More reliable proxy cleanup on exit (106).
- More robust DLL loading on all platforms (114).

1.3.0

------------------
- 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

-------------------
- Add buffering style options (55).

1.2.18

--------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- 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

-------------------
- Fixed errors in speedups on 32bit systems when GEOS references memory above
2GB.
- Add shapely.__version__ attribute.
- Update the manual.

1.2.12

-------------------
- 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

-------------------
- 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

-------------------
- 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

------------------
- Remove extra glob import.
- Move examples to shapely.examples.
- Add box() constructor for rectangular polygons.
- Fix extraneous imports.

1.2.8

------------------
- New parallel_offset method (6).
- Support for Python 2.4.

1.2.7

------------------
- Support for Windows eggs.

1.2.6

------------------
- 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

------------------
- Stop distributing docs/_build.
- Include library fallbacks in test_dlls.py for linux platform.

1.2.4

------------------
- 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

------------------
- Add mapping function.
- Fix problem with GEOSisValidReason symbol for GEOS < 3.1.

1.2.2

------------------
- Add representative_point method.

1.2.1

------------------
- Fixed bounds of singular polygons.
- Added shapely.validation.explain_validity function (226).

1.2


      

1.2rc2

-------------------
- Add examples and tests to MANIFEST.in.
- Release candidate 2.

1.2rc1

-------------------
- Release candidate.

1.2b7

------------------
- Memory leak associated with new empty geometry state fixed.

1.2b6

------------------
- Broken GeometryCollection fixed.

1.2b5

------------------
- 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

------------------
- Adds support for the "sunos5" platform.

1.2b3

------------------
- Only provide simplification implementations for GEOS C API >= 1.5.

1.2b2

------------------
- Fix cascaded_union bug introduced in 1.2b1 (212).

1.2b1

------------------
- 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

------------------
- Add accessor for separate arrays of X and Y values (210).

TODO: fill gap here

1.2a1

------------------
- 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.0.12

-------------------
- Fix for references held by topology and predicate descriptors.

1.0.11

-------------------
- Work around bug in GEOS 2.2.3, GEOSCoordSeq_getOrdinate not exported properly
(178).

1.0.10

-------------------
- Fixed compatibility with GEOS 2.2.3 that was broken in 1.0.8 release (176).

1.0.9

------------------
- Find and load MacPorts libgeos.

1.0.8

------------------
- Fill out GEOS function result and argument types to prevent faults on a
64-bit arch.

1.0.7

------------------
- Polygon rings now have the same dimensions as parent (168).
- Eliminated reference cycles in polygons (169).

1.0.6

------------------
- Fixed adaptation of multi polygon data.
- Raise exceptions earlier from binary predicates.
- Beginning distributing new windows DLLs (166).

1.0.5

------------------
- Added access to GEOS polygonizer function.
- Raise exception when insufficient coordinate tuples are passed to LinearRing
constructor (164).

1.0.4

------------------
- 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

------------------
- Do not release GIL when calling GEOS functions (158).
- Prevent faults when chaining multiple GEOS operators (159).

1.0.2

------------------
- Fix loss of dimensionality in polygon rings (155).

1.0.1

------------------
- 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

--------------------
- First release candidate