You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			214 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			214 lines
		
	
	
		
			4.5 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 (
 | 
						|
    IS64,
 | 
						|
    ISMUSL,
 | 
						|
    PY310,
 | 
						|
    PY311,
 | 
						|
    PY312,
 | 
						|
    PY314,
 | 
						|
    PYPY,
 | 
						|
    WARNING_CHECK_DISABLED,
 | 
						|
)
 | 
						|
import pandas.compat.compressors
 | 
						|
from pandas.compat.numpy import is_numpy_dev
 | 
						|
from pandas.compat.pyarrow import (
 | 
						|
    HAS_PYARROW,
 | 
						|
    pa_version_under10p1,
 | 
						|
    pa_version_under11p0,
 | 
						|
    pa_version_under13p0,
 | 
						|
    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_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"
 | 
						|
 | 
						|
 | 
						|
def get_lzma_file() -> type[pandas.compat.compressors.LZMAFile]:
 | 
						|
    """
 | 
						|
    Importing the `LZMAFile` class from the `lzma` module.
 | 
						|
 | 
						|
    Returns
 | 
						|
    -------
 | 
						|
    class
 | 
						|
        The `LZMAFile` class from the `lzma` module.
 | 
						|
 | 
						|
    Raises
 | 
						|
    ------
 | 
						|
    RuntimeError
 | 
						|
        If the `lzma` module was not imported correctly, or didn't exist.
 | 
						|
    """
 | 
						|
    if not pandas.compat.compressors.has_lzma:
 | 
						|
        raise RuntimeError(
 | 
						|
            "lzma module not available. "
 | 
						|
            "A Python re-install with the proper dependencies, "
 | 
						|
            "might be required to solve this issue."
 | 
						|
        )
 | 
						|
    return pandas.compat.compressors.LZMAFile
 | 
						|
 | 
						|
 | 
						|
def get_bz2_file() -> type[pandas.compat.compressors.BZ2File]:
 | 
						|
    """
 | 
						|
    Importing the `BZ2File` class from the `bz2` module.
 | 
						|
 | 
						|
    Returns
 | 
						|
    -------
 | 
						|
    class
 | 
						|
        The `BZ2File` class from the `bz2` module.
 | 
						|
 | 
						|
    Raises
 | 
						|
    ------
 | 
						|
    RuntimeError
 | 
						|
        If the `bz2` module was not imported correctly, or didn't exist.
 | 
						|
    """
 | 
						|
    if not pandas.compat.compressors.has_bz2:
 | 
						|
        raise RuntimeError(
 | 
						|
            "bz2 module not available. "
 | 
						|
            "A Python re-install with the proper dependencies, "
 | 
						|
            "might be required to solve this issue."
 | 
						|
        )
 | 
						|
    return pandas.compat.compressors.BZ2File
 | 
						|
 | 
						|
 | 
						|
__all__ = [
 | 
						|
    "is_numpy_dev",
 | 
						|
    "pa_version_under10p1",
 | 
						|
    "pa_version_under11p0",
 | 
						|
    "pa_version_under13p0",
 | 
						|
    "pa_version_under14p0",
 | 
						|
    "pa_version_under14p1",
 | 
						|
    "pa_version_under16p0",
 | 
						|
    "pa_version_under17p0",
 | 
						|
    "pa_version_under18p0",
 | 
						|
    "pa_version_under19p0",
 | 
						|
    "pa_version_under20p0",
 | 
						|
    "pa_version_under21p0",
 | 
						|
    "HAS_PYARROW",
 | 
						|
    "IS64",
 | 
						|
    "ISMUSL",
 | 
						|
    "PY310",
 | 
						|
    "PY311",
 | 
						|
    "PY312",
 | 
						|
    "PY314",
 | 
						|
    "PYPY",
 | 
						|
    "WARNING_CHECK_DISABLED",
 | 
						|
]
 |