174 lines
3.4 KiB
Python
174 lines
3.4 KiB
Python
|
|
"""
|
||
|
|
compat
|
||
|
|
======
|
||
|
|
|
||
|
|
Cross-compatible functions for different versions of Python.
|
||
|
|
|
||
|
|
Other items:
|
||
|
|
* platform checker
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import os
|
||
|
|
import platform
|
||
|
|
import sys
|
||
|
|
from typing import TYPE_CHECKING
|
||
|
|
|
||
|
|
from pandas.compat._constants import (
|
||
|
|
CHAINED_WARNING_DISABLED,
|
||
|
|
IS64,
|
||
|
|
ISMUSL,
|
||
|
|
PY312,
|
||
|
|
PY314,
|
||
|
|
PYPY,
|
||
|
|
WASM,
|
||
|
|
)
|
||
|
|
from pandas.compat.numpy import is_numpy_dev
|
||
|
|
from pandas.compat.pyarrow import (
|
||
|
|
HAS_PYARROW,
|
||
|
|
PYARROW_MIN_VERSION,
|
||
|
|
pa_version_under14p0,
|
||
|
|
pa_version_under14p1,
|
||
|
|
pa_version_under16p0,
|
||
|
|
pa_version_under17p0,
|
||
|
|
pa_version_under18p0,
|
||
|
|
pa_version_under19p0,
|
||
|
|
pa_version_under20p0,
|
||
|
|
pa_version_under21p0,
|
||
|
|
)
|
||
|
|
|
||
|
|
if TYPE_CHECKING:
|
||
|
|
from pandas._typing import F
|
||
|
|
|
||
|
|
|
||
|
|
def set_function_name(f: F, name: str, cls: type) -> F:
|
||
|
|
"""
|
||
|
|
Bind the name/qualname attributes of the function.
|
||
|
|
"""
|
||
|
|
f.__name__ = name
|
||
|
|
f.__qualname__ = f"{cls.__name__}.{name}"
|
||
|
|
f.__module__ = cls.__module__
|
||
|
|
return f
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_little_endian() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform is little endian.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform is little endian.
|
||
|
|
"""
|
||
|
|
return sys.byteorder == "little"
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_windows() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform is windows.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform is windows.
|
||
|
|
"""
|
||
|
|
return sys.platform in ["win32", "cygwin"]
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_linux() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform is linux.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform is linux.
|
||
|
|
"""
|
||
|
|
return sys.platform == "linux"
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_mac() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform is mac.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform is mac.
|
||
|
|
"""
|
||
|
|
return sys.platform == "darwin"
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_arm() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform use ARM architecture.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform uses ARM architecture.
|
||
|
|
"""
|
||
|
|
return platform.machine() in ("arm64", "aarch64") or platform.machine().startswith(
|
||
|
|
"armv"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_power() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform use Power architecture.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform uses ARM architecture.
|
||
|
|
"""
|
||
|
|
return platform.machine() in ("ppc64", "ppc64le")
|
||
|
|
|
||
|
|
|
||
|
|
def is_platform_riscv64() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if the running platform use riscv64 architecture.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running platform uses riscv64 architecture.
|
||
|
|
"""
|
||
|
|
return platform.machine() == "riscv64"
|
||
|
|
|
||
|
|
|
||
|
|
def is_ci_environment() -> bool:
|
||
|
|
"""
|
||
|
|
Checking if running in a continuous integration environment by checking
|
||
|
|
the PANDAS_CI environment variable.
|
||
|
|
|
||
|
|
Returns
|
||
|
|
-------
|
||
|
|
bool
|
||
|
|
True if the running in a continuous integration environment.
|
||
|
|
"""
|
||
|
|
return os.environ.get("PANDAS_CI", "0") == "1"
|
||
|
|
|
||
|
|
|
||
|
|
__all__ = [
|
||
|
|
"CHAINED_WARNING_DISABLED",
|
||
|
|
"HAS_PYARROW",
|
||
|
|
"IS64",
|
||
|
|
"ISMUSL",
|
||
|
|
"PY312",
|
||
|
|
"PY314",
|
||
|
|
"PYARROW_MIN_VERSION",
|
||
|
|
"PYPY",
|
||
|
|
"WASM",
|
||
|
|
"is_numpy_dev",
|
||
|
|
"pa_version_under14p0",
|
||
|
|
"pa_version_under14p1",
|
||
|
|
"pa_version_under16p0",
|
||
|
|
"pa_version_under17p0",
|
||
|
|
"pa_version_under18p0",
|
||
|
|
"pa_version_under19p0",
|
||
|
|
"pa_version_under20p0",
|
||
|
|
"pa_version_under21p0",
|
||
|
|
]
|