# 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.
import _cython_3_0_11
import nanoarrow._device
from _typeshed import Incomplete
from typing import ClassVar
DEVICE_CPU: nanoarrow._device.Device
__reduce_cython__: _cython_3_0_11.cython_function_or_method
__setstate_cython__: _cython_3_0_11.cython_function_or_method
__test__: dict
class CBuffer:
__pyx_vtable__: ClassVar[PyCapsule] = ...
data_type: Incomplete
data_type_id: Incomplete
device: Incomplete
element_size_bits: Incomplete
format: Incomplete
itemsize: Incomplete
n_elements: Incomplete
size_bytes: Incomplete
@classmethod
def __init__(cls, *args, **kwargs) -> None:
"""Create and return a new object. See help(type) for accurate signature."""
def element(self, *args, **kwargs): ...
def elements(self, *args, **kwargs): ...
@staticmethod
def empty(*args, **kwargs):
"""Create an empty CBuffer"""
@staticmethod
def from_dlpack(*args, **kwargs):
"""Create a CBuffer using the DLPack protocol
Wraps a tensor from an external library as a CBuffer that can be used
to create an array.
Parameters
----------
obj : object with a ``__dlpack__`` attribute
The object on which to invoke the DLPack protocol
stream : int, optional
The stream on which the tensor represented by obj should be made
safe for use. This value is passed to the object's ``__dlpack__``
method; however, the CBuffer does not keep any record of this (i.e.,
the caller is responsible for creating a sync event after creating one
or more buffers in this way).
"""
@staticmethod
def from_pybuffer(*args, **kwargs):
"""Create a CBuffer using the Python buffer protocol
Wraps a buffer using the Python buffer protocol as a CBuffer that can be
used to create an array.
Parameters
----------
obj : buffer-like
The object on which to invoke the Python buffer protocol
"""
def view(self, *args, **kwargs):
"""Export this buffer as a CBufferView
Returns a :class:`CBufferView` of this buffer. After calling this
method, the original CBuffer will be invalidated and cannot be used.
In general, the view of the buffer should be used to consume a buffer
(whereas the CBuffer is primarily used to wrap an existing object in
a way that it can be used to build a :class:`CArray`).
"""
def __buffer__(self, *args, **kwargs):
"""Return a buffer object that exposes the underlying memory of the object."""
def __getitem__(self, index):
"""Return self[key]."""
def __iter__(self):
"""Implement iter(self)."""
def __len__(self) -> int:
"""Return len(self)."""
def __reduce__(self): ...
def __release_buffer__(self, *args, **kwargs):
"""Release the buffer object that exposes the underlying memory of the object."""
class CBufferBuilder:
__pyx_vtable__: ClassVar[PyCapsule] = ...
capacity_bytes: Incomplete
format: Incomplete
itemsize: Incomplete
size_bytes: Incomplete
@classmethod
def __init__(cls, *args, **kwargs) -> None:
"""Create and return a new object. See help(type) for accurate signature."""
def advance(self, *args, **kwargs):
"""Manually increase :attr:`size_bytes` by ``additional_bytes``
This can be used after writing to the buffer using the buffer protocol
to ensure that :attr:`size_bytes` accurately reflects the number of
bytes written to the buffer.
"""
def finish(self, *args, **kwargs):
"""Finish building this buffer
Performs any steps required to finish building this buffer and
returns the result. Any behaviour resulting from calling methods
on this object after it has been finished is not currently
defined (but should not crash).
"""
def reserve_bytes(self, *args, **kwargs):
"""Ensure that the underlying buffer has space for ``additional_bytes``
more bytes to be written"""
def set_data_type(self, *args, **kwargs):
"""Set the data type used to interpret elements in :meth:`write_elements`."""
def set_format(self, *args, **kwargs):
"""Set the Python buffer format used to interpret elements in
:meth:`write_elements`.
"""
def write(self, *args, **kwargs):
"""Write bytes to this buffer
Writes the bytes of ``content`` without considering the element type of
``content`` or the element type of this buffer.
This method returns the number of bytes that were written.
"""
def write_elements(self, *args, **kwargs):
""" "Write an iterable of elements to this buffer
Writes the elements of iterable ``obj`` according to the binary
representation specified by :attr:`format`. This is currently
powered by ``struct.pack_into()`` except when building bitmaps
where an internal implementation is used.
This method returns the number of elements that were written.
"""
def write_fill(self, *args, **kwargs):
"""Write fill bytes to this buffer
Appends the byte ``value`` to this buffer ``size_bytes`` times.
"""
def __buffer__(self, *args, **kwargs):
"""Return a buffer object that exposes the underlying memory of the object."""
def __len__(self) -> int:
"""Return len(self)."""
def __reduce__(self): ...
def __release_buffer__(self, *args, **kwargs):
"""Release the buffer object that exposes the underlying memory of the object."""
class CBufferView:
__pyx_vtable__: ClassVar[PyCapsule] = ...
data_type: Incomplete
data_type_id: Incomplete
device: Incomplete
element_size_bits: Incomplete
format: Incomplete
itemsize: Incomplete
n_elements: Incomplete
size_bytes: Incomplete
@classmethod
def __init__(cls, *args, **kwargs) -> None:
"""Create and return a new object. See help(type) for accurate signature."""
def copy(self, *args, **kwargs): ...
def copy_into(self, *args, **kwargs): ...
def element(self, *args, **kwargs): ...
def elements(self, *args, **kwargs): ...
def unpack_bits(self, *args, **kwargs): ...
def unpack_bits_into(self, *args, **kwargs): ...
def __buffer__(self, *args, **kwargs):
"""Return a buffer object that exposes the underlying memory of the object."""
def __dlpack__(self, *args, **kwargs):
"""
Export CBufferView as a DLPack capsule.
Parameters
----------
stream : int, optional
A Python integer representing a pointer to a stream.
Stream is provided by the consumer to the producer to instruct the producer
to ensure that operations can safely be performed on the array.
Returns
-------
capsule : PyCapsule
A DLPack capsule for the array, pointing to a DLManagedTensor.
"""
def __dlpack_device__(self, *args, **kwargs):
"""
Return the DLPack device tuple this CBufferView resides on.
Returns
-------
tuple : Tuple[int, int]
Tuple with index specifying the type of the device (where
CPU = 1, see python/src/nanoarrow/dpack_abi.h) and index of the
device which is 0 by default for CPU.
"""
def __getitem__(self, index):
"""Return self[key]."""
def __iter__(self):
"""Implement iter(self)."""
def __len__(self) -> int:
"""Return len(self)."""
def __reduce__(self): ...
def __release_buffer__(self, *args, **kwargs):
"""Release the buffer object that exposes the underlying memory of the object."""
class NoneAwareWrapperIterator:
__pyx_vtable__: ClassVar[PyCapsule] = ...
@classmethod
def __init__(cls, *args, **kwargs) -> None:
"""Create and return a new object. See help(type) for accurate signature."""
def finish(self, *args, **kwargs):
"""Obtain the total count, null count, and validity bitmap after
consuming this iterable."""
def reserve(self, *args, **kwargs): ...
def __iter__(self):
"""Implement iter(self)."""
def __reduce__(self): ...