Files
Buffteks-Website/buffteks/lib/python3.12/site-packages/narwhals/_translate.py
2025-05-08 21:10:14 -05:00

135 lines
3.7 KiB
Python

from __future__ import annotations
from typing import TYPE_CHECKING
from typing import Any
from typing import Iterable
from typing import Mapping
from typing import Protocol
if TYPE_CHECKING:
import pyarrow as pa
from typing_extensions import Self
from typing_extensions import TypeAlias
from typing_extensions import TypeVar
else: # pragma: no cover
import sys
from importlib.util import find_spec
if sys.version_info >= (3, 13):
from typing import TypeVar
elif find_spec("typing_extensions"):
from typing_extensions import TypeVar
else:
from typing import TypeVar as _TypeVar
def TypeVar( # noqa: ANN202, N802
name: str,
*constraints: Any,
bound: Any | None = None,
covariant: bool = False,
contravariant: bool = False,
**kwds: Any, # noqa: ARG001
):
return _TypeVar(
name,
*constraints,
bound=bound,
covariant=covariant,
contravariant=contravariant,
)
class ArrowStreamExportable(Protocol):
def __arrow_c_stream__(self, requested_schema: object | None = None) -> object: ...
ToNumpyT_co = TypeVar("ToNumpyT_co", covariant=True)
FromNumpyDT_contra = TypeVar(
"FromNumpyDT_contra", contravariant=True, default=ToNumpyT_co
)
FromNumpyT_contra = TypeVar("FromNumpyT_contra", contravariant=True)
class ToNumpy(Protocol[ToNumpyT_co]):
def to_numpy(self, *args: Any, **kwds: Any) -> ToNumpyT_co: ...
class FromNumpy(Protocol[FromNumpyT_contra]):
@classmethod
def from_numpy(cls, data: FromNumpyT_contra, *args: Any, **kwds: Any) -> Self: ...
class NumpyConvertible(
ToNumpy[ToNumpyT_co],
FromNumpy[FromNumpyDT_contra],
Protocol[ToNumpyT_co, FromNumpyDT_contra],
):
def to_numpy(self, dtype: Any, *, copy: bool | None) -> ToNumpyT_co: ...
FromIterableT_contra = TypeVar("FromIterableT_contra", contravariant=True, default=Any)
class FromIterable(Protocol[FromIterableT_contra]):
@classmethod
def from_iterable(
cls, data: Iterable[FromIterableT_contra], *args: Any, **kwds: Any
) -> Self: ...
ToDictDT_co = TypeVar(
"ToDictDT_co", bound=Mapping[str, Any], covariant=True, default="dict[str, Any]"
)
FromDictDT_contra = TypeVar(
"FromDictDT_contra",
bound=Mapping[str, Any],
contravariant=True,
default=Mapping[str, Any],
)
class ToDict(Protocol[ToDictDT_co]):
def to_dict(self, *args: Any, **kwds: Any) -> ToDictDT_co: ...
class FromDict(Protocol[FromDictDT_contra]):
@classmethod
def from_dict(cls, data: FromDictDT_contra, *args: Any, **kwds: Any) -> Self: ...
class DictConvertible(
ToDict[ToDictDT_co],
FromDict[FromDictDT_contra],
Protocol[ToDictDT_co, FromDictDT_contra],
): ...
IntoArrowTable: TypeAlias = "ArrowStreamExportable | pa.Table"
"""An object supporting the [Arrow PyCapsule Interface], or a native [`pyarrow.Table`].
[Arrow PyCapsule Interface]: https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html#arrowstream-export
[`pyarrow.Table`]: https://arrow.apache.org/docs/python/generated/pyarrow.Table.html
"""
ToArrowT_co = TypeVar("ToArrowT_co", covariant=True)
FromArrowDT_contra = TypeVar(
"FromArrowDT_contra", contravariant=True, default=IntoArrowTable
)
class ToArrow(Protocol[ToArrowT_co]):
def to_arrow(self, *args: Any, **kwds: Any) -> ToArrowT_co: ...
class FromArrow(Protocol[FromArrowDT_contra]):
@classmethod
def from_arrow(cls, data: FromArrowDT_contra, *args: Any, **kwds: Any) -> Self: ...
class ArrowConvertible(
ToArrow[ToArrowT_co],
FromArrow[FromArrowDT_contra],
Protocol[ToArrowT_co, FromArrowDT_contra],
): ...