152 lines
4.8 KiB
Cython
152 lines
4.8 KiB
Cython
# 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.
|
|
|
|
# distutils: language = c++
|
|
# cython: language_level = 3
|
|
|
|
from pyarrow.includes.libparquet cimport *
|
|
from pyarrow.lib cimport _Weakrefable
|
|
|
|
|
|
cdef class FileEncryptionProperties:
|
|
"""File-level encryption properties for the low-level API"""
|
|
cdef:
|
|
shared_ptr[CFileEncryptionProperties] properties
|
|
|
|
@staticmethod
|
|
cdef inline FileEncryptionProperties wrap(
|
|
shared_ptr[CFileEncryptionProperties] properties):
|
|
|
|
result = FileEncryptionProperties()
|
|
result.properties = properties
|
|
return result
|
|
|
|
cdef inline shared_ptr[CFileEncryptionProperties] unwrap(self):
|
|
return self.properties
|
|
|
|
cdef shared_ptr[WriterProperties] _create_writer_properties(
|
|
use_dictionary=*,
|
|
compression=*,
|
|
version=*,
|
|
write_statistics=*,
|
|
data_page_size=*,
|
|
compression_level=*,
|
|
use_byte_stream_split=*,
|
|
column_encoding=*,
|
|
data_page_version=*,
|
|
FileEncryptionProperties encryption_properties=*,
|
|
write_batch_size=*,
|
|
dictionary_pagesize_limit=*,
|
|
write_page_index=*,
|
|
write_page_checksum=*,
|
|
sorting_columns=*,
|
|
store_decimal_as_integer=*,
|
|
use_content_defined_chunking=*
|
|
) except *
|
|
|
|
|
|
cdef shared_ptr[ArrowWriterProperties] _create_arrow_writer_properties(
|
|
use_deprecated_int96_timestamps=*,
|
|
coerce_timestamps=*,
|
|
allow_truncated_timestamps=*,
|
|
writer_engine_version=*,
|
|
use_compliant_nested_type=*,
|
|
store_schema=*,
|
|
) except *
|
|
|
|
|
|
# Unwrap the "list_type" argument for ArrowReaderProperties
|
|
cdef Type _unwrap_list_type(obj) except *
|
|
|
|
|
|
cdef class ParquetSchema(_Weakrefable):
|
|
cdef:
|
|
FileMetaData parent # the FileMetaData owning the SchemaDescriptor
|
|
const SchemaDescriptor* schema
|
|
|
|
cdef class FileMetaData(_Weakrefable):
|
|
cdef:
|
|
shared_ptr[CFileMetaData] sp_metadata
|
|
CFileMetaData* _metadata
|
|
ParquetSchema _schema
|
|
|
|
cdef inline init(self, const shared_ptr[CFileMetaData]& metadata):
|
|
self.sp_metadata = metadata
|
|
self._metadata = metadata.get()
|
|
|
|
cdef class RowGroupMetaData(_Weakrefable):
|
|
cdef:
|
|
int index # for pickling support
|
|
unique_ptr[CRowGroupMetaData] up_metadata
|
|
CRowGroupMetaData* metadata
|
|
FileMetaData parent
|
|
|
|
cdef inline init(self, FileMetaData parent, int index):
|
|
if index < 0 or index >= parent.num_row_groups:
|
|
raise IndexError('{0} out of bounds'.format(index))
|
|
self.up_metadata = parent._metadata.RowGroup(index)
|
|
self.metadata = self.up_metadata.get()
|
|
self.parent = parent
|
|
self.index = index
|
|
|
|
|
|
cdef class ColumnChunkMetaData(_Weakrefable):
|
|
cdef:
|
|
unique_ptr[CColumnChunkMetaData] up_metadata
|
|
CColumnChunkMetaData* metadata
|
|
RowGroupMetaData parent
|
|
|
|
cdef inline init(self, RowGroupMetaData parent, int i):
|
|
self.up_metadata = parent.metadata.ColumnChunk(i)
|
|
self.metadata = self.up_metadata.get()
|
|
self.parent = parent
|
|
|
|
cdef class Statistics(_Weakrefable):
|
|
cdef:
|
|
shared_ptr[CStatistics] statistics
|
|
ColumnChunkMetaData parent
|
|
|
|
cdef inline init(self, const shared_ptr[CStatistics]& statistics,
|
|
ColumnChunkMetaData parent):
|
|
self.statistics = statistics
|
|
self.parent = parent
|
|
|
|
cdef class GeoStatistics(_Weakrefable):
|
|
cdef:
|
|
shared_ptr[CParquetGeoStatistics] statistics
|
|
ColumnChunkMetaData parent
|
|
|
|
cdef inline init(self, const shared_ptr[CParquetGeoStatistics]& statistics,
|
|
ColumnChunkMetaData parent):
|
|
self.statistics = statistics
|
|
self.parent = parent
|
|
|
|
cdef class FileDecryptionProperties:
|
|
"""File-level decryption properties for the low-level API"""
|
|
cdef:
|
|
shared_ptr[CFileDecryptionProperties] properties
|
|
|
|
@staticmethod
|
|
cdef inline FileDecryptionProperties wrap(
|
|
shared_ptr[CFileDecryptionProperties] properties):
|
|
|
|
result = FileDecryptionProperties()
|
|
result.properties = properties
|
|
return result
|
|
|
|
cdef inline shared_ptr[CFileDecryptionProperties] unwrap(self):
|
|
return self.properties
|