[Python-modules-commits] [python-feather-format] 02/14: Import python-feather-format_0.3.0.orig.tar.gz

ChangZhuo Chen czchen at moszumanska.debian.org
Thu Oct 13 10:54:35 UTC 2016


This is an automated email from the git hooks/post-receive script.

czchen pushed a commit to tag debian/0.3.0+dfsg1-1
in repository python-feather-format.

commit 4d69d8183408ce03a02a5a7a82eea11d93f3d077
Author: ChangZhuo Chen (陳昌倬) <czchen at debian.org>
Date:   Thu Oct 13 18:22:55 2016 +0800

    Import python-feather-format_0.3.0.orig.tar.gz
---
 PKG-INFO                               |   20 +-
 README.md                              |   19 +-
 feather/api.py                         |   24 +-
 feather/compat.py                      |   18 +
 feather/ext.cpp                        | 3636 +++++++++++++++++++-------------
 feather/ext.pyx                        |   87 +-
 feather/interop.h                      |    6 +-
 feather/libfeather.pxd                 |   14 +-
 feather/tests/test_reader.py           |   28 +-
 feather/version.py                     |    2 +-
 feather_format.egg-info/PKG-INFO       |   20 +-
 feather_format.egg-info/SOURCES.txt    |    9 +
 setup.py                               |    7 +-
 src/feather/CMakeLists.txt             |   22 +
 src/feather/api.h                      |    5 +
 src/feather/buffer.cc                  |    2 +-
 src/feather/buffer.h                   |    3 +-
 src/feather/buffer.o                   |  Bin 0 -> 254080 bytes
 src/feather/common.h                   |   18 +-
 src/feather/{api.h => compatibility.h} |   35 +-
 src/feather/feather-c.cc               |    3 +
 src/feather/feather-c.o                |  Bin 0 -> 411016 bytes
 src/feather/io.cc                      |  474 ++++-
 src/feather/io.h                       |   82 +-
 src/feather/io.o                       |  Bin 0 -> 715808 bytes
 src/feather/metadata.cc                |   35 +-
 src/feather/metadata.h                 |    5 +-
 src/feather/metadata.o                 |  Bin 0 -> 1659592 bytes
 src/feather/reader.cc                  |   30 +-
 src/feather/reader.h                   |    2 +
 src/feather/reader.o                   |  Bin 0 -> 849848 bytes
 src/feather/status.cc                  |    4 +-
 src/feather/status.o                   |  Bin 0 -> 69808 bytes
 src/feather/tests/c-api-test.cc        |    6 +-
 src/feather/tests/io-test.cc           |   48 +-
 src/feather/tests/metadata-test.cc     |    3 +-
 src/feather/tests/test-common.h        |    4 +-
 src/feather/tests/writer-test.cc       |   12 +-
 src/feather/types.o                    |  Bin 0 -> 56864 bytes
 src/feather/writer.cc                  |   36 +-
 src/feather/writer.o                   |  Bin 0 -> 360264 bytes
 41 files changed, 3016 insertions(+), 1703 deletions(-)

diff --git a/PKG-INFO b/PKG-INFO
index 411aa7d..89dca38 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: feather-format
-Version: 0.2.0
+Version: 0.3.0
 Summary: Python interface to the Apache Arrow-based Feather File Format
 Home-page: http://github.com/wesm/feather
 Author: Wes McKinney
@@ -16,13 +16,28 @@ Description: ## Python interface to the Apache Arrow-based Feather File Format
         pip install feather-format
         ```
         
+        From [conda-forge][1]:
+        
+        ```shell
+        conda install feather-format -c conda-forge
+        ```
+        
         #### Mac notes
         
         Anaconda uses a default 10.5 deployment target which does not have C++11
         properly available. This can be fixed by setting:
         
         ```
