shapely 1.6b1__tar.gz → 1.6b3__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 (141) hide show
  1. {Shapely-1.6b1 → Shapely-1.6b3}/CHANGES.txt +16 -0
  2. {Shapely-1.6b1/Shapely.egg-info → Shapely-1.6b3}/PKG-INFO +26 -8
  3. {Shapely-1.6b1 → Shapely-1.6b3}/README.rst +9 -7
  4. {Shapely-1.6b1 → Shapely-1.6b3/Shapely.egg-info}/PKG-INFO +26 -8
  5. Shapely-1.6b3/VERSION.txt +1 -0
  6. {Shapely-1.6b1 → Shapely-1.6b3}/setup.cfg +2 -2
  7. Shapely-1.6b3/shapely/__init__.py +1 -0
  8. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/geo.py +7 -0
  9. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geos.py +14 -24
  10. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/speedups/__init__.py +14 -7
  11. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/speedups/_speedups.c +1254 -995
  12. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/speedups/_speedups.pyx +14 -2
  13. Shapely-1.6b3/tests/test_collection.py +68 -0
  14. Shapely-1.6b3/tests/test_geos_err_handler.py +65 -0
  15. Shapely-1.6b1/VERSION.txt +0 -1
  16. Shapely-1.6b1/shapely/__init__.py +0 -1
  17. Shapely-1.6b1/tests/test_collection.py +0 -29
  18. Shapely-1.6b1/tests/test_geos_err_handler.py +0 -33
  19. {Shapely-1.6b1 → Shapely-1.6b3}/CREDITS.txt +0 -0
  20. {Shapely-1.6b1 → Shapely-1.6b3}/LICENSE.txt +0 -0
  21. {Shapely-1.6b1 → Shapely-1.6b3}/Shapely.egg-info/SOURCES.txt +0 -0
  22. {Shapely-1.6b1 → Shapely-1.6b3}/Shapely.egg-info/dependency_links.txt +0 -0
  23. {Shapely-1.6b1 → Shapely-1.6b3}/Shapely.egg-info/requires.txt +1 -1
  24. {Shapely-1.6b1 → Shapely-1.6b3}/Shapely.egg-info/top_level.txt +0 -0
  25. {Shapely-1.6b1 → Shapely-1.6b3}/docs/design.rst +0 -0
  26. {Shapely-1.6b1 → Shapely-1.6b3}/docs/index.rst +0 -0
  27. {Shapely-1.6b1 → Shapely-1.6b3}/docs/manual.rst +0 -0
  28. {Shapely-1.6b1 → Shapely-1.6b3}/docs/project.rst +0 -0
  29. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/__about__.py +0 -0
  30. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/__init__.py +0 -0
  31. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/_compat.py +0 -0
  32. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/_structures.py +0 -0
  33. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/markers.py +0 -0
  34. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/requirements.py +0 -0
  35. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/specifiers.py +0 -0
  36. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/utils.py +0 -0
  37. {Shapely-1.6b1 → Shapely-1.6b3}/packaging/version.py +0 -0
  38. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/DESCRIPTION.rst +0 -0
  39. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/METADATA +0 -0
  40. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/RECORD +0 -0
  41. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/WHEEL +0 -0
  42. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/metadata.json +0 -0
  43. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/pbr.json +0 -0
  44. {Shapely-1.6b1 → Shapely-1.6b3}/packaging-15.3.dist-info/top_level.txt +0 -0
  45. {Shapely-1.6b1 → Shapely-1.6b3}/setup.py +0 -0
  46. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/_buildcfg.py +0 -0
  47. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/_geos.pxi +0 -0
  48. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/affinity.py +0 -0
  49. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/algorithms/__init__.py +0 -0
  50. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/algorithms/cga.py +0 -0
  51. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/algorithms/polylabel.py +0 -0
  52. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/coords.py +0 -0
  53. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/ctypes_declarations.py +0 -0
  54. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/errors.py +0 -0
  55. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/examples/__init__.py +0 -0
  56. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/examples/dissolve.py +0 -0
  57. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/examples/geoms.py +0 -0
  58. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/examples/intersect.py +0 -0
  59. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/ftools.py +0 -0
  60. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/__init__.py +0 -0
  61. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/base.py +0 -0
  62. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/collection.py +0 -0
  63. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/linestring.py +0 -0
  64. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/multilinestring.py +0 -0
  65. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/multipoint.py +0 -0
  66. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/multipolygon.py +0 -0
  67. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/point.py +0 -0
  68. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/polygon.py +0 -0
  69. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/geometry/proxy.py +0 -0
  70. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/impl.py +0 -0
  71. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/iterops.py +0 -0
  72. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/linref.py +0 -0
  73. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/ops.py +0 -0
  74. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/predicates.py +0 -0
  75. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/prepared.py +0 -0
  76. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/strtree.py +0 -0
  77. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/topology.py +0 -0
  78. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/validation.py +0 -0
  79. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/vectorized/__init__.py +0 -0
  80. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/vectorized/_vectorized.pyx +0 -0
  81. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/wkb.py +0 -0
  82. {Shapely-1.6b1 → Shapely-1.6b3}/shapely/wkt.py +0 -0
  83. {Shapely-1.6b1 → Shapely-1.6b3}/tests/__init__.py +0 -0
  84. {Shapely-1.6b1 → Shapely-1.6b3}/tests/binascii_hex.txt +0 -0
  85. {Shapely-1.6b1 → Shapely-1.6b3}/tests/conftest.py +0 -0
  86. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_affinity.py +0 -0
  87. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_box.py +0 -0
  88. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_cga.py +0 -0
  89. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_coords.py +0 -0
  90. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_default_impl.py +0 -0
  91. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_delaunay.py +0 -0
  92. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_delegated.py +0 -0
  93. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_dlls.py +0 -0
  94. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_doctests.py +0 -0
  95. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_emptiness.py +0 -0
  96. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_empty_polygons.py +0 -0
  97. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_equality.py +0 -0
  98. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_geointerface.py +0 -0
  99. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_geomseq.py +0 -0
  100. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_getitem.py +0 -0
  101. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_hash.py +0 -0
  102. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_invalid_geometries.py +0 -0
  103. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_iterops.py +0 -0
  104. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_linear_referencing.py +0 -0
  105. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_linemerge.py +0 -0
  106. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_linestring.py +0 -0
  107. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_locale.py +0 -0
  108. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_mapping.py +0 -0
  109. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_minimum_rotated_rectangle.py +0 -0
  110. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_multi.py +0 -0
  111. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_multilinestring.py +0 -0
  112. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_multipoint.py +0 -0
  113. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_multipolygon.py +0 -0
  114. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_ndarrays.py +0 -0
  115. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_nearest.py +0 -0
  116. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_operations.py +0 -0
  117. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_operators.py +0 -0
  118. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_parallel_offset.py +0 -0
  119. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_persist.py +0 -0
  120. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_pickle.py +0 -0
  121. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_point.py +0 -0
  122. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_polygon.py +0 -0
  123. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_polygonize.py +0 -0
  124. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_polylabel.py +0 -0
  125. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_predicates.py +0 -0
  126. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_prepared.py +0 -0
  127. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_products_z.py +0 -0
  128. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_shared_paths.py +0 -0
  129. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_singularity.py +0 -0
  130. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_snap.py +0 -0
  131. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_split.py +0 -0
  132. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_strtree.py +0 -0
  133. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_styles.py +0 -0
  134. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_svg.py +0 -0
  135. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_transform.py +0 -0
  136. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_union.py +0 -0
  137. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_validation.py +0 -0
  138. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_vectorized.py +0 -0
  139. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_wkt.py +0 -0
  140. {Shapely-1.6b1 → Shapely-1.6b3}/tests/test_xy.py +0 -0
  141. {Shapely-1.6b1 → Shapely-1.6b3}/tests/threading_test.py +0 -0
