# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# cython: language_level = 3
from cpython cimport PyObject
from libcpp cimport nullptr, bool as c_bool
from libcpp.cast cimport dynamic_cast
from libcpp.memory cimport dynamic_pointer_cast
from pyarrow.includes.common cimport *
from pyarrow.includes.libarrow cimport *
from pyarrow.includes.libarrow_python cimport *
# Will be available in Cython 3, not backported
# ref: https://github.com/cython/cython/issues/3293#issuecomment-1223058101
cdef extern from "<optional>" namespace "std" nogil:
cdef cppclass nullopt_t:
nullopt_t()
cdef nullopt_t nullopt
cdef cppclass optional[T]:
ctypedef T value_type
optional()
optional(nullopt_t)
optional(optional&) except +
optional(T&) except +
c_bool has_value()
T& value()
T& value_or[U](U& default_value)
void swap(optional&)
void reset()
T& emplace(...)
T& operator*()
# T* operator->() # Not Supported
optional& operator=(optional&)
optional& operator=[U](U&)
c_bool operator bool()
c_bool operator!()
c_bool operator==[U](optional&, U&)
c_bool operator!=[U](optional&, U&)
c_bool operator<[U](optional&, U&)
c_bool operator>[U](optional&, U&)
c_bool operator<=[U](optional&, U&)
c_bool operator>=[U](optional&, U&)
optional[T] make_optional[T](...) except +
cdef extern from "Python.h":
int PySlice_Check(object)
cdef int check_status(const CStatus& status) except -1 nogil
cdef object convert_status(const CStatus& status)
cdef class _Weakrefable:
cdef object __weakref__
cdef class IpcWriteOptions(_Weakrefable):
cdef:
CIpcWriteOptions c_options
cdef class IpcReadOptions(_Weakrefable):
cdef:
CIpcReadOptions c_options
cdef class Message(_Weakrefable):
cdef:
unique_ptr[CMessage] message
cdef class MemoryPool(_Weakrefable):
cdef:
CMemoryPool* pool
cdef void init(self, CMemoryPool* pool)
cdef CMemoryPool* maybe_unbox_memory_pool(MemoryPool memory_pool)
cdef object box_memory_pool(CMemoryPool* pool)
cdef class DataType(_Weakrefable):
cdef:
shared_ptr[CDataType] sp_type
CDataType* type
bytes pep3118_format
cdef void init(self, const shared_ptr[CDataType]& type) except *
cpdef Field field(self, i)
cdef class ListType(DataType):
cdef:
const CListType* list_type
cdef class LargeListType(DataType):
cdef:
const CLargeListType* list_type
cdef class ListViewType(DataType):
cdef:
const CListViewType* list_view_type
cdef class LargeListViewType(DataType):
cdef:
const CLargeListViewType* list_view_type
cdef class MapType(DataType):
cdef:
const CMapType* map_type
cdef class FixedSizeListType(DataType):
cdef:
const CFixedSizeListType* list_type
cdef class StructType(DataType):
cdef:
const CStructType* struct_type
cdef Field field_by_name(self, name)
cdef class DictionaryMemo(_Weakrefable):
cdef:
# Even though the CDictionaryMemo instance is private, we allocate
# it on the heap so as to avoid C++ ABI issues with Python wheels.
shared_ptr[CDictionaryMemo] sp_memo
CDictionaryMemo* memo
cdef class DictionaryType(DataType):
cdef:
const CDictionaryType* dict_type
cdef class TimestampType(DataType):
cdef:
const CTimestampType* ts_type
cdef class Time32Type(DataType):
cdef:
const CTime32Type* time_type
cdef class Time64Type(DataType):
cdef:
const CTime64Type* time_type
cdef class DurationType(DataType):
cdef:
const CDurationType* duration_type
cdef class FixedSizeBinaryType(DataType):
cdef:
const CFixedSizeBinaryType* fixed_size_binary_type
cdef class Decimal128Type(FixedSizeBinaryType):
cdef:
const CDecimal128Type* decimal128_type
cdef class Decimal256Type(FixedSizeBinaryType):
cdef:
const CDecimal256Type* decimal256_type
cdef class RunEndEncodedType(DataType):
cdef:
const CRunEndEncodedType* run_end_encoded_type
cdef class BaseExtensionType(DataType):
cdef:
const CExtensionType* ext_type
cdef class ExtensionType(BaseExtensionType):
cdef:
const CPyExtensionType* cpy_ext_type
cdef class FixedShapeTensorType(BaseExtensionType):
cdef:
const CFixedShapeTensorType* tensor_ext_type
cdef class PyExtensionType(ExtensionType):
pass
cdef class _Metadata(_Weakrefable):
# required because KeyValueMetadata also extends collections.abc.Mapping
# and the first parent class must be an extension type
pass
cdef class KeyValueMetadata(_Metadata):
cdef:
shared_ptr[const CKeyValueMetadata] wrapped
const CKeyValueMetadata* metadata
cdef void init(self, const shared_ptr[const CKeyValueMetadata]& wrapped)
@staticmethod
cdef wrap(const shared_ptr[const CKeyValueMetadata]& sp)
cdef inline shared_ptr[const CKeyValueMetadata] unwrap(self) nogil
cdef class Field(_Weakrefable):
cdef:
shared_ptr[CField] sp_field
CField* field
cdef readonly:
DataType type
cdef void init(self, const shared_ptr[CField]& field)
cdef class Schema(_Weakrefable):
cdef:
shared_ptr[CSchema] sp_schema
CSchema* schema
cdef void init(self, const vector[shared_ptr[CField]]& fields)
cdef void init_schema(self, const shared_ptr[CSchema]& schema)
cdef class Scalar(_Weakrefable):
cdef:
shared_ptr[CScalar] wrapped
cdef void init(self, const shared_ptr[CScalar]& wrapped)
@staticmethod
cdef wrap(const shared_ptr[CScalar]& wrapped)
cdef inline shared_ptr[CScalar] unwrap(self) nogil
cdef class _PandasConvertible(_Weakrefable):
pass
cdef class Array(_PandasConvertible):
cdef:
shared_ptr[CArray] sp_array
CArray* ap
cdef readonly:
DataType type
# To allow Table to propagate metadata to pandas.Series
object _name
cdef void init(self, const shared_ptr[CArray]& sp_array) except *
cdef getitem(self, int64_t i)
cdef int64_t length(self)
cdef class Tensor(_Weakrefable):
cdef:
shared_ptr[CTensor] sp_tensor
CTensor* tp
cdef readonly:
DataType type
bytes _ssize_t_shape
bytes _ssize_t_strides
cdef void init(self, const shared_ptr[CTensor]& sp_tensor)
cdef class SparseCSRMatrix(_Weakrefable):
cdef:
shared_ptr[CSparseCSRMatrix] sp_sparse_tensor
CSparseCSRMatrix* stp
cdef readonly:
DataType type
cdef void init(self, const shared_ptr[CSparseCSRMatrix]& sp_sparse_tensor)
cdef class SparseCSCMatrix(_Weakrefable):
cdef:
shared_ptr[CSparseCSCMatrix] sp_sparse_tensor
CSparseCSCMatrix* stp
cdef readonly:
DataType type
cdef void init(self, const shared_ptr[CSparseCSCMatrix]& sp_sparse_tensor)
cdef class SparseCOOTensor(_Weakrefable):
cdef:
shared_ptr[CSparseCOOTensor] sp_sparse_tensor
CSparseCOOTensor* stp
cdef readonly:
DataType type
cdef void init(self, const shared_ptr[CSparseCOOTensor]& sp_sparse_tensor)
cdef class SparseCSFTensor(_Weakrefable):
cdef:
shared_ptr[CSparseCSFTensor] sp_sparse_tensor
CSparseCSFTensor* stp
cdef readonly:
DataType type
cdef void init(self, const shared_ptr[CSparseCSFTensor]& sp_sparse_tensor)
Loading ...