-        export MACOSX_DEPLOYMENT_TARGET=10.10
+        export MACOSX_DEPLOYMENT_TARGET=10.9
+        ```
+        
+        Deployments targets as early as 10.7 can be used if the compiler supports
+        C++11 and the correct mode is selected. For example using the following:
+        
+        ```
+        export MACOSX_DEPLOYMENT_TARGET=10.7
+        export CFLAGS="${CXXFLAGS} -stdlib=libc++ -std=c++11"
+        export CXXFLAGS="${CXXFLAGS} -stdlib=libc++ -std=c++11"
         ```
         
         This may be necessary in some other OS X environments.
@@ -69,6 +84,7 @@ Description: ## Python interface to the Apache Arrow-based Feather File Format
         * Row indexes
         * Object-type columns with non-homogeneous data
         
+        [1]: https://conda-forge.github.io
 Platform: UNKNOWN
 Classifier: Development Status :: 3 - Alpha
 Classifier: Environment :: Console
diff --git a/README.md b/README.md
index a916ea0..e67fa6a 100644
--- a/README.md
+++ b/README.md
@@ -8,13 +8,28 @@ Feather efficiently stores pandas DataFrame objects on disk.
 pip install feather-format
 ```
 
+From [conda-forge][1]:
+
+```shell
+conda install feather-format -c conda-forge
+```
+
 #### Mac notes
 
 Anaconda uses a default 10.5 deployment target which does not have C++11
 properly available. This can be fixed by setting:
 
 ```
-export MACOSX_DEPLOYMENT_TARGET=10.10
+export MACOSX_DEPLOYMENT_TARGET=10.9
+```
+
+Deployments targets as early as 10.7 can be used if the compiler supports
+C++11 and the correct mode is selected. For example using the following:
+
+```
+export MACOSX_DEPLOYMENT_TARGET=10.7
+export CFLAGS="${CXXFLAGS} -stdlib=libc++ -std=c++11"
+export CXXFLAGS="${CXXFLAGS} -stdlib=libc++ -std=c++11"
 ```
 
 This may be necessary in some other OS X environments.
@@ -60,3 +75,5 @@ Some features of pandas are not supported in Feather:
 * Non-string column names
 * Row indexes
 * Object-type columns with non-homogeneous data
+
+[1]: https://conda-forge.github.io
\ No newline at end of file
diff --git a/feather/api.py b/feather/api.py
index a04e449..dca508d 100644
--- a/feather/api.py
+++ b/feather/api.py
@@ -15,11 +15,12 @@
 import six
 from distutils.version import LooseVersion
 import pandas as pd
-if LooseVersion(pd.__version__) < '0.17.0':
-    raise ImportError("feather requires pandas >= 0.17.0")
 
 import feather.ext as ext
 