@@ -1,6 +1,22 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 1.6b3 (2016-12-31)
5
+ ------------------
6
+
7
+ Bug fixes:
8
+
9
+ - Level for log messages originating from the GEOS notice handler reduced from
10
+ WARNING to INFO (#447).
11
+ - Permit speedups to be imported again without Numpy (#444).
12
+
13
+ 1.6b2 (2016-12-12)
14
+ ------------------
15
+
16
+ New features:
17
+
18
+ - Add support for GeometryCollection to shape and asShape functions (#422).
19
+
4
20
  1.6b1 (2016-12-12)
5
21
  ------------------
6
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: Shapely
3
- Version: 1.6b1
3
+ Version: 1.6b3
4
4
  Summary: Geometric objects, predicates, and operations
5
5
  Home-page: https://github.com/Toblerity/Shapely
6
6
  Author: Sean Gillies
@@ -13,6 +13,7 @@ Description: =======
13
13
  .. image:: https://travis-ci.org/Toblerity/Shapely.png?branch=master
14
14
  :target: https://travis-ci.org/Toblerity/Shapely
15
15
 
16
+ .. image:: https://coveralls.io/repos/github/Toblerity/Shapely/badge.svg?branch=master
16
17
  :target: https://coveralls.io/github/Toblerity/Shapely?branch=master
17
18
 
18
19
  Manipulation and analysis of geometric objects in the Cartesian plane.
@@ -40,7 +41,7 @@ Description: =======
40
41
  * Python >=2.6 (including Python 3.x)
41
42
  * GEOS >=3.3
42
43
 
43
- Installing Shapely (1.6b1)
44
+ Installing Shapely (1.6b2)
44
45
  ==========================
45
46
 
46
47
  Windows users have two good installation options: the wheels at
@@ -53,13 +54,13 @@ Description: =======
53
54
 
54
55
  .. code-block:: console
55
56
 
56
- $ pip install shapely==1.6b1
57
+ $ pip install shapely==1.6b2
57
58
 
58
59
  A few extra speedups that require Numpy can be had by running
59
60
 
60
61
  .. code-block:: console
61
62
 
62
- $ pip install shapely[vectorized]==1.6b1
63
+ $ pip install shapely[vectorized]==1.6b2
63
64
 
64
65
  If you want to build Shapely from source for compatibility with
65
66
  other modules that depend on GEOS (such as cartopy or osgeo.ogr)
@@ -70,8 +71,8 @@ Description: =======
70
71
  $ pip install shapely --no-binary shapely
71
72
 
72
73
  Binary wheels are also available for Linux. To get them, use `pip shapely
73
- shapely==1.6b1`. To avoid them, use `pip install shapely --no-binary
74
- shapely==1.6b1`.
74
+ shapely==1.6b2`. To avoid them, use `pip install shapely --no-binary
75
+ shapely==1.6b2`.
75
76
 
76
77
  In other situations, install `geos_c` libs and headers by any means
77
78
  (for example, `brew install geos` on OS X or
@@ -90,8 +91,9 @@ Description: =======
90
91
  .. code-block:: console
91
92
 
92
93
  $ GEOS_CONFIG=/path/to/geos-config pip install shapely
93
- Shapely is also provided by popular Python distributions like Canopy (Enthought)
94
- and Anaconda (Continuum Analytics).
94
+
95
+ Shapely is also provided by popular Python distributions like Canopy
96
+ (Enthought) and Anaconda (Continuum Analytics).
95
97
 
96
98
  Usage
97
99
  =====
@@ -237,6 +239,22 @@ Description: =======
237
239
  Changes
238
240
  =======
239
241
 
242
+ 1.6b3 (2016-12-31)
243
+ ------------------
244
+
245
+ Bug fixes:
246
+
247
+ - Level for log messages originating from the GEOS notice handler reduced from
248
+ WARNING to INFO (#447).
249
+ - Permit speedups to be imported again without Numpy (#444).
250
+
251
+ 1.6b2 (2016-12-12)
252
+ ------------------
253
+
254
+ New features:
255
+
256
+ - Add support for GeometryCollection to shape and asShape functions (#422).
257
+
240
258
  1.6b1 (2016-12-12)
241
259
  ------------------
242
260
 
@@ -5,6 +5,7 @@ Shapely
5
5
  .. image:: https://travis-ci.org/Toblerity/Shapely.png?branch=master
6
6
  :target: https://travis-ci.org/Toblerity/Shapely
7
7
 
8
+ .. image:: https://coveralls.io/repos/github/Toblerity/Shapely/badge.svg?branch=master
8
9
  :target: https://coveralls.io/github/Toblerity/Shapely?branch=master
9
10
 
10
11
  Manipulation and analysis of geometric objects in the Cartesian plane.
@@ -32,7 +33,7 @@ Shapely 1.6.x requires
32
33
  * Python >=2.6 (including Python 3.x)
33
34
  * GEOS >=3.3
34
35
 
35
- Installing Shapely (1.6b1)
36
+ Installing Shapely (1.6b2)
36
37
  ==========================
37
38
 
38
39
  Windows users have two good installation options: the wheels at
@@ -45,13 +46,13 @@ Python Package Index with a recent version of pip (8+):
45
46
 
46
47
  .. code-block:: console
47
48
 
48
- $ pip install shapely==1.6b1
49
+ $ pip install shapely==1.6b2
49
50
 
50
51
  A few extra speedups that require Numpy can be had by running
51
52
 
52
53
  .. code-block:: console
53
54
 
54
- $ pip install shapely[vectorized]==1.6b1
55
+ $ pip install shapely[vectorized]==1.6b2
55
56
 
56
57
  If you want to build Shapely from source for compatibility with
57
58
  other modules that depend on GEOS (such as cartopy or osgeo.ogr)
@@ -62,8 +63,8 @@ you may ignore the binary wheels.
62
63
  $ pip install shapely --no-binary shapely
63
64
 
64
65
  Binary wheels are also available for Linux. To get them, use `pip shapely
65
- shapely==1.6b1`. To avoid them, use `pip install shapely --no-binary
66
- shapely==1.6b1`.
66
+ shapely==1.6b2`. To avoid them, use `pip install shapely --no-binary
67
+ shapely==1.6b2`.
67
68
 
68
69
  In other situations, install `geos_c` libs and headers by any means
69
70
  (for example, `brew install geos` on OS X or
@@ -82,8 +83,9 @@ variable, e.g.:
82
83
  .. code-block:: console
83
84
 
84
85
  $ GEOS_CONFIG=/path/to/geos-config pip install shapely
85
- Shapely is also provided by popular Python distributions like Canopy (Enthought)
86
- and Anaconda (Continuum Analytics).
86
+
87
+ Shapely is also provided by popular Python distributions like Canopy
88
+ (Enthought) and Anaconda (Continuum Analytics).
87
89
 
88
90
  Usage
89
91
  =====
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: Shapely
3
- Version: 1.6b1
3
+ Version: 1.6b3
4
4
  Summary: Geometric objects, predicates, and operations
5
5
  Home-page: https://github.com/Toblerity/Shapely
6
6
  Author: Sean Gillies
@@ -13,6 +13,7 @@ Description: =======
13
13
  .. image:: https://travis-ci.org/Toblerity/Shapely.png?branch=master
14
14
  :target: https://travis-ci.org/Toblerity/Shapely
15
15
 
16
+ .. image:: https://coveralls.io/repos/github/Toblerity/Shapely/badge.svg?branch=master
16
17
  :target: https://coveralls.io/github/Toblerity/Shapely?branch=master
17
18
 
18
19
  Manipulation and analysis of geometric objects in the Cartesian plane.
@@ -40,7 +41,7 @@ Description: =======
40
41
  * Python >=2.6 (including Python 3.x)
41
42
  * GEOS >=3.3
42
43
 
43
- Installing Shapely (1.6b1)
44
+ Installing Shapely (1.6b2)
44
45
  ==========================
45
46
 
46
47
  Windows users have two good installation options: the wheels at
@@ -53,13 +54,13 @@ Description: =======
53
54
 
54
55
  .. code-block:: console
55
56
 
56
- $ pip install shapely==1.6b1
57
+ $ pip install shapely==1.6b2
57
58
 
58
59
  A few extra speedups that require Numpy can be had by running
59
60
 
60
61
  .. code-block:: console
61
62
 
62
- $ pip install shapely[vectorized]==1.6b1
63
+ $ pip install shapely[vectorized]==1.6b2
63
64
 
64
65
  If you want to build Shapely from source for compatibility with
65
66
  other modules that depend on GEOS (such as cartopy or osgeo.ogr)
@@ -70,8 +71,8 @@ Description: =======
70
71
  $ pip install shapely --no-binary shapely
71
72
 
72
73
  Binary wheels are also available for Linux. To get them, use `pip shapely
73
- shapely==1.6b1`. To avoid them, use `pip install shapely --no-binary
74
- shapely==1.6b1`.
74
+ shapely==1.6b2`. To avoid them, use `pip install shapely --no-binary
75
+ shapely==1.6b2`.
75
76
 
76
77
  In other situations, install `geos_c` libs and headers by any means
77
78
  (for example, `brew install geos` on OS X or
@@ -90,8 +91,9 @@ Description: =======
90
91
  .. code-block:: console
91
92
 
92
93
  $ GEOS_CONFIG=/path/to/geos-config pip install shapely
93
- Shapely is also provided by popular Python distributions like Canopy (Enthought)
94
- and Anaconda (Continuum Analytics).
94
+
95
+ Shapely is also provided by popular Python distributions like Canopy
96
+ (Enthought) and Anaconda (Continuum Analytics).
95
97
 
96
98
  Usage
97
99
  =====
@@ -237,6 +239,22 @@ Description: =======
237
239
  Changes
238
240
  =======
239
241
 
242
+ 1.6b3 (2016-12-31)
243
+ ------------------
244
+
245
+ Bug fixes:
246
+
247
+ - Level for log messages originating from the GEOS notice handler reduced from
248
+ WARNING to INFO (#447).
249
+ - Permit speedups to be imported again without Numpy (#444).
250
+
251
+ 1.6b2 (2016-12-12)
252
+ ------------------
253
+
254
+ New features:
255
+
256
+ - Add support for GeometryCollection to shape and asShape functions (#422).
257
+
240
258
  1.6b1 (2016-12-12)
241
259
  ------------------
242
260
 
@@ -0,0 +1 @@
1
+ 1.6b3
@@ -1,8 +1,8 @@
1
- [pytest]
1
+ [tool:pytest]
2
2
  testpaths = tests
3
3
 
4
4
  [egg_info]
5
5
  tag_build =
6
- tag_svn_revision = 0
7
6
  tag_date = 0
7
+ tag_svn_revision = 0
8
8
 
@@ -0,0 +1 @@
1
+ __version__ = "1.6b3"
@@ -8,6 +8,7 @@ from .polygon import Polygon, asPolygon
8
8
  from .multipoint import MultiPoint, asMultiPoint
9
9
  from .multilinestring import MultiLineString, asMultiLineString
10
10
  from .multipolygon import MultiPolygon, MultiPolygonAdapter
11
+ from .collection import GeometryCollection
11
12
 
12
13
 
13
14
  def box(minx, miny, maxx, maxy, ccw=True):
@@ -38,6 +39,9 @@ def shape(context):
38
39
  return MultiLineString(ob["coordinates"])
39
40
  elif geom_type == "multipolygon":
40
41
  return MultiPolygon(ob["coordinates"], context_type='geojson')
42
+ elif geom_type == "geometrycollection":
43
+ geoms = [shape(g) for g in ob.get("geometries", [])]
44
+ return GeometryCollection(geoms)
41
45
  else:
42
46
  raise ValueError("Unknown geometry type: %s" % geom_type)
43
47
 
@@ -67,6 +71,9 @@ def asShape(context):
67
71
  return asMultiLineString(ob["coordinates"])
68
72
  elif geom_type == "multipolygon":
69
73
  return MultiPolygonAdapter(ob["coordinates"], context_type='geojson')
74
+ elif geom_type == "geometrycollection":
75
+ geoms = [asShape(g) for g in ob.get("geometries", [])]
76
+ return GeometryCollection(geoms)
70
77
  else:
71
78
  raise ValueError("Unknown geometry type: %s" % geom_type)
72
79
 
@@ -203,35 +203,25 @@ if geos_version >= (3, 1, 0):
203
203
  _lgeos.finishGEOS_r.argtypes = [c_void_p]
204
204
 
205
205
 
206
- def handler(level):
207
- """Error handler
208
-
209
- While this function can take any number of positional arguments when
210
- called from Python and GEOS expects its error handler to accept any
211
- number of arguments (like printf), I'm unable to get ctypes to make
212
- a callback object from this function that will accept any number of
213
- arguments.
214
-
215
- At the moment, functions in the GEOS C API only pass 0 or
216
- 1 arguments to the error handler. We can deal with this, but when if
217
- that changes, Shapely may break.
206
+ def make_logging_callback(func):
207
+ """Error or notice handler callback producr
208
+
209
+ Wraps a logger method, func, as a GEOS callback.
218
210
  """
219
- def callback(fmt, *args):
211
+ def callback(fmt, *fmt_args):
220
212
  fmt = fmt.decode('ascii')
221
213
  conversions = re.findall(r'%.', fmt)
222
- log_vals = []
223
- for spec, arg in zip(conversions, args):
224
- if spec == '%s' and arg is not None:
225
- log_vals.append(string_at(arg).decode('ascii'))
226
- else:
227
- LOG.error("An error occurred, but the format string "
228
- "'%s' could not be converted.", fmt)
229
- return
230
- getattr(LOG, level)(fmt, *log_vals)
214
+ args = [
215
+ string_at(arg).decode('ascii')
216
+ for spec, arg in zip(conversions, fmt_args)
217
+ if spec == '%s' and arg is not None]
218
+
219
+ func(fmt, *args)
220
+
231
221
  return callback
232
222
 
233
- error_handler = handler('error')
234
- notice_handler = handler('warning')
223
+ error_handler = make_logging_callback(LOG.error)
224
+ notice_handler = make_logging_callback(LOG.info)
235
225
 
236
226
  error_h = EXCEPTION_HANDLER_FUNCTYPE(error_handler)
237
227
  notice_h = EXCEPTION_HANDLER_FUNCTYPE(notice_handler)
@@ -4,6 +4,9 @@ from shapely.geometry import linestring, polygon
4
4
  from shapely import coords
5
5
  import shapely.affinity
6
6
 
7
+ from ..ftools import wraps
8
+
9
+
7
10
  try:
8
11
  from shapely.speedups import _speedups
9
12
  available = True
@@ -14,7 +17,7 @@ except ImportError:
14
17
  # TODO: This does not appear to do anything useful
15
18
  import_error_msg = sys.exc_info()[1]
16
19
 
17
- from ..ftools import wraps
20
+
18
21
  def method_wrapper(f):
19
22
  def wrapper(*args, **kwargs):
20
23
  return f(*args, **kwargs)
@@ -26,6 +29,7 @@ _orig = {}
26
29
  # keep track of whether speedups are enabled
27
30
  enabled = False
28
31
 
32
+
29
33
  def enable():
30
34
  """Enable Cython speedups
31
35
 
@@ -46,23 +50,25 @@ def enable():
46
50
  if not available:
47
51
  warnings.warn("shapely.speedups not available", RuntimeWarning)
48
52
  return
49
-
53
+
50
54
  if _orig:
51
55
  return
52
-
56
+
53
57
  _orig['CoordinateSequence.ctypes'] = coords.CoordinateSequence.ctypes
54
58
  coords.CoordinateSequence.ctypes = property(_speedups.coordseq_ctypes)
55
-
59
+
56
60
  _orig['CoordinateSequence.__iter__'] = coords.CoordinateSequence.__iter__
57
- coords.CoordinateSequence.__iter__ = method_wrapper(_speedups.coordseq_iter)
61
+ coords.CoordinateSequence.__iter__ = method_wrapper(
62
+ _speedups.coordseq_iter)
58
63
 
59
64
  _orig['geos_linestring_from_py'] = linestring.geos_linestring_from_py
60
65
  linestring.geos_linestring_from_py = _speedups.geos_linestring_from_py
61
66
 
62
- _orig['geos_linearring_from_py'] = polygon.geos_linearring_from_py
67
+ _orig['geos_linearring_from_py'] = polygon.geos_linearring_from_py
63
68
  polygon.geos_linearring_from_py = _speedups.geos_linearring_from_py
64
-
69
+
65
70
  _orig['affine_transform'] = shapely.affinity.affine_transform
71
+
66
72
  # copy docstring from original function
67
73
  def affine_transform(geom, matrix):
68
74
  return _speedups.affine_transform(geom, matrix)
@@ -72,6 +78,7 @@ def enable():
72
78
  global enabled
73
79
  enabled = True
74
80
 
81
+
75
82
  def disable():
76
83
  """Disable Cython speedups
77
84
  """