shapely 1.7a2__tar.gz → 1.7a3__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 (140) hide show
  1. {Shapely-1.7a2 → Shapely-1.7a3}/CHANGES.txt +14 -0
  2. {Shapely-1.7a2 → Shapely-1.7a3}/CREDITS.txt +11 -6
  3. {Shapely-1.7a2/Shapely.egg-info → Shapely-1.7a3}/PKG-INFO +33 -13
  4. {Shapely-1.7a2 → Shapely-1.7a3}/README.rst +4 -4
  5. {Shapely-1.7a2 → Shapely-1.7a3/Shapely.egg-info}/PKG-INFO +33 -13
  6. {Shapely-1.7a2 → Shapely-1.7a3}/Shapely.egg-info/SOURCES.txt +2 -0
  7. Shapely-1.7a3/VERSION.txt +1 -0
  8. {Shapely-1.7a2 → Shapely-1.7a3}/docs/manual.rst +44 -15
  9. {Shapely-1.7a2 → Shapely-1.7a3}/docs/project.rst +1 -0
  10. {Shapely-1.7a2 → Shapely-1.7a3}/setup.py +25 -18
  11. Shapely-1.7a3/shapely/__init__.py +1 -0
  12. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/_buildcfg.py +3 -2
  13. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/_geos.pxi +2 -0
  14. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/affinity.py +11 -3
  15. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/ctypes_declarations.py +23 -1
  16. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/base.py +52 -23
  17. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/polygon.py +6 -3
  18. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geos.py +8 -1
  19. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/impl.py +3 -1
  20. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/ops.py +11 -9
  21. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/speedups/_speedups.c +1066 -989
  22. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/speedups/_speedups.pyx +7 -2
  23. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_affinity.py +59 -0
  24. Shapely-1.7a3/tests/test_buffer.py +80 -0
  25. Shapely-1.7a3/tests/test_geometry_base.py +17 -0
  26. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_geos_err_handler.py +1 -1
  27. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_operations.py +1 -2
  28. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_polygon.py +7 -11
  29. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_substring.py +5 -1
  30. Shapely-1.7a2/VERSION.txt +0 -1
  31. Shapely-1.7a2/shapely/__init__.py +0 -1
  32. {Shapely-1.7a2 → Shapely-1.7a3}/LICENSE.txt +0 -0
  33. {Shapely-1.7a2 → Shapely-1.7a3}/Shapely.egg-info/dependency_links.txt +0 -0
  34. {Shapely-1.7a2 → Shapely-1.7a3}/Shapely.egg-info/requires.txt +0 -0
  35. {Shapely-1.7a2 → Shapely-1.7a3}/Shapely.egg-info/top_level.txt +0 -0
  36. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/__init__.py +0 -0
  37. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/__about__.py +0 -0
  38. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/__init__.py +0 -0
  39. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/_compat.py +0 -0
  40. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/_structures.py +0 -0
  41. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/markers.py +0 -0
  42. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/requirements.py +0 -0
  43. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/specifiers.py +0 -0
  44. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/utils.py +0 -0
  45. {Shapely-1.7a2 → Shapely-1.7a3}/_vendor/packaging/version.py +0 -0
  46. {Shapely-1.7a2 → Shapely-1.7a3}/docs/design.rst +0 -0
  47. {Shapely-1.7a2 → Shapely-1.7a3}/docs/index.rst +0 -0
  48. {Shapely-1.7a2 → Shapely-1.7a3}/setup.cfg +0 -0
  49. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/algorithms/__init__.py +0 -0
  50. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/algorithms/cga.py +0 -0
  51. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/algorithms/polylabel.py +0 -0
  52. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/coords.py +0 -0
  53. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/errors.py +0 -0
  54. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/examples/__init__.py +0 -0
  55. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/examples/dissolve.py +0 -0
  56. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/examples/geoms.py +0 -0
  57. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/examples/intersect.py +0 -0
  58. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/__init__.py +0 -0
  59. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/collection.py +0 -0
  60. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/geo.py +0 -0
  61. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/linestring.py +0 -0
  62. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/multilinestring.py +0 -0
  63. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/multipoint.py +0 -0
  64. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/multipolygon.py +0 -0
  65. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/point.py +0 -0
  66. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/geometry/proxy.py +0 -0
  67. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/iterops.py +0 -0
  68. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/linref.py +0 -0
  69. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/predicates.py +0 -0
  70. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/prepared.py +0 -0
  71. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/speedups/__init__.py +0 -0
  72. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/strtree.py +0 -0
  73. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/topology.py +0 -0
  74. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/validation.py +0 -0
  75. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/vectorized/__init__.py +0 -0
  76. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/vectorized/_vectorized.c +0 -0
  77. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/vectorized/_vectorized.pyx +0 -0
  78. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/wkb.py +0 -0
  79. {Shapely-1.7a2 → Shapely-1.7a3}/shapely/wkt.py +0 -0
  80. {Shapely-1.7a2 → Shapely-1.7a3}/tests/__init__.py +0 -0
  81. {Shapely-1.7a2 → Shapely-1.7a3}/tests/binascii_hex.txt +0 -0
  82. {Shapely-1.7a2 → Shapely-1.7a3}/tests/conftest.py +0 -0
  83. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_box.py +0 -0
  84. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_cga.py +0 -0
  85. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_clip_by_rect.py +0 -0
  86. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_collection.py +0 -0
  87. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_coords.py +0 -0
  88. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_default_impl.py +0 -0
  89. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_delaunay.py +0 -0
  90. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_delegated.py +0 -0
  91. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_dlls.py +0 -0
  92. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_doctests.py +0 -0
  93. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_emptiness.py +0 -0
  94. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_empty_polygons.py +0 -0
  95. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_equality.py +0 -0
  96. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_geointerface.py +0 -0
  97. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_geomseq.py +0 -0
  98. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_getitem.py +0 -0
  99. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_hash.py +0 -0
  100. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_invalid_geometries.py +0 -0
  101. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_iterops.py +0 -0
  102. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_linear_referencing.py +0 -0
  103. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_linemerge.py +0 -0
  104. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_linestring.py +0 -0
  105. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_locale.py +0 -0
  106. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_mapping.py +0 -0
  107. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_minimum_rotated_rectangle.py +0 -0
  108. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_multi.py +0 -0
  109. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_multilinestring.py +0 -0
  110. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_multipoint.py +0 -0
  111. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_multipolygon.py +0 -0
  112. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_ndarrays.py +0 -0
  113. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_nearest.py +0 -0
  114. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_operators.py +0 -0
  115. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_orient.py +0 -0
  116. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_parallel_offset.py +0 -0
  117. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_persist.py +0 -0
  118. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_pickle.py +0 -0
  119. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_point.py +0 -0
  120. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_polygonize.py +0 -0
  121. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_polylabel.py +0 -0
  122. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_predicates.py +0 -0
  123. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_prepared.py +0 -0
  124. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_products_z.py +0 -0
  125. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_shared_paths.py +0 -0
  126. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_singularity.py +0 -0
  127. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_snap.py +0 -0
  128. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_split.py +0 -0
  129. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_strtree.py +0 -0
  130. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_strtree_nearest.py +0 -0
  131. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_styles.py +0 -0
  132. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_svg.py +0 -0
  133. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_transform.py +0 -0
  134. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_union.py +0 -0
  135. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_validation.py +0 -0
  136. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_vectorized.py +0 -0
  137. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_wkb.py +0 -0
  138. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_wkt.py +0 -0
  139. {Shapely-1.7a2 → Shapely-1.7a3}/tests/test_xy.py +0 -0
  140. {Shapely-1.7a2 → Shapely-1.7a3}/tests/threading_test.py +0 -0