+if LooseVersion(pd.__version__) < '0.17.0':
+    raise ImportError("feather requires pandas >= 0.17.0")
+
 
 def write_dataframe(df, path):
     '''
@@ -43,19 +44,32 @@ def read_dataframe(path, columns=None):
     """
     Read a pandas.DataFrame from Feather format
 
+    Parameters
+    ----------
+    path : string, path to read from
+    columns : sequence, optional
+        Only read a specific set of columns. If not provided, all columns are
+        read
+
     Returns
     -------
     df : pandas.DataFrame
     """
     reader = ext.FeatherReader(path)
 
+    if columns is not None:
+        columns = set(columns)
+
     # TODO(wesm): pipeline conversion to Arrow memory layout
     data = {}
     names = []
     for i in range(reader.num_columns):
-        name, arr = reader.read_array(i)
-        data[name] = arr
-        names.append(name)
+        col = reader.get_column(i)
+        name = col.name
+        if columns is None or name in columns:
+            arr = col.read()
+            data[name] = arr
+            names.append(name)
 
     # TODO(wesm):
     return pd.DataFrame(data, columns=names)
diff --git a/feather/compat.py b/feather/compat.py
index 9d78cd2..08522be 100644
--- a/feather/compat.py
+++ b/feather/compat.py
@@ -83,6 +83,24 @@ else:
         return o.decode('utf8')
 
 
+def encode_file_path(path):
+    import os
+    # Windows requires utf-16le encoding for unicode file names
+    if isinstance(path, unicode_type):
+        if os.name == 'nt':
+            # try:
+            #     encoded_path = path.encode('ascii')
+            # except:
+            encoded_path = path.encode('utf-16le')
+        else:
+            # POSIX systems can handle utf-8
+            encoded_path = path.encode('utf-8')
+    else:
+        encoded_path = path
+
+    return encoded_path
+
+
 def guid():
     from uuid import uuid4
     guid = uuid4()
diff --git a/feather/ext.cpp b/feather/ext.cpp
index 5176331..2414081 100644
--- a/feather/ext.cpp
+++ b/feather/ext.cpp
@@ -1,23 +1,23 @@
-/* Generated by Cython 0.23.4 */
+/* Generated by Cython 0.24 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "depends": [
-            "/home/wesm/anaconda3/envs/py27/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h", 
-            "/home/wesm/anaconda3/envs/py27/lib/python2.7/site-packages/numpy/core/include/numpy/ufuncobject.h", 
-            "/home/wesm/code/feather/python/src/feather/api.h", 
+            "/home/wesm/anaconda3/lib/python3.5/site-packages/numpy/core/include/numpy/arrayobject.h",
+            "/home/wesm/anaconda3/lib/python3.5/site-packages/numpy/core/include/numpy/ufuncobject.h",
+            "/home/wesm/code/feather/python/src/feather/api.h",
             "feather/interop.h"
-        ], 
+        ],
         "extra_compile_args": [
-            "-std=c++11", 
+            "-std=c++11",
             "-O3"
-        ], 
+        ],
         "include_dirs": [
-            "feather", 
-            "/home/wesm/anaconda3/envs/py27/lib/python2.7/site-packages/numpy/core/include", 
+            "feather",
+            "/home/wesm/anaconda3/lib/python3.5/site-packages/numpy/core/include",
             "/home/wesm/code/feather/python/src"
-        ], 
+        ],
         "language": "c++"
     }
 }
@@ -30,10 +30,10 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
     #error Cython requires Python 2.6+ or Python 3.2+.
 #else
-#define CYTHON_ABI "0_23_4"
+#define CYTHON_ABI "0_24"
 #include <stddef.h>
 #ifndef offsetof
-#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
 #endif
 #if !defined(WIN32) && !defined(MS_WINDOWS)
   #ifndef __stdcall
@@ -59,17 +59,23 @@ END: Cython Metadata */
   #define Py_HUGE_VAL HUGE_VAL
 #endif
 #ifdef PYPY_VERSION
-#define CYTHON_COMPILING_IN_PYPY 1
-#define CYTHON_COMPILING_IN_CPYTHON 0
+  #define CYTHON_COMPILING_IN_PYPY 1
+  #define CYTHON_COMPILING_IN_CPYTHON 0
 #else
-#define CYTHON_COMPILING_IN_PYPY 0
-#define CYTHON_COMPILING_IN_CPYTHON 1
+  #define CYTHON_COMPILING_IN_PYPY 0
+  #define CYTHON_COMPILING_IN_CPYTHON 1
 #endif
 #if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
-#define CYTHON_USE_PYLONG_INTERNALS 1
+  #define CYTHON_USE_PYLONG_INTERNALS 1
+#endif
+#if CYTHON_USE_PYLONG_INTERNALS
+  #include "longintrepr.h"
+  #undef SHIFT
+  #undef BASE
+  #undef MASK
 #endif
 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
-#define Py_OptimizeFlag 0
+  #define Py_OptimizeFlag 0
 #endif
 #define __PYX_BUILD_PY_SSIZE_T "n"
 #define CYTHON_FORMAT_SSIZE_T "z"
@@ -105,6 +111,7 @@ END: Cython Metadata */
   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
 #else
   #define CYTHON_PEP393_ENABLED 0
   #define __Pyx_PyUnicode_READY(op)       (0)
@@ -113,6 +120,7 @@ END: Cython Metadata */
   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
 #endif
 #if CYTHON_COMPILING_IN_PYPY
   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
@@ -125,6 +133,14 @@ END: Cython Metadata */
 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
   #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
 #endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
+  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
+  #define PyObject_Malloc(s)   PyMem_Malloc(s)
+  #define PyObject_Free(p)     PyMem_Free(p)
+  #define PyObject_Realloc(p)  PyMem_Realloc(p)
+#endif
 #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
 #if PY_MAJOR_VERSION >= 3
@@ -132,6 +148,9 @@ END: Cython Metadata */
 #else
   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
 #endif
+#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
+  #define PyObject_ASCII(o)            PyObject_Repr(o)
+#endif
 #if PY_MAJOR_VERSION >= 3
   #define PyBaseString_Type            PyUnicode_Type
   #define PyStringObject               PyUnicodeObject
@@ -250,6 +269,11 @@ static CYTHON_INLINE float __PYX_NAN() {
 #endif
 
 
+#define __PYX_ERR(f_index, lineno, Ln_error) \
+{ \
+  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
+}
+
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
@@ -313,7 +337,7 @@ static CYTHON_INLINE float __PYX_NAN() {
 #  define CYTHON_NCP_UNUSED CYTHON_UNUSED
 # endif
 #endif
-typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
+typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
@@ -387,7 +411,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
 #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
 #if CYTHON_COMPILING_IN_CPYTHON
@@ -396,6 +420,12 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
 #endif
 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+#if PY_MAJOR_VERSION >= 3
+#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
+#else
+#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
+#endif
+#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
 static int __Pyx_sys_getdefaultencoding_not_ascii;
 static int __Pyx_init_sys_getdefaultencoding_params(void) {
@@ -486,11 +516,13 @@ static PyObject *__pyx_d;
 static PyObject *__pyx_b;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
+static PyObject *__pyx_empty_unicode;
 static int __pyx_lineno;
 static int __pyx_clineno = 0;
 static const char * __pyx_cfilenm= __FILE__;
 static const char *__pyx_filename;
 
+/* None.proto */
 #if !defined(CYTHON_CCOMPLEX)
   #if defined(__cplusplus)
     #define CYTHON_CCOMPLEX 1
@@ -522,7 +554,7 @@ static const char *__pyx_f[] = {
   "complex.pxd",
 };
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":725
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":725
  * # in Cython to enable them only on the right systems.
  * 
  * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
@@ -531,7 +563,7 @@ static const char *__pyx_f[] = {
  */
 typedef npy_int8 __pyx_t_5numpy_int8_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":726
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":726
  * 
  * ctypedef npy_int8       int8_t
  * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
@@ -540,7 +572,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
  */
 typedef npy_int16 __pyx_t_5numpy_int16_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":727
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":727
  * ctypedef npy_int8       int8_t
  * ctypedef npy_int16      int16_t
  * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
@@ -549,7 +581,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
  */
 typedef npy_int32 __pyx_t_5numpy_int32_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":728
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":728
  * ctypedef npy_int16      int16_t
  * ctypedef npy_int32      int32_t
  * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
@@ -558,7 +590,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
  */
 typedef npy_int64 __pyx_t_5numpy_int64_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":732
  * #ctypedef npy_int128     int128_t
  * 
  * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
@@ -567,7 +599,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
  */
 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":733
  * 
  * ctypedef npy_uint8      uint8_t
  * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
@@ -576,7 +608,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
  */
 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":734
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":734
  * ctypedef npy_uint8      uint8_t
  * ctypedef npy_uint16     uint16_t
  * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
@@ -585,7 +617,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
  */
 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":735
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":735
  * ctypedef npy_uint16     uint16_t
  * ctypedef npy_uint32     uint32_t
  * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
@@ -594,7 +626,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
  */
 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":739
  * #ctypedef npy_uint128    uint128_t
  * 
  * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
@@ -603,7 +635,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
  */
 typedef npy_float32 __pyx_t_5numpy_float32_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":740
  * 
  * ctypedef npy_float32    float32_t
  * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
@@ -612,7 +644,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
  */
 typedef npy_float64 __pyx_t_5numpy_float64_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":749
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":749
  * # The int types are mapped a bit surprising --
  * # numpy.int corresponds to 'l' and numpy.long to 'q'
  * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
@@ -621,7 +653,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
  */
 typedef npy_long __pyx_t_5numpy_int_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":750
  * # numpy.int corresponds to 'l' and numpy.long to 'q'
  * ctypedef npy_long       int_t
  * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
@@ -630,7 +662,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
  */
 typedef npy_longlong __pyx_t_5numpy_long_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":751
  * ctypedef npy_long       int_t
  * ctypedef npy_longlong   long_t
  * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
@@ -639,7 +671,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
  */
 typedef npy_longlong __pyx_t_5numpy_longlong_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":753
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":753
  * ctypedef npy_longlong   longlong_t
  * 
  * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
@@ -648,7 +680,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
  */
 typedef npy_ulong __pyx_t_5numpy_uint_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":754
  * 
  * ctypedef npy_ulong      uint_t
  * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
@@ -657,7 +689,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
  */
 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":755
  * ctypedef npy_ulong      uint_t
  * ctypedef npy_ulonglong  ulong_t
  * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
@@ -666,7 +698,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
  */
 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":757
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":757
  * ctypedef npy_ulonglong  ulonglong_t
  * 
  * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
@@ -675,7 +707,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
  */
 typedef npy_intp __pyx_t_5numpy_intp_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":758
  * 
  * ctypedef npy_intp       intp_t
  * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
@@ -684,7 +716,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
  */
 typedef npy_uintp __pyx_t_5numpy_uintp_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":760
  * ctypedef npy_uintp      uintp_t
  * 
  * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
@@ -693,7 +725,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
  */
 typedef npy_double __pyx_t_5numpy_float_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":761
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":761
  * 
  * ctypedef npy_double     float_t
  * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
@@ -702,7 +734,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
  */
 typedef npy_double __pyx_t_5numpy_double_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":762
  * ctypedef npy_double     float_t
  * ctypedef npy_double     double_t
  * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
@@ -710,6 +742,7 @@ typedef npy_double __pyx_t_5numpy_double_t;
  * ctypedef npy_cfloat      cfloat_t
  */
 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     typedef ::std::complex< float > __pyx_t_float_complex;
@@ -720,6 +753,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
     typedef struct { float real, imag; } __pyx_t_float_complex;
 #endif
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     typedef ::std::complex< double > __pyx_t_double_complex;
@@ -733,9 +767,10 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
 
 /*--- Type declarations ---*/
 struct __pyx_obj_7feather_3ext_FeatherWriter;
+struct __pyx_obj_7feather_3ext_Column;
 struct __pyx_obj_7feather_3ext_FeatherReader;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":764
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":764
  * ctypedef npy_longdouble longdouble_t
  * 
  * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
@@ -744,7 +779,7 @@ struct __pyx_obj_7feather_3ext_FeatherReader;
  */
 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":765
  * 
  * ctypedef npy_cfloat      cfloat_t
  * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
@@ -753,7 +788,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
  */
 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":766
  * ctypedef npy_cfloat      cfloat_t
  * ctypedef npy_cdouble     cdouble_t
  * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
@@ -762,7 +797,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
  */
 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
 
-/* "../../../anaconda3/envs/py27/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":768
+/* "../../../anaconda3/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":768
  * ctypedef npy_clongdouble clongdouble_t
  * 
  * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
@@ -771,7 +806,7 @@ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
  */
 typedef npy_cdouble __pyx_t_5numpy_complex_t;
 
-/* "feather/ext.pyx":58
+/* "feather/ext.pyx":59
  * set_numpy_nan(np.nan)
  * 
  * cdef class FeatherWriter:             # <<<<<<<<<<<<<<
@@ -786,7 +821,24 @@ struct __pyx_obj_7feather_3ext_FeatherWriter {
 };
 
 
-/* "feather/ext.pyx":149
+/* "feather/ext.pyx":150
+ * 
+ * 
+ * cdef class Column:             # <<<<<<<<<<<<<<
+ *     cdef:
+ *         shared_ptr[CColumnMetadata] metadata
+ */
+struct __pyx_obj_7feather_3ext_Column {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7feather_3ext_Column *__pyx_vtab;
+  std::shared_ptr< feather::metadata::Column>  metadata;
+   feather::metadata::Column *mp;
+  struct __pyx_obj_7feather_3ext_FeatherReader *parent;
+  int column_index;
+};
+
+
+/* "feather/ext.pyx":206
  * 
  * 
  * cdef class FeatherReader:             # <<<<<<<<<<<<<<
@@ -800,7 +852,7 @@ struct __pyx_obj_7feather_3ext_FeatherReader {
 
 
 
-/* "feather/ext.pyx":58
+/* "feather/ext.pyx":59
  * set_numpy_nan(np.nan)
  * 
  * cdef class FeatherWriter:             # <<<<<<<<<<<<<<
@@ -816,7 +868,22 @@ struct __pyx_vtabstruct_7feather_3ext_FeatherWriter {
 };
 static struct __pyx_vtabstruct_7feather_3ext_FeatherWriter *__pyx_vtabptr_7feather_3ext_FeatherWriter;
 
+
+/* "feather/ext.pyx":150
+ * 
+ * 
+ * cdef class Column:             # <<<<<<<<<<<<<<
+ *     cdef:
+ *         shared_ptr[CColumnMetadata] metadata
+ */
+
+struct __pyx_vtabstruct_7feather_3ext_Column {
+  PyObject *(*init)(struct __pyx_obj_7feather_3ext_Column *, struct __pyx_obj_7feather_3ext_FeatherReader *, int);
+};
+static struct __pyx_vtabstruct_7feather_3ext_Column *__pyx_vtabptr_7feather_3ext_Column;
+
 /* --- Runtime support code (head) --- */
+/* Refnanny.proto */
 #ifndef CYTHON_REFNANNY
   #define CYTHON_REFNANNY 0
 #endif
@@ -879,6 +946,7 @@ static struct __pyx_vtabstruct_7feather_3ext_FeatherWriter *__pyx_vtabptr_7feath
 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
 
+/* PyObjectGetAttrStr.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
     PyTypeObject* tp = Py_TYPE(obj);
@@ -894,40 +962,76 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
 #endif
 
+/* GetBuiltinName.proto */
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
+/* GetModuleGlobalName.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
 
+/* PyObjectCall.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
 #else
 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
 #endif
 
+/* PyObjectCallMethO.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
 #endif
 
+/* PyObjectCallOneArg.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
 
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb);
+/* PyThreadStateGet.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = PyThreadState_GET();
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
 
+/* RaiseException.proto */
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
 
+/* RaiseDoubleKeywords.proto */
 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
 
+/* ParseKeywords.proto */
 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
     const char* function_name);
 
+/* RaiseArgTupleInvalid.proto */
 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
 
+/* GetAttr.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
 
+/* GetAttr3.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
 
+/* KeywordStringCheck.proto */
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
+
+/* DictGetItem.proto */
 #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     PyObject *value;
@@ -948,30 +1052,40 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
 #endif
 
+/* RaiseTooManyValuesToUnpack.proto */
 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
 
+/* RaiseNeedMoreValuesToUnpack.proto */
 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
 
+/* RaiseNoneIterError.proto */
 static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
 
+/* ExtTypeTest.proto */
 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
 
+/* SetVTable.proto */
 static int __Pyx_SetVtable(PyObject *dict, void *vtable);
 
+/* Import.proto */
 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
 
+/* ImportFrom.proto */
 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
 
+/* CalculateMetaclass.proto */
 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
 
+/* Py3ClassCreate.proto */
 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                            PyObject *mkw, PyObject *modname, PyObject *doc);
 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                       PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
 
+/* CodeObjectCache.proto */
 typedef struct {
-    int code_line;
     PyCodeObject* code_object;
+    int code_line;
 } __Pyx_CodeObjectCacheEntry;
 struct __Pyx_CodeObjectCache {
     int count;
@@ -983,19 +1097,23 @@ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int co
 static PyCodeObject *__pyx_find_code_object(int code_line);
 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
 
+/* AddTraceback.proto */
 static void __Pyx_AddTraceback(const char *funcname, int c_line,
                                int py_line, const char *filename);
 
+/* None.proto */
 #include <new>
 
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____feather_3a__3a_ColumnType_3a__3a_type(enum  feather::ColumnType::type value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____feather_3a__3a_ColumnType_3a__3a_type(enum  feather::ColumnType::type value);
-
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     #define __Pyx_CREAL(z) ((z).real())
@@ -1008,7 +1126,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____feather_3a__3a_ColumnTyp
     #define __Pyx_CREAL(z) ((z).real)
     #define __Pyx_CIMAG(z) ((z).imag)
 #endif
-#if (defined(_WIN32) || defined(__clang__)) && defined(__cplusplus) && CYTHON_CCOMPLEX
+#if defined(__cplusplus) && CYTHON_CCOMPLEX         && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
     #define __Pyx_SET_CREAL(z,x) ((z).real(x))
     #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
 #else
@@ -1016,8 +1134,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____feather_3a__3a_ColumnTyp
     #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
 #endif
 
+/* None.proto */
 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
     #define __Pyx_c_eqf(a, b)   ((a)==(b))
     #define __Pyx_c_sumf(a, b)  ((a)+(b))
@@ -1055,8 +1175,10 @@ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(floa
     #endif
 #endif
 
+/* None.proto */
 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
     #define __Pyx_c_eq(a, b)   ((a)==(b))
     #define __Pyx_c_sum(a, b)  ((a)+(b))
@@ -1094,14 +1216,22 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do
     #endif
 #endif
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);
 
+/* CIntFromPy.proto */
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
+
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
 
+/* CIntFromPy.proto */
 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
 
+/* CheckBinaryVersion.proto */
 static int __Pyx_check_binary_version(void);
 
+/* PyIdentifierFromString.proto */
 #if !defined(__Pyx_PyIdentifier_FromString)
 #if PY_MAJOR_VERSION < 3
   #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
@@ -1110,16 +1240,20 @@ static int __Pyx_check_binary_version(void);
 #endif
 #endif
 
+/* ModuleImport.proto */
 static PyObject *__Pyx_ImportModule(const char *name);
 
+/* TypeImport.proto */
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
 
+/* InitStrings.proto */
 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
 
 static PyObject *__pyx_f_7feather_3ext_13FeatherWriter_write_category(struct __pyx_obj_7feather_3ext_FeatherWriter *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_col, PyObject *__pyx_v_mask); /* proto*/
 static PyObject *__pyx_f_7feather_3ext_13FeatherWriter_write_primitive(struct __pyx_obj_7feather_3ext_FeatherWriter *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_col, PyObject *__pyx_v_mask); /* proto*/
 static PyObject *__pyx_f_7feather_3ext_13FeatherWriter_write_timestamp(struct __pyx_obj_7feather_3ext_FeatherWriter *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_col, PyObject *__pyx_v_mask); /* proto*/
 static int __pyx_f_7feather_3ext_13FeatherWriter_write_ndarray(CYTHON_UNUSED struct __pyx_obj_7feather_3ext_FeatherWriter *__pyx_v_self, PyObject *__pyx_v_values, PyObject *__pyx_v_mask, feather::PrimitiveArray *__pyx_v_out); /* proto*/
+static PyObject *__pyx_f_7feather_3ext_6Column_init(struct __pyx_obj_7feather_3ext_Column *__pyx_v_self, struct __pyx_obj_7feather_3ext_FeatherReader *__pyx_v_parent, int __pyx_v_i); /* proto*/
 
 /* Module declarations from 'libc.string' */
 
@@ -1228,11 +1362,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, cha
 
 /* Module declarations from 'feather.ext' */
 static PyTypeObject *__pyx_ptype_7feather_3ext_FeatherWriter = 0;
+static PyTypeObject *__pyx_ptype_7feather_3ext_Column = 0;
 static PyTypeObject *__pyx_ptype_7feather_3ext_FeatherReader = 0;
 static PyObject *__pyx_f_7feather_3ext_check_status(feather::Status const &); /*proto*/
 static PyObject *__pyx_f_7feather_3ext__unbox_series(PyObject *); /*proto*/
-static PyObject *__pyx_f_7feather_3ext_category_to_pandas(feather::Column *); /*proto*/
-static PyObject *__pyx_f_7feather_3ext_timestamp_to_pandas(feather::Column *); /*proto*/
+static PyObject *__pyx_f_7feather_3ext_category_to_pandas( feather::Column *); /*proto*/
+static PyObject *__pyx_f_7feather_3ext_timestamp_to_pandas( feather::Column *); /*proto*/
 static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &); /*proto*/
 static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &); /*proto*/
 static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &); /*proto*/
@@ -1245,88 +1380,72 @@ int __pyx_module_is_main_feather__ext = 0;
 /* Implementation of 'feather.ext' */
 static PyObject *__pyx_builtin_Exception;
 static PyObject *__pyx_builtin_ValueError;
-static PyObject *__pyx_builtin_IndexError;
 static PyObject *__pyx_builtin_NotImplementedError;
+static PyObject *__pyx_builtin_IndexError;
 static PyObject *__pyx_builtin_range;
 static PyObject *__pyx_builtin_RuntimeError;
-static char __pyx_k_B[] = "B";
-static char __pyx_k_H[] = "H";
-static char __pyx_k_I[] = "I";
-static char __pyx_k_L[] = "L";
-static char __pyx_k_O[] = "O";
-static char __pyx_k_Q[] = "Q";
-static char __pyx_k_b[] = "b";
-static char __pyx_k_d[] = "d";
-static char __pyx_k_f[] = "f";
-static char __pyx_k_g[] = "g";
-static char __pyx_k_h[] = "h";
-static char __pyx_k_i[] = "i";
-static char __pyx_k_l[] = "l";
-static char __pyx_k_q[] = "q";
-static char __pyx_k_Zd[] = "Zd";
-static char __pyx_k_Zf[] = "Zf";
-static char __pyx_k_Zg[] = "Zg";
-static char __pyx_k__3[] = "";
-static char __pyx_k_i8[] = "i8";
-static char __pyx_k_np[] = "np";
-static char __pyx_k_pd[] = "pd";
-static char __pyx_k_tz[] = "tz";
-static char __pyx_k__11[] = "*";
-static char __pyx_k_col[] = "col";
-static char __pyx_k_doc[] = "__doc__";
-static char __pyx_k_nan[] = "nan";
-static char __pyx_k_six[] = "six";
-static char __pyx_k_utc[] = "utc";
-static char __pyx_k_main[] = "__main__";
-static char __pyx_k_mask[] = "mask";
-static char __pyx_k_name[] = "name";
... 8847 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-feather-format.git



More information about the Python-modules-commits mailing list