done
This commit is contained in:
@ -0,0 +1,120 @@
|
||||
import abc
|
||||
from abc import (
|
||||
ABC,
|
||||
abstractmethod,
|
||||
)
|
||||
from collections.abc import (
|
||||
Iterable,
|
||||
Sequence,
|
||||
)
|
||||
import enum
|
||||
from typing import (
|
||||
Any,
|
||||
TypedDict,
|
||||
cast,
|
||||
)
|
||||
|
||||
class DlpackDeviceType(enum.IntEnum):
|
||||
CPU = cast(int, ...)
|
||||
CUDA = cast(int, ...)
|
||||
CPU_PINNED = cast(int, ...)
|
||||
OPENCL = cast(int, ...)
|
||||
VULKAN = cast(int, ...)
|
||||
METAL = cast(int, ...)
|
||||
VPI = cast(int, ...)
|
||||
ROCM = cast(int, ...)
|
||||
|
||||
class DtypeKind(enum.IntEnum):
|
||||
INT = cast(int, ...)
|
||||
UINT = cast(int, ...)
|
||||
FLOAT = cast(int, ...)
|
||||
BOOL = cast(int, ...)
|
||||
STRING = cast(int, ...)
|
||||
DATETIME = cast(int, ...)
|
||||
CATEGORICAL = cast(int, ...)
|
||||
|
||||
class ColumnNullType(enum.IntEnum):
|
||||
NON_NULLABLE = cast(int, ...)
|
||||
USE_NAN = cast(int, ...)
|
||||
USE_SENTINEL = cast(int, ...)
|
||||
USE_BITMASK = cast(int, ...)
|
||||
USE_BYTEMASK = cast(int, ...)
|
||||
|
||||
class ColumnBuffers(TypedDict):
|
||||
data: tuple[Buffer, Any]
|
||||
validity: tuple[Buffer, Any] | None
|
||||
offsets: tuple[Buffer, Any] | None
|
||||
|
||||
class CategoricalDescription(TypedDict):
|
||||
is_ordered: bool
|
||||
is_dictionary: bool
|
||||
categories: Column | None
|
||||
|
||||
class Buffer(ABC, metaclass=abc.ABCMeta):
|
||||
@property
|
||||
@abstractmethod
|
||||
def bufsize(self) -> int: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def ptr(self) -> int: ...
|
||||
@abstractmethod
|
||||
def __dlpack__(self): ...
|
||||
@abstractmethod
|
||||
def __dlpack_device__(self) -> tuple[DlpackDeviceType, int | None]: ...
|
||||
|
||||
class Column(ABC, metaclass=abc.ABCMeta):
|
||||
@property
|
||||
@abstractmethod
|
||||
def size(self) -> int: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def offset(self) -> int: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def dtype(self) -> tuple[DtypeKind, int, str, str]: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def describe_categorical(self) -> CategoricalDescription: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def describe_null(self) -> tuple[ColumnNullType, Any]: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def null_count(self) -> int | None: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def metadata(self) -> dict[str, Any]: ...
|
||||
@abstractmethod
|
||||
def num_chunks(self) -> int: ...
|
||||
@abstractmethod
|
||||
def get_chunks(self, n_chunks: int | None = ...) -> Iterable[Column]: ...
|
||||
@abstractmethod
|
||||
def get_buffers(self) -> ColumnBuffers: ...
|
||||
|
||||
class DataFrame(ABC, metaclass=abc.ABCMeta):
|
||||
version: int
|
||||
@abstractmethod
|
||||
def __dataframe__(self, nan_as_null: bool = ..., allow_copy: bool = ...): ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def metadata(self) -> dict[str, Any]: ...
|
||||
@abstractmethod
|
||||
def num_columns(self) -> int: ...
|
||||
@abstractmethod
|
||||
def num_rows(self) -> int | None: ...
|
||||
@abstractmethod
|
||||
def num_chunks(self) -> int: ...
|
||||
@abstractmethod
|
||||
def column_names(self) -> Iterable[str]: ...
|
||||
@abstractmethod
|
||||
def get_column(self, i: int) -> Column: ...
|
||||
@abstractmethod
|
||||
def get_column_by_name(self, name: str) -> Column: ...
|
||||
@abstractmethod
|
||||
def get_columns(self) -> Iterable[Column]: ...
|
||||
@abstractmethod
|
||||
def select_columns(self, indices: Sequence[int]) -> DataFrame: ...
|
||||
@abstractmethod
|
||||
def select_columns_by_name(self, names: Sequence[str]) -> DataFrame: ...
|
||||
@abstractmethod
|
||||
def get_chunks(self, n_chunks: int | None = ...) -> Iterable[DataFrame]: ...
|
@ -0,0 +1,3 @@
|
||||
import pandas as pd
|
||||
|
||||
def from_dataframe(df, allow_copy: bool = True) -> pd.DataFrame: ...
|
Reference in New Issue
Block a user