@@ -1,6 +1,20 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 1.7a3 (2019-12-31)
5
+ ------------------
6
+
7
+ Bug fixes:
8
+
9
+ - Add /usr/local/lib to the list of directories to be searched for the GEOS
10
+ shared library (#795).
11
+ - ops.substring now returns a line with coords in end-to-front order when given
12
+ a start position that is greater than the end position (#628).
13
+ - Implement ``__bool__()`` for geometry base classes so that ``bool(geom)``
14
+ returns the logical complement of ``geom.is_empty`` (#754).
15
+ - Remove assertion on the number of version-like strings found in the GEOS
16
+ version string. It could be 2 or 3.
17
+
4
18
  1.7a2 (2019-06-21)
5
19
  ------------------
6
20
 
@@ -6,12 +6,12 @@ Shapely is written by:
6
6
  * Sean Gillies <sean.gillies@gmail.com>
7
7
  * Oliver Tonnhofer <olt@bogosoft.com>
8
8
  * Joshua Arnott <josh@snorfalorpagus.net>
9
- * Mike Toews <mwtoews@gmail.com>
9
+ * Mike Taves <mwtoews@gmail.com>
10
10
  * Jacob Wasserman <jwasserman@gmail.com>
11
11
  * Aron Bierbaum <aronbierbaum@gmail.com>
12
12
  * Allan Adair <allan@rfspot.com>
13
13
  * Johannes Schönberger <jschoenberger@demuc.de>
14
- * georgeouzou <geothrock@gmail.com>
14
+ * George Ouzounoudis <geothrock@gmail.com>
15
15
  * Phil Elson <pelson.pub@gmail.com>
16
16
  * Howard Butler <hobu.inc@gmail.com>
17
17
  * Kelsey Jordahl <kjordahl@enthought.com>
@@ -20,7 +20,7 @@ Shapely is written by:
20
20
  * Gabi Davar <grizzly.nyo@gmail.com>
21
21
  * Thibault Deutsch <thibault.deutsch@gmail.com>
22
22
  * Dave Collins <dave@hopest.net>
23
- * fredj <frederic.junod@camptocamp.com>
23
+ * Frédéric Junod <frederic.junod@camptocamp.com>
24
24
  * Brad Hards <bradh@frogmouth.net>
25
25
  * David Baumgold <david@davidbaumgold.com>
26
26
  * Henry Walshaw <henry.walshaw@gmail.com>
@@ -49,10 +49,15 @@ Shapely is written by:
49
49
  * giumas <gmasetti@ccom.unh.edu>
50
50
  * Leandro Lima <leandro@limaesilva.com.br>
51
51
  * Maarten Vermeyen <maarten.vermeyen@rwo.vlaanderen.be>
52
- * joelostblom <joelostblom@users.noreply.github.com>
52
+ * Joel Ostblom <joelostblom@users.noreply.github.com>
53
53
  * Marco De Nadai <me@marcodena.it>
54
54
  * Johan Euphrosine <proppy@aminche.com>
55
55
  * James Gaboardi <jgaboardi@gmail.com>
56
+ * Denis Rykov <rykovd@gmail.com>
57
+ * Zachary Ware <zachary.ware@gmail.com>
58
+ * Pierre PACI <villerupt@gmail.com>
59
+ * Hugo van Kemenade (@hugovk)
60
+ * Juan Luis Cano Rodríguez <juanlu@satellogic.com>
56
61
 
57
62
  See also: https://github.com/Toblerity/Shapely/graphs/contributors.
58
63
 
@@ -63,6 +68,6 @@ Additional help from:
63
68
  * Sandro Santilli, Mateusz Loskot, Paul Ramsey, et al (GEOS Project)
64
69
 
65
70
  Major portions of this work were supported by a grant (for Pleiades_) from the
66
- U.S. National Endowment for the Humanities (http://www.neh.gov).
71
+ U.S. National Endowment for the Humanities (https://www.neh.gov).
67
72
 
68
- .. _Pleiades: http://pleiades.stoa.org
73
+ .. _Pleiades: https://pleiades.stoa.org
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Shapely
3
- Version: 1.7a2
3
+ Version: 1.7a3
4
4
  Summary: Geometric objects, predicates, and operations
5
5
  Home-page: https://github.com/Toblerity/Shapely
6
6
  Author: Sean Gillies
@@ -26,7 +26,7 @@ Description: =======
26
26
 
27
27
  Shapely is a BSD-licensed Python package for manipulation and analysis of
28
28
  planar geometric objects. It is based on the widely deployed `GEOS
29
- <http://trac.osgeo.org/geos/>`__ (the engine of `PostGIS
29
+ <https://trac.osgeo.org/geos/>`__ (the engine of `PostGIS
30
30
  <http://postgis.org>`__) and `JTS
31
31
  <https://locationtech.github.io/jts/>`__ (from which GEOS is ported)
32
32
  libraries. Shapely is not concerned with data formats or coordinate systems,
@@ -53,8 +53,8 @@ Description: =======
53
53
  -------------------
54
54
 
55
55
  Windows users have two good installation options: the wheels at
56
- http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely and the
57
- Anaconda platform's `conda-forge <https://conda-forge.github.io/>`__
56
+ https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely and the
57
+ Anaconda platform's `conda-forge <https://conda-forge.org/>`__
58
58
  channel.
59
59
 
60
60
  OS X and Linux users can get Shapely wheels with GEOS included from the
@@ -165,7 +165,7 @@ Description: =======
165
165
  =======
166
166
 
167
167
  Questions about using Shapely may be asked on the `GIS StackExchange
168
- <http://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely"
168
+ <https://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely"
169
169
  tag.
170
170
 
171
171
  Bugs may be reported at https://github.com/Toblerity/Shapely/issues.
@@ -179,12 +179,12 @@ Description: =======
179
179
  * Sean Gillies <sean.gillies@gmail.com>
180
180
  * Oliver Tonnhofer <olt@bogosoft.com>
181
181
  * Joshua Arnott <josh@snorfalorpagus.net>
182
- * Mike Toews <mwtoews@gmail.com>
182
+ * Mike Taves <mwtoews@gmail.com>
183
183
  * Jacob Wasserman <jwasserman@gmail.com>
184
184
  * Aron Bierbaum <aronbierbaum@gmail.com>
185
185
  * Allan Adair <allan@rfspot.com>
186
186
  * Johannes Schönberger <jschoenberger@demuc.de>
187
- * georgeouzou <geothrock@gmail.com>
187
+ * George Ouzounoudis <geothrock@gmail.com>
188
188
  * Phil Elson <pelson.pub@gmail.com>
189
189
  * Howard Butler <hobu.inc@gmail.com>
190
190
  * Kelsey Jordahl <kjordahl@enthought.com>
@@ -193,7 +193,7 @@ Description: =======
193
193
  * Gabi Davar <grizzly.nyo@gmail.com>
194
194
  * Thibault Deutsch <thibault.deutsch@gmail.com>
195
195
  * Dave Collins <dave@hopest.net>
196
- * fredj <frederic.junod@camptocamp.com>
196
+ * Frédéric Junod <frederic.junod@camptocamp.com>
197
197
  * Brad Hards <bradh@frogmouth.net>
198
198
  * David Baumgold <david@davidbaumgold.com>
199
199
  * Henry Walshaw <henry.walshaw@gmail.com>
@@ -222,10 +222,15 @@ Description: =======
222
222
  * giumas <gmasetti@ccom.unh.edu>
223
223
  * Leandro Lima <leandro@limaesilva.com.br>
224
224
  * Maarten Vermeyen <maarten.vermeyen@rwo.vlaanderen.be>
225
- * joelostblom <joelostblom@users.noreply.github.com>
225
+ * Joel Ostblom <joelostblom@users.noreply.github.com>
226
226
  * Marco De Nadai <me@marcodena.it>
227
227
  * Johan Euphrosine <proppy@aminche.com>
228
228
  * James Gaboardi <jgaboardi@gmail.com>
229
+ * Denis Rykov <rykovd@gmail.com>
230
+ * Zachary Ware <zachary.ware@gmail.com>
231
+ * Pierre PACI <villerupt@gmail.com>
232
+ * Hugo van Kemenade (@hugovk)
233
+ * Juan Luis Cano Rodríguez <juanlu@satellogic.com>
229
234
 
230
235
  See also: https://github.com/Toblerity/Shapely/graphs/contributors.
231
236
 
@@ -236,14 +241,28 @@ Description: =======
236
241
  * Sandro Santilli, Mateusz Loskot, Paul Ramsey, et al (GEOS Project)
237
242
 
238
243
  Major portions of this work were supported by a grant (for Pleiades_) from the
239
- U.S. National Endowment for the Humanities (http://www.neh.gov).
244
+ U.S. National Endowment for the Humanities (https://www.neh.gov).
240
245
 
241
- .. _Pleiades: http://pleiades.stoa.org
246
+ .. _Pleiades: https://pleiades.stoa.org
242
247
 
243
248
 
244
249
  Changes
245
250
  =======
246
251
 
252
+ 1.7a3 (2019-12-31)
253
+ ------------------
254
+
255
+ Bug fixes:
256
+
257
+ - Add /usr/local/lib to the list of directories to be searched for the GEOS
258
+ shared library (#795).
259
+ - ops.substring now returns a line with coords in end-to-front order when given
260
+ a start position that is greater than the end position (#628).
261
+ - Implement ``__bool__()`` for geometry base classes so that ``bool(geom)``
262
+ returns the logical complement of ``geom.is_empty`` (#754).
263
+ - Remove assertion on the number of version-like strings found in the GEOS
264
+ version string. It could be 2 or 3.
265
+
247
266
  1.7a2 (2019-06-21)
248
267
  ------------------
249
268
 
@@ -918,12 +937,13 @@ Classifier: Operating System :: OS Independent
918
937
  Classifier: Programming Language :: Python :: 2
919
938
  Classifier: Programming Language :: Python :: 2.7
920
939
  Classifier: Programming Language :: Python :: 3
921
- Classifier: Programming Language :: Python :: 3.4
922
940
  Classifier: Programming Language :: Python :: 3.5
923
941
  Classifier: Programming Language :: Python :: 3.6
942
+ Classifier: Programming Language :: Python :: 3.7
943
+ Classifier: Programming Language :: Python :: 3.8
924
944
  Classifier: Topic :: Scientific/Engineering :: GIS
925
945
  Requires: Python (>=2.6)
926
946
  Requires: libgeos_c (>=3.3)
927
947
  Provides-Extra: test
928
- Provides-Extra: vectorized
929
948
  Provides-Extra: all
949
+ Provides-Extra: vectorized
@@ -16,7 +16,7 @@ Manipulation and analysis of geometric objects in the Cartesian plane.
16
16
 
17
17
  Shapely is a BSD-licensed Python package for manipulation and analysis of
18
18
  planar geometric objects. It is based on the widely deployed `GEOS
19
- <http://trac.osgeo.org/geos/>`__ (the engine of `PostGIS
19
+ <https://trac.osgeo.org/geos/>`__ (the engine of `PostGIS
20
20
  <http://postgis.org>`__) and `JTS
21
21
  <https://locationtech.github.io/jts/>`__ (from which GEOS is ported)
22
22
  libraries. Shapely is not concerned with data formats or coordinate systems,
@@ -43,8 +43,8 @@ Built distributions
43
43
  -------------------
44
44
 
45
45
  Windows users have two good installation options: the wheels at
46
- http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely and the
47
- Anaconda platform's `conda-forge <https://conda-forge.github.io/>`__
46
+ https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely and the
47
+ Anaconda platform's `conda-forge <https://conda-forge.org/>`__
48
48
  channel.
49
49
 
50
50
  OS X and Linux users can get Shapely wheels with GEOS included from the
@@ -155,7 +155,7 @@ Support
155
155
  =======
156
156
 
157
157
  Questions about using Shapely may be asked on the `GIS StackExchange
158
- <http://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely"
158
+ <https://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely"
159
159
  tag.
160
160
 
161
161
  Bugs may be reported at https://github.com/Toblerity/Shapely/issues.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Shapely
3
- Version: 1.7a2
3
+ Version: 1.7a3
4
4
  Summary: Geometric objects, predicates, and operations
5
5
  Home-page: https://github.com/Toblerity/Shapely
6
6
  Author: Sean Gillies
@@ -26,7 +26,7 @@ Description: =======
26
26
 
27
27
  Shapely is a BSD-licensed Python package for manipulation and analysis of
28
28
  planar geometric objects. It is based on the widely deployed `GEOS
29
- <http://trac.osgeo.org/geos/>`__ (the engine of `PostGIS
29
+ <https://trac.osgeo.org/geos/>`__ (the engine of `PostGIS
30
30
  <http://postgis.org>`__) and `JTS
31
31
  <https://locationtech.github.io/jts/>`__ (from which GEOS is ported)
32
32
  libraries. Shapely is not concerned with data formats or coordinate systems,
@@ -53,8 +53,8 @@ Description: =======
53
53
  -------------------
54
54
 
55
55
  Windows users have two good installation options: the wheels at
56
- http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely and the
57
- Anaconda platform's `conda-forge <https://conda-forge.github.io/>`__
56
+ https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely and the
57
+ Anaconda platform's `conda-forge <https://conda-forge.org/>`__
58
58
  channel.
59
59
 
60
60
  OS X and Linux users can get Shapely wheels with GEOS included from the
@@ -165,7 +165,7 @@ Description: =======
165
165
  =======
166
166
 
167
167
  Questions about using Shapely may be asked on the `GIS StackExchange
168
- <http://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely"
168
+ <https://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely"
169
169
  tag.
170
170
 
171
171
  Bugs may be reported at https://github.com/Toblerity/Shapely/issues.
@@ -179,12 +179,12 @@ Description: =======
179
179
  * Sean Gillies <sean.gillies@gmail.com>
180
180
  * Oliver Tonnhofer <olt@bogosoft.com>
181
181
  * Joshua Arnott <josh@snorfalorpagus.net>
182
- * Mike Toews <mwtoews@gmail.com>
182
+ * Mike Taves <mwtoews@gmail.com>
183
183
  * Jacob Wasserman <jwasserman@gmail.com>
184
184
  * Aron Bierbaum <aronbierbaum@gmail.com>
185
185
  * Allan Adair <allan@rfspot.com>
186
186
  * Johannes Schönberger <jschoenberger@demuc.de>
187
- * georgeouzou <geothrock@gmail.com>
187
+ * George Ouzounoudis <geothrock@gmail.com>
188
188
  * Phil Elson <pelson.pub@gmail.com>
189
189
  * Howard Butler <hobu.inc@gmail.com>
190
190
  * Kelsey Jordahl <kjordahl@enthought.com>
@@ -193,7 +193,7 @@ Description: =======
193
193
  * Gabi Davar <grizzly.nyo@gmail.com>
194
194
  * Thibault Deutsch <thibault.deutsch@gmail.com>
195
195
  * Dave Collins <dave@hopest.net>
196
- * fredj <frederic.junod@camptocamp.com>
196
+ * Frédéric Junod <frederic.junod@camptocamp.com>
197
197
  * Brad Hards <bradh@frogmouth.net>
198
198
  * David Baumgold <david@davidbaumgold.com>
199
199
  * Henry Walshaw <henry.walshaw@gmail.com>
@@ -222,10 +222,15 @@ Description: =======
222
222
  * giumas <gmasetti@ccom.unh.edu>
223
223
  * Leandro Lima <leandro@limaesilva.com.br>
224
224
  * Maarten Vermeyen <maarten.vermeyen@rwo.vlaanderen.be>
225
- * joelostblom <joelostblom@users.noreply.github.com>
225
+ * Joel Ostblom <joelostblom@users.noreply.github.com>
226
226
  * Marco De Nadai <me@marcodena.it>
227
227
  * Johan Euphrosine <proppy@aminche.com>
228
228
  * James Gaboardi <jgaboardi@gmail.com>
229
+ * Denis Rykov <rykovd@gmail.com>
230
+ * Zachary Ware <zachary.ware@gmail.com>
231
+ * Pierre PACI <villerupt@gmail.com>
232
+ * Hugo van Kemenade (@hugovk)
233
+ * Juan Luis Cano Rodríguez <juanlu@satellogic.com>
229
234
 
230
235
  See also: https://github.com/Toblerity/Shapely/graphs/contributors.
231
236
 
@@ -236,14 +241,28 @@ Description: =======
236
241
  * Sandro Santilli, Mateusz Loskot, Paul Ramsey, et al (GEOS Project)
237
242
 
238
243
  Major portions of this work were supported by a grant (for Pleiades_) from the
239
- U.S. National Endowment for the Humanities (http://www.neh.gov).
244
+ U.S. National Endowment for the Humanities (https://www.neh.gov).
240
245
 
241
- .. _Pleiades: http://pleiades.stoa.org
246
+ .. _Pleiades: https://pleiades.stoa.org
242
247
 
243
248
 
244
249
  Changes
245
250
  =======
246
251
 
252
+ 1.7a3 (2019-12-31)
253
+ ------------------
254
+
255
+ Bug fixes:
256
+
257
+ - Add /usr/local/lib to the list of directories to be searched for the GEOS
258
+ shared library (#795).
259
+ - ops.substring now returns a line with coords in end-to-front order when given
260
+ a start position that is greater than the end position (#628).
261
+ - Implement ``__bool__()`` for geometry base classes so that ``bool(geom)``
262
+ returns the logical complement of ``geom.is_empty`` (#754).
263
+ - Remove assertion on the number of version-like strings found in the GEOS
264
+ version string. It could be 2 or 3.
265
+
247
266
  1.7a2 (2019-06-21)
248
267
  ------------------
249
268
 
@@ -918,12 +937,13 @@ Classifier: Operating System :: OS Independent
918
937
  Classifier: Programming Language :: Python :: 2
919
938
  Classifier: Programming Language :: Python :: 2.7
920
939
  Classifier: Programming Language :: Python :: 3
921
- Classifier: Programming Language :: Python :: 3.4
922
940
  Classifier: Programming Language :: Python :: 3.5
923
941
  Classifier: Programming Language :: Python :: 3.6
942
+ Classifier: Programming Language :: Python :: 3.7
943
+ Classifier: Programming Language :: Python :: 3.8
924
944
  Classifier: Topic :: Scientific/Engineering :: GIS
925
945
  Requires: Python (>=2.6)
926
946
  Requires: libgeos_c (>=3.3)
927
947
  Provides-Extra: test
928
- Provides-Extra: vectorized
929
948
  Provides-Extra: all
949
+ Provides-Extra: vectorized
@@ -72,6 +72,7 @@ tests/binascii_hex.txt
72
72
  tests/conftest.py
73
73
  tests/test_affinity.py
74
74
  tests/test_box.py
75
+ tests/test_buffer.py
75
76
  tests/test_cga.py
76
77
  tests/test_clip_by_rect.py
77
78
  tests/test_collection.py
@@ -85,6 +86,7 @@ tests/test_emptiness.py
85
86
  tests/test_empty_polygons.py
86
87
  tests/test_equality.py
87
88
  tests/test_geointerface.py
89
+ tests/test_geometry_base.py
88
90
  tests/test_geomseq.py
89
91
  tests/test_geos_err_handler.py
90
92
  tests/test_getitem.py
@@ -0,0 +1 @@
1
+ 1.7a3
@@ -118,7 +118,7 @@ Relationships
118
118
  The spatial data model is accompanied by a group of natural language
119
119
  relationships between geometric objects – `contains`, `intersects`, `overlaps`,
120
120
  `touches`, etc. – and a theoretical framework for understanding them using the
121
- 3x3 matrix of the mutual intersections of their component point sets [2]_: the
121
+ 3x3 matrix of the mutual intersections of their component point sets [3]_: the
122
122
  DE-9IM. A comprehensive review of the relationships in terms of the DE-9IM is
123
123
  found in [4]_ and will not be reiterated in this manual.
124
124
 
@@ -207,8 +207,8 @@ General Attributes and Methods
207
207
 
208
208
  .. code-block:: pycon
209
209
 
210
- >>> print Point(0, 0).geom_type
211
- Point
210
+ >>> Point(0, 0).geom_type
211
+ 'Point'
212
212
 
213
213
  .. method:: object.distance(other)
214
214
 
@@ -1988,13 +1988,22 @@ for `func`.
1988
1988
  from functools import partial
1989
1989
  import pyproj
1990
1990
 
1991
+ proj_in = pyproj.Proj(init='epsg:4326')
1992
+ proj_out = pyproj.Proj(init='epsg:26913')
1993
+
1991
1994
  project = partial(
1992
1995
  pyproj.transform,
1993
- pyproj.Proj(init='epsg:4326'),
1994
- pyproj.Proj(init='epsg:26913'))
1996
+ proj_in,
1997
+ proj_out)
1995
1998
 
1996
1999
  g2 = transform(project, g1)
1997
2000
 
2001
+ If using `pyproj>=2.1.0` a more performant method would be
2002
+
2003
+ .. code-block:: python
2004
+
2005
+ project = pyproj.Transformer.from_proj(proj_in, proj_out).transform
2006
+
1998
2007
  Lambda expressions such as the one in
1999
2008
 
2000
2009
  .. code-block:: python
@@ -2371,6 +2380,29 @@ accessible via :attr:`shapely.__version__`,
2371
2380
  >>> shapely.geos.geos_version_string
2372
2381
  '3.3.0-CAPI-1.7.0'
2373
2382
 
2383
+ Polylabel
2384
+ ---------
2385
+
2386
+ .. function:: shapely.ops.polylabel(polygon, tolerance)
2387
+
2388
+ Finds the approximate location of the pole of inaccessibility for a given
2389
+ polygon. Based on Vladimir Agafonkin's polylabel_.
2390
+
2391
+ `New in version 1.6.0`
2392
+
2393
+ .. note::
2394
+
2395
+ Prior to 1.7 `polylabel` must be imported from `shapely.algorithms.polylabel`
2396
+ instead of `shapely.ops`.
2397
+
2398
+ .. code-block:: pycon
2399
+
2400
+ >>> from shapely.ops import polylabel
2401
+ >>> polygon = LineString([(0, 0), (50, 200), (100, 100), (20, 50),
2402
+ ... (-100, -20), (-150, -200)]).buffer(100)
2403
+ >>> label = polylabel(polygon, tolerance=10)
2404
+ >>> label.wkt
2405
+ 'POINT (59.35615556364569 121.8391962974644)'
2374
2406
 
2375
2407
  STR-packed R-tree
2376
2408
  =================
@@ -2447,8 +2479,8 @@ appropriate type, use ``loads()``.
2447
2479
 
2448
2480
  >> from shapely.wkb import dumps, loads
2449
2481
  >>> wkb = dumps(Point(0, 0))
2450
- >>> print wkb.encode('hex')
2451
- 010100000000000000000000000000000000000000
2482
+ >>> wkb.encode('hex')
2483
+ '010100000000000000000000000000000000000000'
2452
2484
  >>> loads(wkb).wkt
2453
2485
  'POINT (0.0000000000000000 0.0000000000000000)'
2454
2486
 
@@ -2466,10 +2498,10 @@ All of Shapely's geometry types are supported by these functions.
2466
2498
 
2467
2499
  >> from shapely.wkt import dumps, loads
2468
2500
  >> wkt = dumps(Point(0, 0))
2469
- >>> print wkt
2470
- POINT (0.0000000000000000 0.0000000000000000)
2471
- >>> loads(wkt).wkt
2501
+ >>> wkt
2472
2502
  'POINT (0.0000000000000000 0.0000000000000000)'
2503
+ >>> loads(wkt).wkt
2504
+ 'POINT (0 0)'
2473
2505
 
2474
2506
  Numpy and Python Arrays
2475
2507
  -----------------------
@@ -2680,12 +2712,8 @@ References
2680
2712
 
2681
2713
  .. _GEOS: https://trac.osgeo.org/geos/
2682
2714
  .. _Java Topology Suite: https://projects.eclipse.org/projects/locationtech.jts
2683
- .. _JTS: https://projects.eclipse.org/projects/locationtech.jts
2684
2715
  .. _PostGIS: http://postgis.refractions.net
2685
- .. _record: https://pypi.org/project/Shapely/
2686
- .. _Open Geospatial Consortium: http://www.opengeospatial.org/
2687
- .. _Davis: https://lin-ear-th-inking.blogspot.com/2007/06/subtleties-of-ogc-covers-spatial.html
2688
- .. _Understanding spatial relations: http://edndoc.esri.com/arcsde/9.1/general_topics/understand_spatial_relations.htm
2716
+ .. _Open Geospatial Consortium: https://www.opengeospatial.org/
2689
2717
  .. _Strobl-PDF: https://giswiki.hsr.ch/images/3/3d/9dem_springer.pdf
2690
2718
  .. |Strobl-PDF| replace:: PDF
2691
2719
  .. _JTS-PDF: https://github.com/locationtech/jts/raw/master/doc/JTS%20Technical%20Specs.pdf
@@ -2693,3 +2721,4 @@ References
2693
2721
  .. _frozenset: https://docs.python.org/library/stdtypes.html#frozenset
2694
2722
  .. _Sorting HowTo: https://wiki.python.org/moin/HowTo/Sorting/
2695
2723
  .. _Python geo interface: https://gist.github.com/2217756
2724
+ .. _polylabel: https://github.com/mapbox/polylabel
@@ -4,3 +4,4 @@
4
4
 
5
5
  .. include:: ../CHANGES.txt
6
6
 
7
+ .. include:: ../FAQ.rst
@@ -220,9 +220,10 @@ setup_args = dict(
220
220
  'Programming Language :: Python :: 2',
221
221
  'Programming Language :: Python :: 2.7',
222
222
  'Programming Language :: Python :: 3',
223
- 'Programming Language :: Python :: 3.4',
224
223
  'Programming Language :: Python :: 3.5',
225
224
  'Programming Language :: Python :: 3.6',
225
+ 'Programming Language :: Python :: 3.7',
226
+ 'Programming Language :: Python :: 3.8',
226
227
  'Topic :: Scientific/Engineering :: GIS',
227
228
  ],
228
229
  cmdclass = {},
@@ -315,25 +316,18 @@ if (platform.python_implementation() == 'PyPy'):
315
316
  ext_modules = []
316
317
  libraries = []
317
318
 
318
- if os.path.exists("MANIFEST.in"):
319
- pyx_file = "shapely/speedups/_speedups.pyx"
320
- c_file = "shapely/speedups/_speedups.c"
321
319
 
322
- force_cython = False
323
- if 'sdist' in sys.argv:
324
- force_cython = True
320
+ pyx_file = "shapely/speedups/_speedups.pyx"
321
+ c_file = "shapely/speedups/_speedups.c"
325
322
 
326
- try:
327
- if (force_cython or not os.path.exists(c_file)
328
- or os.path.getmtime(pyx_file) > os.path.getmtime(c_file)):
329
- log.info("Updating C extension with Cython.")
330
- subprocess.check_call(["cython", "shapely/speedups/_speedups.pyx"])
331
- except (subprocess.CalledProcessError, OSError):
332
- log.warn("Could not (re)create C extension with Cython.")
333
- if force_cython:
334
- raise
335
- if not os.path.exists(c_file):
336
- log.warn("speedup extension not found")
323
+ force_cython = False
324
+ # Always regenerate for sdist or absent c file
325
+ if 'sdist' in sys.argv or not os.path.exists(c_file):
326
+ force_cython = True
327
+ # Also regenerate if pyx_file is outdated.
328
+ elif os.path.exists(c_file):
329
+ if os.path.getmtime(pyx_file) > os.path.getmtime(c_file):
330
+ force_cython = True
337
331
 
338
332
  ext_modules = [
339
333
  Extension("shapely.speedups._speedups", ["shapely/speedups/_speedups.c"],
@@ -366,6 +360,19 @@ try:
366
360
  except ImportError:
367
361
  log.info("Numpy or Cython not available, shapely.vectorized submodule "
368
362
  "not being built.")
363
+ force_cython = False
364
+
365
+ try:
366
+ if force_cython:
367
+ log.info("Updating C extension with Cython.")
368
+ subprocess.check_call(["cython", "shapely/speedups/_speedups.pyx"])
369
+ except (subprocess.CalledProcessError, OSError):
370
+ log.warn("Could not (re)create C extension with Cython.")
371
+ if force_cython:
372
+ raise
373
+
374
+ if not os.path.exists(c_file):
375
+ log.warn("speedup extension not found")
369
376
 
370
377
  try:
371
378
  # try building with speedups
@@ -0,0 +1 @@
1
+ __version__ = "1.7a3"
@@ -165,7 +165,7 @@ if sys.platform.startswith('linux'):
165
165
  if not lgeos:
166
166
  lgeos = load_dll('geos_c',
167
167
  fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
168
- free = load_dll('c').free
168
+ free = load_dll('c', fallbacks=['libc.so.6']).free
169
169
  free.argtypes = [c_void_p]
170
170
  free.restype = None
171
171
 
@@ -181,6 +181,8 @@ elif sys.platform == 'darwin':
181
181
  "/Library/Frameworks/GEOS.framework/Versions/Current/GEOS",
182
182
  # macports
183
183
  '/opt/local/lib/libgeos_c.dylib',
184
+ # homebrew
185
+ '/usr/local/lib/libgeos_c.dylib',
184
186
  ]
185
187
  lgeos = load_dll('geos_c', fallbacks=alt_paths)
186
188
 
@@ -239,7 +241,6 @@ def _geos_version():
239
241
  geos_version_string = geos_version_string.decode('ascii')
240
242
 
241
243
  res = re.findall(r'(\d+)\.(\d+)\.(\d+)', geos_version_string)
242
- assert len(res) == 2, res
243
244
  geos_version = tuple(int(x) for x in res[0])
244
245
  capi_version = tuple(int(x) for x in res[1])
245
246
 
@@ -43,6 +43,8 @@ cdef extern from "geos_c.h":
43
43
  char GEOSHasZ_r(GEOSContextHandle_t, GEOSGeometry *) nogil
44
44
  char GEOSisRing_r(GEOSContextHandle_t, GEOSGeometry *) nogil
45
45
  char GEOSisClosed_r(GEOSContextHandle_t, GEOSGeometry *) nogil
46
+ char GEOSisValid_r(GEOSContextHandle_t, GEOSGeometry *) nogil
47
+ char GEOSisSimple_r(GEOSContextHandle_t, GEOSGeometry *) nogil
46
48
 
47
49
 
48
50
  cdef GEOSContextHandle_t get_geos_context_handle():
@@ -151,8 +151,10 @@ def rotate(geom, angle, origin='center', use_radians=False):
151
151
  xoff = x0 - x0 * cos(r) + y0 * sin(r)
152
152
  yoff = y0 - x0 * sin(r) - y0 * cos(r)
153
153
  """
154
+ if geom.is_empty:
155
+ return geom
154
156
  if not use_radians: # convert from degrees
155
- angle *= pi/180.0
157
+ angle = angle * pi/180.0
156
158
  cosp = cos(angle)
157
159
  sinp = sin(angle)
158
160
  if abs(cosp) < 2.5e-16:
@@ -190,6 +192,8 @@ def scale(geom, xfact=1.0, yfact=1.0, zfact=1.0, origin='center'):
190
192
  yoff = y0 - y0 * yfact
191
193
  zoff = z0 - z0 * zfact
192
194
  """
195
+ if geom.is_empty:
196
+ return geom
193
197
  x0, y0, z0 = interpret_origin(geom, origin, 3)
194
198
 
195
199
  matrix = (xfact, 0.0, 0.0,
@@ -220,9 +224,11 @@ def skew(geom, xs=0.0, ys=0.0, origin='center', use_radians=False):
220
224
  xoff = -y0 * tan(xs)
221
225
  yoff = -x0 * tan(ys)
222
226
  """
227
+ if geom.is_empty:
228
+ return geom
223
229
  if not use_radians: # convert from degrees
224
- xs *= pi/180.0
225
- ys *= pi/180.0
230
+ xs = xs * pi/180.0
231
+ ys = ys * pi/180.0
226
232
  tanx = tan(xs)
227
233
  tany = tan(ys)
228
234
  if abs(tanx) < 2.5e-16:
@@ -248,6 +254,8 @@ def translate(geom, xoff=0.0, yoff=0.0, zoff=0.0):
248
254
  | 0 0 1 zoff |
249
255
  \ 0 0 0 1 /
250
256
  """
257
+ if geom.is_empty:
258
+ return geom
251
259
  matrix = (1.0, 0.0, 0.0,
252
260
  0.0, 1.0, 0.0,
253
261
  0.0, 0.0, 1.0,