You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by uw...@apache.org on 2017/07/10 15:00:46 UTC

arrow git commit: ARROW-1201: [Python] Incomplete Python types cause a core dump when repr-ing

Repository: arrow
Updated Branches:
  refs/heads/master 7870804e0 -> f73c1c3bb


ARROW-1201: [Python] Incomplete Python types cause a core dump when repr-ing

Author: Phillip Cloud <cp...@gmail.com>

Closes #826 from cpcloud/ARROW-1201 and squashes the following commits:

fbf93c3 [Phillip Cloud] ARROW-1201: [Python] Incomplete Python types cause a core dump when repr-ing


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/f73c1c3b
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/f73c1c3b
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/f73c1c3b

Branch: refs/heads/master
Commit: f73c1c3bb69c2edf67561569ce5f0a8ae79462db
Parents: 7870804
Author: Phillip Cloud <cp...@gmail.com>
Authored: Mon Jul 10 17:00:42 2017 +0200
Committer: Uwe L. Korn <uw...@xhochy.com>
Committed: Mon Jul 10 17:00:42 2017 +0200

----------------------------------------------------------------------
 python/pyarrow/__init__.py         | 9 +--------
 python/pyarrow/array.pxi           | 8 ++++++++
 python/pyarrow/tests/test_array.py | 6 ++++++
 3 files changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/f73c1c3b/python/pyarrow/__init__.py
----------------------------------------------------------------------
diff --git a/python/pyarrow/__init__.py b/python/pyarrow/__init__.py
index 771a516..4310954 100644
--- a/python/pyarrow/__init__.py
+++ b/python/pyarrow/__init__.py
@@ -33,13 +33,6 @@ from pyarrow.lib import (null, bool_,
                          float16, float32, float64,
                          binary, string, decimal,
                          list_, struct, dictionary, field,
-                         DataType,
-                         DecimalType,
-                         DictionaryType,
-                         FixedSizeBinaryType,
-                         TimestampType,
-                         Time32Type,
-                         Time64Type,
                          Field,
                          Schema,
                          schema,
@@ -60,7 +53,7 @@ from pyarrow.lib import (null, bool_,
                          Date32Array, Date64Array,
                          TimestampArray, Time32Array, Time64Array,
                          DecimalArray, StructArray,
-                         ArrayValue, Scalar, NA, NAType,
+                         ArrayValue, Scalar, NA,
                          BooleanValue,
                          Int8Value, Int16Value, Int32Value, Int64Value,
                          UInt8Value, UInt16Value, UInt32Value, UInt64Value,

http://git-wip-us.apache.org/repos/asf/arrow/blob/f73c1c3b/python/pyarrow/array.pxi
----------------------------------------------------------------------
diff --git a/python/pyarrow/array.pxi b/python/pyarrow/array.pxi
index 6a49256..9e6ac8d 100644
--- a/python/pyarrow/array.pxi
+++ b/python/pyarrow/array.pxi
@@ -52,6 +52,14 @@ cdef class DataType:
         self.type = type.get()
 
     def __str__(self):
+        if self.type is NULL:
+            raise TypeError(
+                '{} is incomplete. The correct way to construct types is '
+                'through public API functions named '
+                'pyarrow.int64, pyarrow.list_, etc.'.format(
+                    type(self).__name__
+                )
+            )
         return frombytes(self.type.ToString())
 
     def __repr__(self):

http://git-wip-us.apache.org/repos/asf/arrow/blob/f73c1c3b/python/pyarrow/tests/test_array.py
----------------------------------------------------------------------
diff --git a/python/pyarrow/tests/test_array.py b/python/pyarrow/tests/test_array.py
index 7c91785..af21741 100644
--- a/python/pyarrow/tests/test_array.py
+++ b/python/pyarrow/tests/test_array.py
@@ -189,3 +189,9 @@ def test_dictionary_with_pandas():
                                            categories=dictionary)
 
     tm.assert_series_equal(pd.Series(pandas2), pd.Series(ex_pandas2))
+
+
+def test_simple_type_construction():
+    result = pa.lib.TimestampType()
+    with pytest.raises(TypeError):
+        str(result)