diff --git a/extra_platforms/__init__.py b/extra_platforms/__init__.py index 7679544d..7b4ac7f1 100644 --- a/extra_platforms/__init__.py +++ b/extra_platforms/__init__.py @@ -61,6 +61,7 @@ is_sles, is_solaris, is_sunos, + is_tuxedo, is_ubuntu, is_unknown_linux, is_windows, @@ -125,6 +126,7 @@ SLES, SOLARIS, SUNOS, + TUXEDO, UBUNTU, UNKNOWN_LINUX, WINDOWS, @@ -273,6 +275,7 @@ def current_os() -> Platform: "is_solaris", # noqa: F405 "is_sunos", # noqa: F405 "is_system_v", # noqa: F405, F822 + "is_tuxedo", # noqa: F405, F822 "is_ubuntu", # noqa: F405 "is_unix", # noqa: F405, F822 "is_unix_layers", # noqa: F405, F822 @@ -310,6 +313,7 @@ def current_os() -> Platform: "SOLARIS", # noqa: F405 "SUNOS", # noqa: F405 "SYSTEM_V", # noqa: F405 + "TUXEDO", # noqa: F405 "UBUNTU", # noqa: F405 "UNIX", # noqa: F405 "UNIX_LAYERS", # noqa: F405 diff --git a/extra_platforms/detection.py b/extra_platforms/detection.py index ad838c50..ab5361f1 100644 --- a/extra_platforms/detection.py +++ b/extra_platforms/detection.py @@ -272,6 +272,12 @@ def is_sunos() -> bool: return platform.platform(aliased=True, terse=True).startswith("SunOS") +@cache +def is_tuxedo() -> bool: + """Return `True` only if current platform is Tuxedo OS.""" + return distro.id() == "tuxedo" + + @cache def is_ubuntu() -> bool: """Return `True` only if current platform is Ubuntu.""" @@ -313,6 +319,7 @@ def is_unknown_linux() -> bool: or is_scientific() or is_slackware() or is_sles() + or is_tuxedo() or is_ubuntu() or is_xenserver() or is_wsl1() diff --git a/extra_platforms/groups.py b/extra_platforms/groups.py index 544c0348..528508e0 100644 --- a/extra_platforms/groups.py +++ b/extra_platforms/groups.py @@ -59,6 +59,7 @@ SLES, SOLARIS, SUNOS, + TUXEDO, UBUNTU, UNKNOWN_LINUX, WINDOWS, @@ -189,6 +190,7 @@ def issuperset(self, other: Group | Iterable[Platform] | Platform) -> bool: SLES, SOLARIS, SUNOS, + TUXEDO, UBUNTU, UNKNOWN_LINUX, WINDOWS, @@ -286,6 +288,7 @@ def issuperset(self, other: Group | Iterable[Platform] | Platform) -> bool: SCIENTIFIC, SLACKWARE, SLES, + TUXEDO, UBUNTU, UNKNOWN_LINUX, XENSERVER, diff --git a/extra_platforms/platforms.py b/extra_platforms/platforms.py index 2f8c03ed..2065c0d7 100644 --- a/extra_platforms/platforms.py +++ b/extra_platforms/platforms.py @@ -277,6 +277,7 @@ def _windows_infos() -> dict[str, Any]: SLES = Platform("sles", "SUSE Linux Enterprise Server", "🦎") SOLARIS = Platform("solaris", "Solaris", "🌞") SUNOS = Platform("sunos", "SunOS", "☀️") +TUXEDO = Platform("tuxedo", "Tuxedo OS") UBUNTU = Platform("ubuntu", "Ubuntu", "🎯") UNKNOWN_LINUX = Platform("unknown_linux", "Unknown Linux", "🐧") WINDOWS = Platform("windows", "Windows", "🪟") diff --git a/readme.md b/readme.md index adcf2ed1..2a005586 100644 --- a/readme.md +++ b/readme.md @@ -98,7 +98,7 @@ List all platforms of a family: >>> from extra_platforms import LINUX >>> LINUX -Group(id='linux', name='Any Linux', platform_ids=frozenset({'ibm_powerkvm', 'rocky', 'debian', 'ubuntu', 'mageia', 'xenserver', 'opensuse', 'buildroot', 'rhel', 'parallels', 'pidora', 'sles', 'amzn', 'scientific', 'linuxmint', 'centos', 'android', 'gentoo', 'raspbian', 'unknown_linux', 'mandriva', 'exherbo', 'cloudlinux', 'fedora', 'guix', 'arch', 'altlinux', 'slackware', 'oracle', 'kvmibm'})) +Group(id='linux', name='Any Linux', platform_ids=frozenset({'ibm_powerkvm', 'rocky', 'debian', 'tuxedo', 'ubuntu', 'mageia', 'xenserver', 'opensuse', 'buildroot', 'rhel', 'parallels', 'pidora', 'sles', 'amzn', 'scientific', 'linuxmint', 'centos', 'android', 'gentoo', 'raspbian', 'unknown_linux', 'mandriva', 'exherbo', 'cloudlinux', 'fedora', 'guix', 'arch', 'altlinux', 'slackware', 'oracle', 'kvmibm'})) >>> print("\n".join([p.name for p in LINUX])) ALT Linux @@ -128,6 +128,7 @@ Rocky Linux Scientific Linux Slackware SUSE Linux Enterprise Server +Tuxedo OS Ubuntu Unknown Linux XenServer @@ -202,6 +203,7 @@ all_platforms,slackware,1 all_platforms,sles,1 all_platforms,solaris,1 all_platforms,sunos,1 +all_platforms,tuxedo,1 all_platforms,ubuntu,1 all_platforms,unknown_linux,1 all_platforms,windows,1 @@ -245,6 +247,7 @@ unix,slackware,1 unix,sles,1 unix,solaris,1 unix,sunos,1 +unix,tuxedo,1 unix,ubuntu,1 unix,unknown_linux,1 unix,wsl1,1 @@ -318,6 +321,7 @@ linux_like,rocky,1 linux_like,scientific,1 linux_like,slackware,1 linux_like,sles,1 +linux_like,tuxedo,1 linux_like,ubuntu,1 linux_like,unknown_linux,1 linux_like,wsl1,1 @@ -350,6 +354,7 @@ linux,rocky,1 linux,scientific,1 linux,slackware,1 linux,sles,1 +linux,tuxedo,1 linux,ubuntu,1 linux,unknown_linux,1 linux,xenserver,1 @@ -424,6 +429,7 @@ flowchart linux_scientific(scientific
Scientific Linux) linux_slackware(slackware
Slackware) linux_sles(sles
🦎 SUSE Linux Enterprise Server) + linux_tuxedo(tuxedo
Tuxedo OS) linux_ubuntu(ubuntu
🎯 Ubuntu) linux_unknown_linux(unknown_linux
🐧 Unknown Linux) linux_xenserver(xenserver
XenServer) @@ -494,6 +500,7 @@ flowchart all_platforms_sles(sles
🦎 SUSE Linux Enterprise Server) all_platforms_solaris(solaris
🌞 Solaris) all_platforms_sunos(sunos
☀️ SunOS) + all_platforms_tuxedo(tuxedo
Tuxedo OS) all_platforms_ubuntu(ubuntu
🎯 Ubuntu) all_platforms_unknown_linux(unknown_linux
🐧 Unknown Linux) all_platforms_windows(windows
🪟 Windows) @@ -536,6 +543,7 @@ flowchart linux_like_scientific(scientific
Scientific Linux) linux_like_slackware(slackware
Slackware) linux_like_sles(sles
🦎 SUSE Linux Enterprise Server) + linux_like_tuxedo(tuxedo
Tuxedo OS) linux_like_ubuntu(ubuntu
🎯 Ubuntu) linux_like_unknown_linux(unknown_linux
🐧 Unknown Linux) linux_like_wsl1(wsl1
Windows Subsystem for Linux v1) @@ -580,6 +588,7 @@ flowchart unix_sles(sles
🦎 SUSE Linux Enterprise Server) unix_solaris(solaris
🌞 Solaris) unix_sunos(sunos
☀️ SunOS) + unix_tuxedo(tuxedo
Tuxedo OS) unix_ubuntu(ubuntu
🎯 Ubuntu) unix_unknown_linux(unknown_linux
🐧 Unknown Linux) unix_wsl1(wsl1
Windows Subsystem for Linux v1) @@ -623,6 +632,7 @@ flowchart unix_without_macos_sles(sles
🦎 SUSE Linux Enterprise Server) unix_without_macos_solaris(solaris
🌞 Solaris) unix_without_macos_sunos(sunos
☀️ SunOS) + unix_without_macos_tuxedo(tuxedo
Tuxedo OS) unix_without_macos_ubuntu(ubuntu
🎯 Ubuntu) unix_without_macos_unknown_linux(unknown_linux
🐧 Unknown Linux) unix_without_macos_wsl1(wsl1
Windows Subsystem for Linux v1) diff --git a/tests/test_platforms.py b/tests/test_platforms.py index 9ef804e5..08623676 100644 --- a/tests/test_platforms.py +++ b/tests/test_platforms.py @@ -78,6 +78,7 @@ SOLARIS, SUNOS, SYSTEM_V, + TUXEDO, UBUNTU, UNIX, UNIX_LAYERS, @@ -126,6 +127,7 @@ is_sles, is_solaris, is_sunos, + is_tuxedo, is_ubuntu, is_unknown_linux, is_windows, @@ -229,6 +231,7 @@ def test_mutual_exclusion(): assert not is_sles() assert not is_solaris() assert not is_sunos() + assert not is_tuxedo() # assert not is_ubuntu() assert not is_unknown_linux() assert not is_windows() @@ -276,6 +279,7 @@ def test_mutual_exclusion(): assert not is_sles() assert not is_solaris() assert not is_sunos() + assert not is_tuxedo() assert not is_ubuntu() assert not is_unknown_linux() assert not is_windows() @@ -323,6 +327,7 @@ def test_mutual_exclusion(): assert not is_sles() assert not is_solaris() assert not is_sunos() + assert not is_tuxedo() assert not is_ubuntu() assert not is_unknown_linux() # assert not is_windows() @@ -634,6 +639,7 @@ def test_overlapping_groups(): SLES, SOLARIS, SUNOS, + TUXEDO, UBUNTU, UNKNOWN_LINUX, WINDOWS,