123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- """
- compat
- ======
- Cross-compatible functions for different versions of Python.
- Other items:
- * platform checker
- """
- import platform
- import struct
- import sys
- import warnings
- PY37 = sys.version_info >= (3, 7)
- PY38 = sys.version_info >= (3, 8)
- PYPY = platform.python_implementation() == "PyPy"
- # ----------------------------------------------------------------------------
- # functions largely based / taken from the six module
- # Much of the code in this module comes from Benjamin Peterson's six library.
- # The license for this library can be found in LICENSES/SIX and the code can be
- # found at https://bitbucket.org/gutworth/six
- def set_function_name(f, name, cls):
- """
- Bind the name/qualname attributes of the function.
- """
- f.__name__ = name
- f.__qualname__ = f"{cls.__name__}.{name}"
- f.__module__ = cls.__module__
- return f
- # https://github.com/pandas-dev/pandas/pull/9123
- 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 == "win32" or sys.platform == "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 == "linux2"
- 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_32bit() -> bool:
- """
- Checking if the running platform is 32-bit.
- Returns
- -------
- bool
- True if the running platform is 32-bit.
- """
- return struct.calcsize("P") * 8 < 64
- def _import_lzma():
- """
- Importing the `lzma` module.
- Warns
- -----
- When the `lzma` module is not available.
- """
- try:
- import lzma
- return lzma
- except ImportError:
- msg = (
- "Could not import the lzma module. "
- "Your installed Python is incomplete. "
- "Attempting to use lzma compression will result in a RuntimeError."
- )
- warnings.warn(msg)
- def _get_lzma_file(lzma):
- """
- 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 lzma is None:
- raise RuntimeError(
- "lzma module not available. "
- "A Python re-install with the proper dependencies, "
- "might be required to solve this issue."
- )
- return lzma.LZMAFile
|