Source code for skbuild.platform_specifics.platform_factory

"""This modules implements the logic allowing to instantiate the expected
:class:`.abstract.CMakePlatform`."""

from __future__ import annotations

# pylint: disable=import-outside-toplevel
import platform

from . import abstract


[docs] def get_platform() -> abstract.CMakePlatform: """Return an instance of :class:`.abstract.CMakePlatform` corresponding to the current platform.""" this_platform = platform.system().lower() if this_platform == "windows": from . import windows return windows.WindowsPlatform() # Some flexibility based on what emcripten distros decide to call themselves if this_platform.startswith(("linux", "emscripten", "pyodide")): from . import linux return linux.LinuxPlatform() if this_platform.startswith("cygwin"): from . import cygwin return cygwin.CygwinPlatform() if this_platform == "darwin": from . import osx return osx.OSXPlatform() if this_platform in {"freebsd", "netbsd", "os400", "openbsd"}: from . import bsd return bsd.BSDPlatform() if this_platform == "sunos": from . import sunos return sunos.SunOSPlatform() if this_platform == "aix": from . import aix return aix.AIXPlatform() msg = f"Unsupported platform: {this_platform:s}. Please contact the scikit-build team." raise RuntimeError(msg)