""" Utility module to determine the OS Python running on -------------------------------------------------------------------------- File: utilsOsType.py Overview: Python module to supply functions and an enumeration to help determine the platform type, bit size and OS currently being used. -------------------------------------------------------------------------- """ # Python modules: import sys # Provide system information # Third party modules: # In-house modules: # Instantiations: # Enumerations: #----------------------------------------------------------------------------- # Details: Class to implement a 'C' style enumeration type. # Gotchas: None. # Authors: Illya Rudkin 28/11/2013. # Changes: None. #-- if sys.version_info.major >= 3: from enum import Enum class EnumOsType(Enum): Unknown = 0 Darwin = 1 FreeBSD = 2 Linux = 3 NetBSD = 4 Windows = 5 kFreeBSD = 6 else: class EnumOsType(object): values = ["Unknown", "Darwin", "FreeBSD", "Linux", "NetBSD", "Windows", "kFreeBSD"] class __metaclass__(type): #++---------------------------------------------------------------- # Details: Fn acts as an enumeration. # Args: vName - (R) Enumeration to match. # Returns: Int - Matching enumeration/index. # Throws: None. #-- def __getattr__(cls, vName): return cls.values.index(vName) #++--------------------------------------------------------------------------- # Details: Reverse fast lookup of the values list. # Args: vI - (R) Index / enumeration. # Returns: Str - text description matching enumeration. # Throws: None. #-- def name_of(cls, vI): return EnumOsType.values[vI] #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- #++--------------------------------------------------------------------------- # Details: Determine what operating system is currently running on. # Args: None. # Returns: EnumOsType - The OS type being used ATM. # Throws: None. #-- def determine_os_type(): eOSType = EnumOsType.Unknown strOS = sys.platform if strOS == "darwin": eOSType = EnumOsType.Darwin elif strOS.startswith("freebsd"): eOSType = EnumOsType.FreeBSD elif strOS.startswith("linux"): eOSType = EnumOsType.Linux elif strOS.startswith("netbsd"): eOSType = EnumOsType.NetBSD elif strOS == "win32": eOSType = EnumOsType.Windows elif strOS.startswith("gnukfreebsd"): eOSType = EnumOsType.kFreeBSD return eOSType