From c3c135292ac43bff6414de2c24ec8243fb281f7e Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 26 Jan 2018 10:10:47 -0800 Subject: [PATCH 1/2] decouple ujson from _libs/src --- pandas/_libs/src/ujson/python/objToJSON.c | 3 ++- setup.py | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pandas/_libs/src/ujson/python/objToJSON.c b/pandas/_libs/src/ujson/python/objToJSON.c index 61e3752a49639..e7f334b267461 100644 --- a/pandas/_libs/src/ujson/python/objToJSON.c +++ b/pandas/_libs/src/ujson/python/objToJSON.c @@ -44,7 +44,6 @@ Numeric decoder derived from from TCL library #include // NOLINT(build/include_order) #include // NOLINT(build/include_order) #include // NOLINT(build/include_order) -#include // NOLINT(build/include_order) #include // NOLINT(build/include_order) #include // NOLINT(build/include_order) #include // NOLINT(build/include_order) @@ -60,6 +59,8 @@ static PyTypeObject *cls_series; static PyTypeObject *cls_index; static PyTypeObject *cls_nat; +npy_int64 get_nat(void) { return NPY_MIN_INT64; } + typedef void *(*PFN_PyTypeToJSON)(JSOBJ obj, JSONTypeContext *ti, void *outValue, size_t *_outLen); diff --git a/setup.py b/setup.py index 7ade1544ec5cd..859d50303ecb1 100755 --- a/setup.py +++ b/setup.py @@ -694,10 +694,9 @@ def pxd(name): 'pandas/_libs/src/ujson/lib/ultrajsonenc.c', 'pandas/_libs/src/ujson/lib/ultrajsondec.c'] + np_datetime_sources), - include_dirs=(['pandas/_libs/src/ujson/python', - 'pandas/_libs/src/ujson/lib', - 'pandas/_libs/src/datetime'] + - common_include), + include_dirs=['pandas/_libs/src/ujson/python', + 'pandas/_libs/src/ujson/lib', + 'pandas/_libs/src/datetime'], extra_compile_args=(['-D_GNU_SOURCE'] + extra_compile_args)) From fac58f279c4f7f6b21a1cd4523487db370ae247d Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 26 Jan 2018 10:13:00 -0800 Subject: [PATCH 2/2] remove unused ktypes.h, kvec.h --- pandas/_libs/src/klib/ktypes.h | 6 -- pandas/_libs/src/klib/kvec.h | 151 --------------------------------- 2 files changed, 157 deletions(-) delete mode 100644 pandas/_libs/src/klib/ktypes.h delete mode 100644 pandas/_libs/src/klib/kvec.h diff --git a/pandas/_libs/src/klib/ktypes.h b/pandas/_libs/src/klib/ktypes.h deleted file mode 100644 index 981f17372a2d5..0000000000000 --- a/pandas/_libs/src/klib/ktypes.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __KTYPES_H -#define __KTYPES_H - -/* compipler specific configuration */ - -#endif /* __KTYPES_H */ diff --git a/pandas/_libs/src/klib/kvec.h b/pandas/_libs/src/klib/kvec.h deleted file mode 100644 index c5e6e6c407dfc..0000000000000 --- a/pandas/_libs/src/klib/kvec.h +++ /dev/null @@ -1,151 +0,0 @@ -/* The MIT License - - Copyright (c) 2008, by Attractive Chaos - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -/* - An example: - -#include "kvec.h" -int main() { - kvec_t(int) array; - kv_init(array); - kv_push(int, array, 10); // append - kv_a(int, array, 20) = 5; // dynamic - kv_A(array, 20) = 4; // static - kv_destroy(array); - return 0; -} -*/ - -/* - 2008-09-22 (0.1.0): - - * The initial version. - -*/ - -#ifndef AC_KVEC_H -#define AC_KVEC_H - -#include -#include -#include - -#ifndef PANDAS_INLINE - #if defined(__GNUC__) - #define PANDAS_INLINE static __inline__ - #elif defined(_MSC_VER) - #define PANDAS_INLINE static __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define PANDAS_INLINE static inline - #else - #define PANDAS_INLINE - #endif -#endif - -#define kv_roundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x)) - -#define kvec_t(type) struct { size_t n, m; type *a; } -#define kv_init(v) ((v).n = (v).m = 0, (v).a = 0) -#define kv_destroy(v) free((v).a) -#define kv_A(v, i) ((v).a[(i)]) -#define kv_pop(v) ((v).a[--(v).n]) -#define kv_size(v) ((v).n) -#define kv_max(v) ((v).m) - -#define kv_resize(type, v, s) ((v).m = (s), (v).a = (type*)realloc((v).a, sizeof(type) * (v).m)) - -#define kv_copy(type, v1, v0) do { \ - if ((v1).m < (v0).n) kv_resize(type, v1, (v0).n); \ - (v1).n = (v0).n; \ - memcpy((v1).a, (v0).a, sizeof(type) * (v0).n); \ - } while (0) \ - -#define kv_push(type, v, x) do { \ - if ((v)->n == (v)->m) { \ - (v)->m = (v)->m? (v)->m<<1 : 2; \ - (v)->a = (type*)realloc((v)->a, sizeof(type) * (v)->m); \ - } \ - (v)->a[(v)->n++] = (x); \ - } while (0) - -#define kv_pushp(type, v) (((v).n == (v).m)? \ - ((v).m = ((v).m? (v).m<<1 : 2), \ - (v).a = (type*)realloc((v).a, sizeof(type) * (v).m), 0) \ - : 0), ((v).a + ((v).n++)) - -#define kv_a(type, v, i) ((v).m <= (size_t)(i)? \ - ((v).m = (v).n = (i) + 1, kv_roundup32((v).m), \ - (v).a = (type*)realloc((v).a, sizeof(type) * (v).m), 0) \ - : (v).n <= (size_t)(i)? (v).n = (i) \ - : 0), (v).a[(i)] - -// #define kv_int64_push(v, x) (kv_push(int64_t, (v), (x))) - -typedef struct { - size_t n, m; - int64_t* a; -} kv_int64_t; - -typedef struct { - size_t n, m; - double* a; -} kv_double; - -typedef struct { - size_t n, m; - PyObject** a; -} kv_object_t; - -void PANDAS_INLINE kv_object_push(kv_object_t *v, PyObject *x) { - do { - if (v->n == v->m) { - v->m = v->m? v->m<<1 : 2; - v->a = (PyObject**)realloc(v->a, sizeof(PyObject*) * v->m); - } - v->a[v->n++] = x; - } while (0); - // kv_push(PyObject*, v, x); - Py_INCREF(x); -} - -void PANDAS_INLINE kv_int64_push(kv_int64_t *v, int64_t x) { - kv_push(int64_t, v, x); -} - -void PANDAS_INLINE kv_double_push(kv_double *v, double x) { - kv_push(double, v, x); -} - -void PANDAS_INLINE kv_object_destroy(kv_object_t *v) { - int i; - for (i = 0; i < v->n; ++i) - { - Py_XDECREF(v->a[i]); - } - free(v->a); -} - - -#endif