aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/matplotlib/py2/src/numpy_cpp.h
diff options
context:
space:
mode:
authormaxim-yurchuk <maxim-yurchuk@yandex-team.com>2025-02-11 13:26:52 +0300
committermaxim-yurchuk <maxim-yurchuk@yandex-team.com>2025-02-11 13:57:59 +0300
commitf895bba65827952ed934b2b46f9a45e30a191fd2 (patch)
tree03260c906d9ec41cdc03e2a496b15d407459cec0 /contrib/python/matplotlib/py2/src/numpy_cpp.h
parent5f7060466f7b9707818c2091e1a25c14f33c3474 (diff)
downloadydb-f895bba65827952ed934b2b46f9a45e30a191fd2.tar.gz
Remove deps on pandas
<https://github.com/ydb-platform/ydb/pull/14418> <https://github.com/ydb-platform/ydb/pull/14419> \-- аналогичные правки в gh Хочу залить в обход синка, чтобы посмотреть удалится ли pandas в нашей gh репе через piglet commit_hash:abca127aa37d4dbb94b07e1e18cdb8eb5b711860
Diffstat (limited to 'contrib/python/matplotlib/py2/src/numpy_cpp.h')
-rw-r--r--contrib/python/matplotlib/py2/src/numpy_cpp.h569
1 files changed, 0 insertions, 569 deletions
diff --git a/contrib/python/matplotlib/py2/src/numpy_cpp.h b/contrib/python/matplotlib/py2/src/numpy_cpp.h
deleted file mode 100644
index 75f773ee58e..00000000000
--- a/contrib/python/matplotlib/py2/src/numpy_cpp.h
+++ /dev/null
@@ -1,569 +0,0 @@
-/* -*- mode: c++; c-basic-offset: 4 -*- */
-
-#ifndef _NUMPY_CPP_H_
-#define _NUMPY_CPP_H_
-#define PY_SSIZE_T_CLEAN
-/***************************************************************************
- * This file is based on original work by Mark Wiebe, available at:
- *
- * http://github.com/mwiebe/numpy-cpp
- *
- * However, the needs of matplotlib wrappers, such as treating an
- * empty array as having the correct dimensions, have made this rather
- * matplotlib-specific, so it's no longer compatible with the
- * original.
- */
-
-#include "py_exceptions.h"
-
-#include <complex>
-
-#ifdef _POSIX_C_SOURCE
-# undef _POSIX_C_SOURCE
-#endif
-#ifndef _AIX
-#ifdef _XOPEN_SOURCE
-# undef _XOPEN_SOURCE
-#endif
-#endif
-
-// Prevent multiple conflicting definitions of swab from stdlib.h and unistd.h
-#if defined(__sun) || defined(sun)
-#if defined(_XPG4)
-#undef _XPG4
-#endif
-#if defined(_XPG3)
-#undef _XPG3
-#endif
-#endif
-
-#include <Python.h>
-#include <numpy/ndarrayobject.h>
-
-namespace numpy
-{
-
-// Type traits for the NumPy types
-template <typename T>
-struct type_num_of;
-
-/* Be careful with bool arrays as python has sizeof(npy_bool) == 1, but it is
- * not always the case that sizeof(bool) == 1. Using the array_view_accessors
- * is always fine regardless of sizeof(bool), so do this rather than using
- * array.data() and pointer arithmetic which will not work correctly if
- * sizeof(bool) != 1. */
-template <> struct type_num_of<bool>
-{
- enum {
- value = NPY_BOOL
- };
-};
-template <>
-struct type_num_of<npy_byte>
-{
- enum {
- value = NPY_BYTE
- };
-};
-template <>
-struct type_num_of<npy_ubyte>
-{
- enum {
- value = NPY_UBYTE
- };
-};
-template <>
-struct type_num_of<npy_short>
-{
- enum {
- value = NPY_SHORT
- };
-};
-template <>
-struct type_num_of<npy_ushort>
-{
- enum {
- value = NPY_USHORT
- };
-};
-template <>
-struct type_num_of<npy_int>
-{
- enum {
- value = NPY_INT
- };
-};
-template <>
-struct type_num_of<npy_uint>
-{
- enum {
- value = NPY_UINT
- };
-};
-template <>
-struct type_num_of<npy_long>
-{
- enum {
- value = NPY_LONG
- };
-};
-template <>
-struct type_num_of<npy_ulong>
-{
- enum {
- value = NPY_ULONG
- };
-};
-template <>
-struct type_num_of<npy_longlong>
-{
- enum {
- value = NPY_LONGLONG
- };
-};
-template <>
-struct type_num_of<npy_ulonglong>
-{
- enum {
- value = NPY_ULONGLONG
- };
-};
-template <>
-struct type_num_of<npy_float>
-{
- enum {
- value = NPY_FLOAT
- };
-};
-template <>
-struct type_num_of<npy_double>
-{
- enum {
- value = NPY_DOUBLE
- };
-};
-#if NPY_LONGDOUBLE != NPY_DOUBLE
-template <>
-struct type_num_of<npy_longdouble>
-{
- enum {
- value = NPY_LONGDOUBLE
- };
-};
-#endif
-template <>
-struct type_num_of<npy_cfloat>
-{
- enum {
- value = NPY_CFLOAT
- };
-};
-template <>
-struct type_num_of<std::complex<npy_float> >
-{
- enum {
- value = NPY_CFLOAT
- };
-};
-template <>
-struct type_num_of<npy_cdouble>
-{
- enum {
- value = NPY_CDOUBLE
- };
-};
-template <>
-struct type_num_of<std::complex<npy_double> >
-{
- enum {
- value = NPY_CDOUBLE
- };
-};
-#if NPY_CLONGDOUBLE != NPY_CDOUBLE
-template <>
-struct type_num_of<npy_clongdouble>
-{
- enum {
- value = NPY_CLONGDOUBLE
- };
-};
-template <>
-struct type_num_of<std::complex<npy_longdouble> >
-{
- enum {
- value = NPY_CLONGDOUBLE
- };
-};
-#endif
-template <>
-struct type_num_of<PyObject *>
-{
- enum {
- value = NPY_OBJECT
- };
-};
-template <typename T>
-struct type_num_of<T &>
-{
- enum {
- value = type_num_of<T>::value
- };
-};
-template <typename T>
-struct type_num_of<const T>
-{
- enum {
- value = type_num_of<T>::value
- };
-};
-
-template <typename T>
-struct is_const
-{
- enum {
- value = false
- };
-};
-template <typename T>
-struct is_const<const T>
-{
- enum {
- value = true
- };
-};
-
-namespace detail
-{
-template <template <typename, int> class AV, typename T, int ND>
-class array_view_accessors;
-
-template <template <typename, int> class AV, typename T>
-class array_view_accessors<AV, T, 1>
-{
- public:
- typedef AV<T, 1> AVC;
- typedef T sub_t;
-
- T &operator()(npy_intp i)
- {
- AVC *self = static_cast<AVC *>(this);
-
- return *reinterpret_cast<T *>(self->m_data + self->m_strides[0] * i);
- }
-
- const T &operator()(npy_intp i) const
- {
- const AVC *self = static_cast<const AVC *>(this);
-
- return *reinterpret_cast<const T *>(self->m_data + self->m_strides[0] * i);
- }
-
- T &operator[](npy_intp i)
- {
- AVC *self = static_cast<AVC *>(this);
-
- return *reinterpret_cast<T *>(self->m_data + self->m_strides[0] * i);
- }
-
- const T &operator[](npy_intp i) const
- {
- const AVC *self = static_cast<const AVC *>(this);
-
- return *reinterpret_cast<const T *>(self->m_data + self->m_strides[0] * i);
- }
-};
-
-template <template <typename, int> class AV, typename T>
-class array_view_accessors<AV, T, 2>
-{
- public:
- typedef AV<T, 2> AVC;
- typedef AV<T, 1> sub_t;
-
- T &operator()(npy_intp i, npy_intp j)
- {
- AVC *self = static_cast<AVC *>(this);
-
- return *reinterpret_cast<T *>(self->m_data + self->m_strides[0] * i +
- self->m_strides[1] * j);
- }
-
- const T &operator()(npy_intp i, npy_intp j) const
- {
- const AVC *self = static_cast<const AVC *>(this);
-
- return *reinterpret_cast<const T *>(self->m_data + self->m_strides[0] * i +
- self->m_strides[1] * j);
- }
-
- sub_t subarray(npy_intp i) const
- {
- const AVC *self = static_cast<const AVC *>(this);
-
- return sub_t(self->m_arr,
- self->m_data + self->m_strides[0] * i,
- self->m_shape + 1,
- self->m_strides + 1);
- }
-};
-
-template <template <typename, int> class AV, typename T>
-class array_view_accessors<AV, T, 3>
-{
- public:
- typedef AV<T, 3> AVC;
- typedef AV<T, 2> sub_t;
-
- T &operator()(npy_intp i, npy_intp j, npy_intp k)
- {
- AVC *self = static_cast<AVC *>(this);
-
- return *reinterpret_cast<T *>(self->m_data + self->m_strides[0] * i +
- self->m_strides[1] * j + self->m_strides[2] * k);
- }
-
- const T &operator()(npy_intp i, npy_intp j, npy_intp k) const
- {
- const AVC *self = static_cast<const AVC *>(this);
-
- return *reinterpret_cast<const T *>(self->m_data + self->m_strides[0] * i +
- self->m_strides[1] * j + self->m_strides[2] * k);
- }
-
- sub_t subarray(npy_intp i) const
- {
- const AVC *self = static_cast<const AVC *>(this);
-
- return sub_t(self->m_arr,
- self->m_data + self->m_strides[0] * i,
- self->m_shape + 1,
- self->m_strides + 1);
- }
-
-
-};
-
-// When adding instantiations of array_view_accessors, remember to add entries
-// to zeros[] below.
-
-}
-
-static npy_intp zeros[] = { 0, 0, 0 };
-
-template <typename T, int ND>
-class array_view : public detail::array_view_accessors<array_view, T, ND>
-{
- friend class detail::array_view_accessors<numpy::array_view, T, ND>;
-
- private:
- // Copies of the array data
- PyArrayObject *m_arr;
- npy_intp *m_shape;
- npy_intp *m_strides;
- char *m_data;
-
- public:
- typedef T value_type;
-
- enum {
- ndim = ND
- };
-
- array_view() : m_arr(NULL), m_data(NULL)
- {
- m_shape = zeros;
- m_strides = zeros;
- }
-
- array_view(PyObject *arr, bool contiguous = false) : m_arr(NULL), m_data(NULL)
- {
- if (!set(arr, contiguous)) {
- throw py::exception();
- }
- }
-
- array_view(const array_view &other) : m_arr(NULL), m_data(NULL)
- {
- m_arr = other.m_arr;
- Py_XINCREF(m_arr);
- m_data = other.m_data;
- m_shape = other.m_shape;
- m_strides = other.m_strides;
- }
-
- array_view(PyArrayObject *arr, char *data, npy_intp *shape, npy_intp *strides)
- {
- m_arr = arr;
- Py_XINCREF(arr);
- m_data = data;
- m_shape = shape;
- m_strides = strides;
- }
-
- array_view(npy_intp shape[ND]) : m_arr(NULL), m_shape(NULL), m_strides(NULL), m_data(NULL)
- {
- PyObject *arr = PyArray_SimpleNew(ND, shape, type_num_of<T>::value);
- if (arr == NULL) {
- throw py::exception();
- }
- if (!set(arr, true)) {
- Py_DECREF(arr);
- throw py::exception();
- }
- Py_DECREF(arr);
- }
-
- ~array_view()
- {
- Py_XDECREF(m_arr);
- }
-
- array_view& operator=(const array_view &other)
- {
- if (this != &other)
- {
- Py_XDECREF(m_arr);
- m_arr = other.m_arr;
- Py_XINCREF(m_arr);
- m_data = other.m_data;
- m_shape = other.m_shape;
- m_strides = other.m_strides;
- }
- return *this;
- }
-
- int set(PyObject *arr, bool contiguous = false)
- {
- PyArrayObject *tmp;
-
- if (arr == NULL || arr == Py_None) {
- Py_XDECREF(m_arr);
- m_arr = NULL;
- m_data = NULL;
- m_shape = zeros;
- m_strides = zeros;
- } else {
- if (contiguous) {
- tmp = (PyArrayObject *)PyArray_ContiguousFromAny(arr, type_num_of<T>::value, 0, ND);
- } else {
- tmp = (PyArrayObject *)PyArray_FromObject(arr, type_num_of<T>::value, 0, ND);
- }
- if (tmp == NULL) {
- return 0;
- }
-
- if (PyArray_NDIM(tmp) == 0 || PyArray_DIM(tmp, 0) == 0) {
- Py_XDECREF(m_arr);
- m_arr = NULL;
- m_data = NULL;
- m_shape = zeros;
- m_strides = zeros;
- if (PyArray_NDIM(tmp) == 0 && ND == 0) {
- m_arr = tmp;
- return 1;
- }
- }
- if (PyArray_NDIM(tmp) != ND) {
- PyErr_Format(PyExc_ValueError,
- "Expected %d-dimensional array, got %d",
- ND,
- PyArray_NDIM(tmp));
- Py_DECREF(tmp);
- return 0;
- }
-
- /* Copy some of the data to the view object for faster access */
- Py_XDECREF(m_arr);
- m_arr = tmp;
- m_shape = PyArray_DIMS(m_arr);
- m_strides = PyArray_STRIDES(m_arr);
- m_data = (char *)PyArray_BYTES(tmp);
- }
-
- return 1;
- }
-
- npy_intp dim(size_t i) const
- {
- if (i >= ND) {
- return 0;
- }
- return m_shape[i];
- }
-
- /*
- In most cases, code should use size() instead of dim(0), since
- size() == 0 when any dimension is 0.
- */
- size_t size() const
- {
- bool empty = (ND == 0);
- for (size_t i = 0; i < ND; i++) {
- if (m_shape[i] == 0) {
- empty = true;
- }
- }
- if (empty) {
- return 0;
- } else {
- return (size_t)dim(0);
- }
- }
-
- bool empty() const
- {
- return size() == 0;
- }
-
- // Do not use this for array_view<bool, ND>. See comment near top of file.
- const T *data() const
- {
- return (const T *)m_data;
- }
-
- // Do not use this for array_view<bool, ND>. See comment near top of file.
- T *data()
- {
- return (T *)m_data;
- }
-
- // Return a new reference.
- PyObject *pyobj()
- {
- Py_XINCREF(m_arr);
- return (PyObject *)m_arr;
- }
-
- // Steal a reference.
- PyObject *pyobj_steal()
- {
- return (PyObject *)m_arr;
- }
-
- static int converter(PyObject *obj, void *arrp)
- {
- array_view<T, ND> *arr = (array_view<T, ND> *)arrp;
-
- if (!arr->set(obj)) {
- return 0;
- }
-
- return 1;
- }
-
- static int converter_contiguous(PyObject *obj, void *arrp)
- {
- array_view<T, ND> *arr = (array_view<T, ND> *)arrp;
-
- if (!arr->set(obj, true)) {
- return 0;
- }
-
- return 1;
- }
-};
-
-} // namespace numpy
-
-
-#endif