shapely 1.4.0__tar.gz → 1.4.2__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 (105) hide show
  1. {Shapely-1.4.0 → Shapely-1.4.2}/CHANGES.txt +8 -0
  2. {Shapely-1.4.0/Shapely.egg-info → Shapely-1.4.2}/PKG-INFO +9 -1
  3. {Shapely-1.4.0 → Shapely-1.4.2/Shapely.egg-info}/PKG-INFO +9 -1
  4. Shapely-1.4.2/VERSION.txt +1 -0
  5. {Shapely-1.4.0 → Shapely-1.4.2}/docs/manual.rst +1 -1
  6. Shapely-1.4.2/shapely/__init__.py +1 -0
  7. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/_geos.pxi +1 -1
  8. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/ctypes_declarations.py +3 -5
  9. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/base.py +15 -3
  10. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/multilinestring.py +6 -1
  11. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geos.py +4 -4
  12. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/impl.py +5 -1
  13. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/speedups/_speedups.c +2954 -2677
  14. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_linestring.py +10 -0
  15. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_multilinestring.py +18 -1
  16. Shapely-1.4.0/VERSION.txt +0 -1
  17. Shapely-1.4.0/shapely/__init__.py +0 -1
  18. {Shapely-1.4.0 → Shapely-1.4.2}/CREDITS.txt +0 -0
  19. {Shapely-1.4.0 → Shapely-1.4.2}/LICENSE.txt +0 -0
  20. {Shapely-1.4.0 → Shapely-1.4.2}/README.rst +0 -0
  21. {Shapely-1.4.0 → Shapely-1.4.2}/Shapely.egg-info/SOURCES.txt +0 -0
  22. {Shapely-1.4.0 → Shapely-1.4.2}/Shapely.egg-info/dependency_links.txt +0 -0
  23. {Shapely-1.4.0 → Shapely-1.4.2}/Shapely.egg-info/top_level.txt +0 -0
  24. {Shapely-1.4.0 → Shapely-1.4.2}/docs/design.rst +0 -0
  25. {Shapely-1.4.0 → Shapely-1.4.2}/docs/index.rst +0 -0
  26. {Shapely-1.4.0 → Shapely-1.4.2}/docs/project.rst +0 -0
  27. {Shapely-1.4.0 → Shapely-1.4.2}/setup.cfg +0 -0
  28. {Shapely-1.4.0 → Shapely-1.4.2}/setup.py +0 -0
  29. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/affinity.py +0 -0
  30. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/algorithms/__init__.py +0 -0
  31. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/algorithms/cga.py +0 -0
  32. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/coords.py +0 -0
  33. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/__init__.py +0 -0
  34. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/dissolve.py +0 -0
  35. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/geoms.py +0 -0
  36. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/intersect.py +0 -0
  37. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/ftools.py +0 -0
  38. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/__init__.py +0 -0
  39. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/collection.py +0 -0
  40. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/geo.py +0 -0
  41. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/linestring.py +0 -0
  42. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/multipoint.py +0 -0
  43. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/multipolygon.py +0 -0
  44. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/point.py +0 -0
  45. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/polygon.py +0 -0
  46. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/proxy.py +0 -0
  47. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/iterops.py +0 -0
  48. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/linref.py +0 -0
  49. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/ops.py +0 -0
  50. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/predicates.py +0 -0
  51. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/prepared.py +0 -0
  52. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/speedups/__init__.py +0 -0
  53. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/strtree.py +0 -0
  54. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/topology.py +0 -0
  55. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/validation.py +0 -0
  56. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/vectorized/__init__.py +0 -0
  57. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/vectorized/_vectorized.c +0 -0
  58. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/vectorized/_vectorized.pyx +0 -0
  59. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/wkb.py +0 -0
  60. {Shapely-1.4.0 → Shapely-1.4.2}/shapely/wkt.py +0 -0
  61. {Shapely-1.4.0 → Shapely-1.4.2}/tests/__init__.py +0 -0
  62. {Shapely-1.4.0 → Shapely-1.4.2}/tests/binascii_hex.txt +0 -0
  63. {Shapely-1.4.0 → Shapely-1.4.2}/tests/conftest.py +0 -0
  64. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_affinity.py +0 -0
  65. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_box.py +0 -0
  66. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_cga.py +0 -0
  67. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_collection.py +0 -0
  68. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_delaunay.py +0 -0
  69. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_delegated.py +0 -0
  70. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_dlls.py +0 -0
  71. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_doctests.py +0 -0
  72. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_emptiness.py +0 -0
  73. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_equality.py +0 -0
  74. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_geointerface.py +0 -0
  75. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_geomseq.py +0 -0
  76. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_getitem.py +0 -0
  77. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_invalid_geometries.py +0 -0
  78. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_iterops.py +0 -0
  79. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_linear_referencing.py +0 -0
  80. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_linemerge.py +0 -0
  81. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_locale.py +0 -0
  82. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_mapping.py +0 -0
  83. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_multipoint.py +0 -0
  84. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_multipolygon.py +0 -0
  85. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_ndarrays.py +0 -0
  86. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_nearest.py +0 -0
  87. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_operations.py +0 -0
  88. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_operators.py +0 -0
  89. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_persist.py +0 -0
  90. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_pickle.py +0 -0
  91. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_point.py +0 -0
  92. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_polygon.py +0 -0
  93. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_polygonize.py +0 -0
  94. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_predicates.py +0 -0
  95. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_prepared.py +0 -0
  96. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_products_z.py +0 -0
  97. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_singularity.py +0 -0
  98. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_strtree.py +0 -0
  99. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_styles.py +0 -0
  100. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_transform.py +0 -0
  101. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_union.py +0 -0
  102. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_validation.py +0 -0
  103. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_vectorized.py +0 -0
  104. {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_xy.py +0 -0
  105. {Shapely-1.4.0 → Shapely-1.4.2}/tests/threading_test.py +0 -0
@@ -1,6 +1,14 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 1.4.2 (2014-09-29)
5
+ ------------------
6
+ - Fix bungled 1.4.1 release (#176).
7
+
8
+ 1.4.1 (2014-09-23)
9
+ ------------------
10
+ - Return of support for GEOS 3.2 (#176, #178).
11
+
4
12
  1.4.0 (2014-09-08)
5
13
  ------------------
6
14
  - SVG representations for IPython's inline image protocol.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: Shapely
3
- Version: 1.4.0
3
+ Version: 1.4.2
4
4
  Summary: Geometric objects, predicates, and operations
5
5
  Home-page: https://github.com/Toblerity/Shapely
6
6
  Author: Sean Gillies
@@ -248,6 +248,14 @@ Description: =======
248
248
  Changes
249
249
  =======
250
250
 
251
+ 1.4.2 (2014-09-29)
252
+ ------------------
253
+ - Fix bungled 1.4.1 release (#176).
254
+
255
+ 1.4.1 (2014-09-23)
256
+ ------------------
257
+ - Return of support for GEOS 3.2 (#176, #178).
258
+
251
259
  1.4.0 (2014-09-08)
252
260
  ------------------
253
261
  - SVG representations for IPython's inline image protocol.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: Shapely
3
- Version: 1.4.0
3
+ Version: 1.4.2
4
4
  Summary: Geometric objects, predicates, and operations
5
5
  Home-page: https://github.com/Toblerity/Shapely
6
6
  Author: Sean Gillies
@@ -248,6 +248,14 @@ Description: =======
248
248
  Changes
249
249
  =======
250
250
 
251
+ 1.4.2 (2014-09-29)
252
+ ------------------
253
+ - Fix bungled 1.4.1 release (#176).
254
+
255
+ 1.4.1 (2014-09-23)
256
+ ------------------
257
+ - Return of support for GEOS 3.2 (#176, #178).
258
+
251
259
  1.4.0 (2014-09-08)
252
260
  ------------------
253
261
  - SVG representations for IPython's inline image protocol.
@@ -0,0 +1 @@
1
+ 1.4.2
@@ -717,7 +717,7 @@ instances, thereby making copies.
717
717
 
718
718
  .. plot:: code/multipolygon.py
719
719
 
720
- Figure 7. On the right, a `valid` `MultiPolygon` with 2 members, and on the
720
+ Figure 7. On the left, a `valid` `MultiPolygon` with 2 members, and on the
721
721
  right, a `MultiPolygon` that is invalid because its members touch at an
722
722
  infinite number of points (along a line).
723
723
 
@@ -0,0 +1 @@
1
+ __version__ = "1.4.2"
@@ -26,7 +26,6 @@ cdef extern from "geos_c.h":
26
26
  GEOSGeometry *GEOSGeom_createLinearRing_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil
27
27
  GEOSGeometry *GEOSGeom_clone_r(GEOSContextHandle_t, GEOSGeometry *) nogil
28
28
  GEOSCoordSequence *GEOSCoordSeq_clone_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil
29
- int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t, GEOSGeometry *) nogil
30
29
 
31
30
  void GEOSGeom_destroy_r(GEOSContextHandle_t, GEOSGeometry *) nogil
32
31
 
@@ -41,6 +40,7 @@ cdef extern from "geos_c.h":
41
40
  char GEOSPreparedTouches_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil
42
41
  char GEOSPreparedWithin_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil
43
42
 
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
46
 
@@ -276,8 +276,9 @@ def prototype(lgeos, geos_version):
276
276
  lgeos.GEOSisRing.restype = c_byte
277
277
  lgeos.GEOSisRing.argtypes = [c_void_p]
278
278
 
279
- lgeos.GEOSisClosed.restype = c_byte
280
- lgeos.GEOSisClosed.argtypes = [c_void_p]
279
+ if geos_version >= (3, 3, 0):
280
+ lgeos.GEOSisClosed.restype = c_byte
281
+ lgeos.GEOSisClosed.argtypes = [c_void_p]
281
282
 
282
283
  lgeos.GEOSHasZ.restype = c_byte
283
284
  lgeos.GEOSHasZ.argtypes = [c_void_p]
@@ -357,9 +358,6 @@ def prototype(lgeos, geos_version):
357
358
  lgeos.GEOSGeom_getDimensions.restype = c_int
358
359
  lgeos.GEOSGeom_getDimensions.argtypes = [c_void_p]
359
360
 
360
- lgeos.GEOSGeom_getCoordinateDimension.restype = c_int
361
- lgeos.GEOSGeom_getCoordinateDimension.argtypes = [c_void_p]
362
-
363
361
  '''
364
362
  Misc functions
365
363
  '''
@@ -129,7 +129,9 @@ def geos_geom_from_py(ob, create_func=None):
129
129
  cs = lgeos.GEOSGeom_getCoordSeq(ob._geom)
130
130
  cs = lgeos.GEOSCoordSeq_clone(cs)
131
131
  geom = create_func(cs)
132
- N = lgeos.GEOSGeom_getCoordinateDimension(geom)
132
+
133
+ N = ob._ndim
134
+
133
135
  return geom, N
134
136
 
135
137
  def exceptNull(func):
@@ -558,8 +560,18 @@ class BaseGeometry(object):
558
560
 
559
561
  @property
560
562
  def is_closed(self):
561
- """True if the geometry is closed, else False"""
562
- return bool(self.impl['is_closed'](self))
563
+ """True if the geometry is closed, else False
564
+
565
+ Applicable only to 1-D geometries."""
566
+ if self.geom_type == 'LinearRing':
567
+ return True
568
+ elif self.geom_type == 'LineString':
569
+ if 'is_closed' in self.impl:
570
+ return bool(self.impl['is_closed'](self))
571
+ else:
572
+ return self.coords[0] == self.coords[-1]
573
+ else:
574
+ return False
563
575
 
564
576
  @property
565
577
  def is_simple(self):
@@ -130,7 +130,12 @@ def geos_multilinestring_from_py(ob):
130
130
  for l in range(L):
131
131
  geom, ndims = linestring.geos_linestring_from_py(array['data'][l])
132
132
  subs[i] = cast(geom, c_void_p)
133
- N = lgeos.GEOSGeom_getCoordinateDimension(subs[0])
133
+
134
+ if lgeos.GEOSHasZ(subs[0]):
135
+ N = 3
136
+ else:
137
+ N = 2
138
+
134
139
  except (NotImplementedError, AttributeError):
135
140
  obs = getattr(ob, 'geoms', ob)
136
141
  L = len(obs)
@@ -545,7 +545,6 @@ class LGEOS300(LGEOSBase):
545
545
  self.GEOSisValid,
546
546
  self.GEOSisSimple,
547
547
  self.GEOSisRing,
548
- self.GEOSisClosed,
549
548
  self.GEOSHasZ):
550
549
  pred.errcheck = errcheck_predicate
551
550
 
@@ -561,7 +560,6 @@ class LGEOS300(LGEOSBase):
561
560
  self.methods['has_z'] = self.GEOSHasZ
562
561
  self.methods['is_empty'] = self.GEOSisEmpty
563
562
  self.methods['is_ring'] = self.GEOSisRing
564
- self.methods['is_closed'] = self.GEOSisClosed
565
563
  self.methods['is_simple'] = self.GEOSisSimple
566
564
  self.methods['is_valid'] = self.GEOSisValid
567
565
  self.methods['disjoint'] = self.GEOSDisjoint
@@ -622,7 +620,6 @@ class LGEOS310(LGEOSBase):
622
620
  self.GEOSisValid,
623
621
  self.GEOSisSimple,
624
622
  self.GEOSisRing,
625
- self.GEOSisClosed,
626
623
  self.GEOSHasZ):
627
624
  pred.func.errcheck = errcheck_predicate
628
625
 
@@ -640,7 +637,6 @@ class LGEOS310(LGEOSBase):
640
637
  self.methods['has_z'] = self.GEOSHasZ
641
638
  self.methods['is_empty'] = self.GEOSisEmpty
642
639
  self.methods['is_ring'] = self.GEOSisRing
643
- self.methods['is_closed'] = self.GEOSisClosed
644
640
  self.methods['is_simple'] = self.GEOSisSimple
645
641
  self.methods['is_valid'] = self.GEOSisValid
646
642
  self.methods['disjoint'] = self.GEOSDisjoint
@@ -713,7 +709,11 @@ class LGEOS330(LGEOS320):
713
709
  attr.__name__ = func.__name__
714
710
  setattr(self, key, attr)
715
711
 
712
+ for pred in (self.GEOSisClosed,):
713
+ pred.func.errcheck = errcheck_predicate
714
+
716
715
  self.methods['unary_union'] = self.GEOSUnaryUnion
716
+ self.methods['is_closed'] = self.GEOSisClosed
717
717
  self.methods['cascaded_union'] = self.methods['unary_union']
718
718
 
719
719
 
@@ -71,7 +71,6 @@ IMPL300 = {
71
71
  'has_z': (UnaryPredicate, 'has_z'),
72
72
  'is_empty': (UnaryPredicate, 'is_empty'),
73
73
  'is_ring': (UnaryPredicate, 'is_ring'),
74
- 'is_closed': (UnaryPredicate, 'is_closed'),
75
74
  'is_simple': (UnaryPredicate, 'is_simple'),
76
75
  'is_valid': (UnaryPredicate, 'is_valid'),
77
76
  #
@@ -113,6 +112,9 @@ IMPL320 = {
113
112
  'buffer_with_style': (UnaryTopologicalOp, 'buffer_with_style'),
114
113
  }
115
114
 
115
+ IMPL330 = {
116
+ 'is_closed': (UnaryPredicate, 'is_closed')}
117
+
116
118
  def impl_items(defs):
117
119
  return [(k, v[0](v[1])) for k, v in list(defs.items())]
118
120
 
@@ -123,5 +125,7 @@ if lgeos.geos_version >= (3, 1, 1):
123
125
  imp.update(impl_items(IMPL311))
124
126
  if lgeos.geos_version >= (3, 2, 0):
125
127
  imp.update(impl_items(IMPL320))
128
+ if lgeos.geos_version >= (3, 3, 0):
129
+ imp.update(impl_items(IMPL330))
126
130
 
127
131
  DefaultImplementation = imp