https://github.com/kdeldycke/extra-platforms
Detect platforms and group them by family
https://github.com/kdeldycke/extra-platforms
aix android bsd cygwin distribution hurd linux macos multiplatform os-detection platform python solaris windows
Last synced: 3 months ago
JSON representation
Detect platforms and group them by family
- Host: GitHub
- URL: https://github.com/kdeldycke/extra-platforms
- Owner: kdeldycke
- License: gpl-2.0
- Created: 2024-08-16T09:36:41.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-14T11:03:15.000Z (about 1 year ago)
- Last Synced: 2025-03-16T01:13:11.518Z (about 1 year ago)
- Topics: aix, android, bsd, cygwin, distribution, hurd, linux, macos, multiplatform, os-detection, platform, python, solaris, windows
- Language: Python
- Homepage: https://kdeldycke.github.io/extra-platforms
- Size: 2.4 MB
- Stars: 10
- Watchers: 1
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- Funding: .github/funding.yml
- License: license
- Code of conduct: .github/code-of-conduct.md
- Citation: citation.cff
Awesome Lists containing this project
README
# Extra Platforms
[](https://pypi.python.org/pypi/extra-platforms)
[](https://pypi.python.org/pypi/extra-platforms)
[](https://pepy.tech/project/extra_platforms)
[](https://github.com/kdeldycke/extra-platforms/actions/workflows/tests.yaml?query=branch%3Amain)
[](https://app.codecov.io/gh/kdeldycke/extra-platforms)
[](https://github.com/kdeldycke/extra-platforms/actions/workflows/docs.yaml?query=branch%3Amain)
[](https://doi.org/10.5281/zenodo.13341712)
## What is Extra Platforms?
- Provides a list of all known platforms
- Detect the current platform, at the distribution level
- Gather current platform metadata (version, codename, etc.)
- Group platforms into families
- Manage collection of platforms and groups
- Associate each platform and group to an emoji symbol
- New conditional markers for `pytest`:
- `@skip_linux`, `@skip_macos` and `@skip_windows`
- `@unless_linux`, `@unless_macos` and `@unless_windows`
- Address [`distro#177` issue (support for Windows and Mac OS)](https://github.com/python-distro/distro/issues/177)
## Examples
Get the current platform, from which you can access lots of metadata:
```pycon
>>> from extra_platforms import current_os
>>> my_os = current_os()
>>> my_os
Platform(id='macos', name='macOS', current=True)
>>> my_os.id
'macos'
>>> my_os.name
'macOS'
>>> my_os.icon
'π'
>>> my_os.info()
{
"id": "macos",
"name": "macOS",
"icon": "π",
"current": True,
"distro_id": "darwin",
"version": "23.6.0",
"version_parts": {"major": "23", "minor": "6", "build_number": "0"},
"like": None,
"codename": None,
}
```
Check if a platform is a specific system:
```pycon
>>> from extra_platforms import is_gentoo
>>> is_gentoo()
False
```
Use groups to check if the current platform is part of a specific family:
```pycon
>>> from extra_platforms import UNIX, current_os
>>> current_os() in UNIX
False
```
Or directly use the boolean variables available for each family:
```pycon
>>> from extra_platforms import is_unix
>>> is_unix()
False
```
List all platforms of a family:
```pycon
>>> from extra_platforms import LINUX
>>> LINUX
Group(id='linux', name='Any Linux', platform_ids=frozenset({'ibm_powerkvm', 'rocky', 'debian', 'tuxedo', 'ubuntu', 'mageia', 'xenserver', 'opensuse', 'nobara', '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
Amazon Linux
Android
Arch Linux
Buildroot
CentOS
CloudLinux OS
Debian
Exherbo Linux
Fedora
Gentoo Linux
Guix System
IBM PowerKVM
KVM for IBM z Systems
Linux Mint
Mageia
Mandriva Linux
Nobara
openSUSE
Oracle Linux
Parallels
Pidora
Raspbian
RedHat Enterprise Linux
Rocky Linux
Scientific Linux
Slackware
SUSE Linux Enterprise Server
Tuxedo OS
Ubuntu
Unknown Linux
XenServer
```
Reduce a disparate collection of groups and platforms into a minimal descriptive set, by grouping all platforms into families:
```pycon
>>> from extra_platforms import AIX, MACOS, SOLARIS, reduce
>>> reduce([AIX, MACOS])
{
Platform(id='aix', name='IBM AIX', current=False),
Platform(id='macos', name='macOS', current=True),
}
>>> reduce([AIX, MACOS, SOLARIS])
{
Group(id='system_v', name='Any Unix derived from AT&T System Five', platform_ids=frozenset({'aix', 'solaris'})),
Platform(id='macos', name='macOS', current=True),
}
```
## Groups β Platforms mapping
Relationships between groups and platforms:
```mermaid
---
config: {"sankey": {"showValues": false, "width": 800, "height": 400}}
---
sankey-beta
ALL_PLATFORMS,aix,1
ALL_PLATFORMS,altlinux,1
ALL_PLATFORMS,amzn,1
ALL_PLATFORMS,android,1
ALL_PLATFORMS,arch,1
ALL_PLATFORMS,buildroot,1
ALL_PLATFORMS,centos,1
ALL_PLATFORMS,cloudlinux,1
ALL_PLATFORMS,cygwin,1
ALL_PLATFORMS,debian,1
ALL_PLATFORMS,exherbo,1
ALL_PLATFORMS,fedora,1
ALL_PLATFORMS,freebsd,1
ALL_PLATFORMS,gentoo,1
ALL_PLATFORMS,guix,1
ALL_PLATFORMS,hurd,1
ALL_PLATFORMS,ibm_powerkvm,1
ALL_PLATFORMS,kvmibm,1
ALL_PLATFORMS,linuxmint,1
ALL_PLATFORMS,macos,1
ALL_PLATFORMS,mageia,1
ALL_PLATFORMS,mandriva,1
ALL_PLATFORMS,midnightbsd,1
ALL_PLATFORMS,netbsd,1
ALL_PLATFORMS,nobara,1
ALL_PLATFORMS,openbsd,1
ALL_PLATFORMS,opensuse,1
ALL_PLATFORMS,oracle,1
ALL_PLATFORMS,parallels,1
ALL_PLATFORMS,pidora,1
ALL_PLATFORMS,raspbian,1
ALL_PLATFORMS,rhel,1
ALL_PLATFORMS,rocky,1
ALL_PLATFORMS,scientific,1
ALL_PLATFORMS,slackware,1
ALL_PLATFORMS,sles,1
ALL_PLATFORMS,solaris,1
ALL_PLATFORMS,sunos,1
ALL_PLATFORMS,tumbleweed,1
ALL_PLATFORMS,tuxedo,1
ALL_PLATFORMS,ubuntu,1
ALL_PLATFORMS,unknown_linux,1
ALL_PLATFORMS,windows,1
ALL_PLATFORMS,wsl1,1
ALL_PLATFORMS,wsl2,1
ALL_PLATFORMS,xenserver,1
UNIX,aix,1
UNIX,altlinux,1
UNIX,amzn,1
UNIX,android,1
UNIX,arch,1
UNIX,buildroot,1
UNIX,centos,1
UNIX,cloudlinux,1
UNIX,cygwin,1
UNIX,debian,1
UNIX,exherbo,1
UNIX,fedora,1
UNIX,freebsd,1
UNIX,gentoo,1
UNIX,guix,1
UNIX,hurd,1
UNIX,ibm_powerkvm,1
UNIX,kvmibm,1
UNIX,linuxmint,1
UNIX,macos,1
UNIX,mageia,1
UNIX,mandriva,1
UNIX,midnightbsd,1
UNIX,netbsd,1
UNIX,nobara,1
UNIX,openbsd,1
UNIX,opensuse,1
UNIX,oracle,1
UNIX,parallels,1
UNIX,pidora,1
UNIX,raspbian,1
UNIX,rhel,1
UNIX,rocky,1
UNIX,scientific,1
UNIX,slackware,1
UNIX,sles,1
UNIX,solaris,1
UNIX,sunos,1
UNIX,tumbleweed,1
UNIX,tuxedo,1
UNIX,ubuntu,1
UNIX,unknown_linux,1
UNIX,wsl1,1
UNIX,wsl2,1
UNIX,xenserver,1
UNIX_WITHOUT_MACOS,aix,1
UNIX_WITHOUT_MACOS,altlinux,1
UNIX_WITHOUT_MACOS,amzn,1
UNIX_WITHOUT_MACOS,android,1
UNIX_WITHOUT_MACOS,arch,1
UNIX_WITHOUT_MACOS,buildroot,1
UNIX_WITHOUT_MACOS,centos,1
UNIX_WITHOUT_MACOS,cloudlinux,1
UNIX_WITHOUT_MACOS,cygwin,1
UNIX_WITHOUT_MACOS,debian,1
UNIX_WITHOUT_MACOS,exherbo,1
UNIX_WITHOUT_MACOS,fedora,1
UNIX_WITHOUT_MACOS,freebsd,1
UNIX_WITHOUT_MACOS,gentoo,1
UNIX_WITHOUT_MACOS,guix,1
UNIX_WITHOUT_MACOS,hurd,1
UNIX_WITHOUT_MACOS,ibm_powerkvm,1
UNIX_WITHOUT_MACOS,kvmibm,1
UNIX_WITHOUT_MACOS,linuxmint,1
UNIX_WITHOUT_MACOS,mageia,1
UNIX_WITHOUT_MACOS,mandriva,1
UNIX_WITHOUT_MACOS,midnightbsd,1
UNIX_WITHOUT_MACOS,netbsd,1
UNIX_WITHOUT_MACOS,nobara,1
UNIX_WITHOUT_MACOS,openbsd,1
UNIX_WITHOUT_MACOS,opensuse,1
UNIX_WITHOUT_MACOS,oracle,1
UNIX_WITHOUT_MACOS,parallels,1
UNIX_WITHOUT_MACOS,pidora,1
UNIX_WITHOUT_MACOS,raspbian,1
UNIX_WITHOUT_MACOS,rhel,1
UNIX_WITHOUT_MACOS,rocky,1
UNIX_WITHOUT_MACOS,scientific,1
UNIX_WITHOUT_MACOS,slackware,1
UNIX_WITHOUT_MACOS,sles,1
UNIX_WITHOUT_MACOS,solaris,1
UNIX_WITHOUT_MACOS,sunos,1
UNIX_WITHOUT_MACOS,tumbleweed,1
UNIX_WITHOUT_MACOS,tuxedo,1
UNIX_WITHOUT_MACOS,ubuntu,1
UNIX_WITHOUT_MACOS,unknown_linux,1
UNIX_WITHOUT_MACOS,wsl1,1
UNIX_WITHOUT_MACOS,wsl2,1
UNIX_WITHOUT_MACOS,xenserver,1
LINUX_LIKE,altlinux,1
LINUX_LIKE,amzn,1
LINUX_LIKE,android,1
LINUX_LIKE,arch,1
LINUX_LIKE,buildroot,1
LINUX_LIKE,centos,1
LINUX_LIKE,cloudlinux,1
LINUX_LIKE,debian,1
LINUX_LIKE,exherbo,1
LINUX_LIKE,fedora,1
LINUX_LIKE,gentoo,1
LINUX_LIKE,guix,1
LINUX_LIKE,ibm_powerkvm,1
LINUX_LIKE,kvmibm,1
LINUX_LIKE,linuxmint,1
LINUX_LIKE,mageia,1
LINUX_LIKE,mandriva,1
LINUX_LIKE,nobara,1
LINUX_LIKE,opensuse,1
LINUX_LIKE,oracle,1
LINUX_LIKE,parallels,1
LINUX_LIKE,pidora,1
LINUX_LIKE,raspbian,1
LINUX_LIKE,rhel,1
LINUX_LIKE,rocky,1
LINUX_LIKE,scientific,1
LINUX_LIKE,slackware,1
LINUX_LIKE,sles,1
LINUX_LIKE,tumbleweed,1
LINUX_LIKE,tuxedo,1
LINUX_LIKE,ubuntu,1
LINUX_LIKE,unknown_linux,1
LINUX_LIKE,wsl1,1
LINUX_LIKE,wsl2,1
LINUX_LIKE,xenserver,1
LINUX,altlinux,1
LINUX,amzn,1
LINUX,android,1
LINUX,arch,1
LINUX,buildroot,1
LINUX,centos,1
LINUX,cloudlinux,1
LINUX,debian,1
LINUX,exherbo,1
LINUX,fedora,1
LINUX,gentoo,1
LINUX,guix,1
LINUX,ibm_powerkvm,1
LINUX,kvmibm,1
LINUX,linuxmint,1
LINUX,mageia,1
LINUX,mandriva,1
LINUX,nobara,1
LINUX,opensuse,1
LINUX,oracle,1
LINUX,parallels,1
LINUX,pidora,1
LINUX,raspbian,1
LINUX,rhel,1
LINUX,rocky,1
LINUX,scientific,1
LINUX,slackware,1
LINUX,sles,1
LINUX,tumbleweed,1
LINUX,tuxedo,1
LINUX,ubuntu,1
LINUX,unknown_linux,1
LINUX,xenserver,1
BSD,freebsd,1
BSD,macos,1
BSD,midnightbsd,1
BSD,netbsd,1
BSD,openbsd,1
BSD,sunos,1
BSD_WITHOUT_MACOS,freebsd,1
BSD_WITHOUT_MACOS,midnightbsd,1
BSD_WITHOUT_MACOS,netbsd,1
BSD_WITHOUT_MACOS,openbsd,1
BSD_WITHOUT_MACOS,sunos,1
SYSTEM_V,aix,1
SYSTEM_V,solaris,1
LINUX_LAYERS,wsl1,1
LINUX_LAYERS,wsl2,1
UNIX_LAYERS,cygwin,1
OTHER_UNIX,hurd,1
ANY_WINDOWS,windows,1
```
## OS families
Each platform is assigned to a group of non-overlpaping families:
```mermaid
---
config: {"mindmap": {"padding": 5}}
---
mindmap
((Extra Platforms))
)β UNIX_LAYERS(
(ΟΎ cygwin)
)β
€ SYSTEM_V(
(βΏ aix)
(π solaris)
)β OTHER_UNIX(
(π hurd)
)β LINUX_LAYERS(
(β wsl1)
(β wsl2)
)π§ LINUX(
(π§ altlinux)
(π amzn)
(π€ android)
(ποΈ arch)
(βοΈ buildroot)
(π centos)
(κ© cloudlinux)
(π debian)
(π½ exherbo)
(π© fedora)
(ποΈ gentoo)
(π guix)
(π€Ή ibm_powerkvm)
(π€Ή kvmibm)
(πΏ linuxmint)
(β₯ mageia)
(π« mandriva)
(ο nobara)
(π¦ opensuse)
(𦴠oracle)
(β₯ parallels)
(π pidora)
(π raspbian)
(π© rhel)
(β°οΈ rocky)
(βοΈ scientific)
(π¬ slackware)
(π¦ sles)
(β» tumbleweed)
(π€΅ tuxedo)
(π― ubuntu)
(π§ unknown_linux)
(β xenserver)
)π
±οΈ+ BSD(
(π freebsd)
(π macos)
(π midnightbsd)
(π© netbsd)
(π‘ openbsd)
(βοΈ sunos)
)πͺ ANY_WINDOWS(
(πͺ windows)
```
```mermaid
---
title: extra_platforms.NON_OVERLAPPING_GROUPS - Non-overlapping groups.
---
flowchart
subgraph "extra_platforms.ANY_WINDOWS
πͺ Any Windows"
any_windows_windows(windows
πͺ Windows)
end
subgraph "extra_platforms.BSD
π
±οΈ+ Any BSD"
bsd_freebsd(freebsd
π FreeBSD)
bsd_macos(macos
π macOS)
bsd_midnightbsd(midnightbsd
π MidnightBSD)
bsd_netbsd(netbsd
π© NetBSD)
bsd_openbsd(openbsd
π‘ OpenBSD)
bsd_sunos(sunos
βοΈ SunOS)
end
subgraph "extra_platforms.LINUX
π§ Any Linux distribution"
linux_altlinux(altlinux
π§ ALT Linux)
linux_amzn(amzn
π Amazon Linux)
linux_android(android
π€ Android)
linux_arch(arch
ποΈ Arch Linux)
linux_buildroot(buildroot
βοΈ Buildroot)
linux_centos(centos
π CentOS)
linux_cloudlinux(cloudlinux
κ© CloudLinux OS)
linux_debian(debian
π Debian)
linux_exherbo(exherbo
π½ Exherbo Linux)
linux_fedora(fedora
π© Fedora)
linux_gentoo(gentoo
ποΈ Gentoo Linux)
linux_guix(guix
π Guix System)
linux_ibm_powerkvm(ibm_powerkvm
π€Ή IBM PowerKVM)
linux_kvmibm(kvmibm
π€Ή KVM for IBM z Systems)
linux_linuxmint(linuxmint
πΏ Linux Mint)
linux_mageia(mageia
β₯ Mageia)
linux_mandriva(mandriva
π« Mandriva Linux)
linux_nobara(nobara
ο Nobara)
linux_opensuse(opensuse
π¦ openSUSE)
linux_oracle(oracle
𦴠Oracle Linux)
linux_parallels(parallels
β₯ Parallels)
linux_pidora(pidora
π Pidora)
linux_raspbian(raspbian
π Raspbian)
linux_rhel(rhel
π© RedHat Enterprise Linux)
linux_rocky(rocky
β°οΈ Rocky Linux)
linux_scientific(scientific
βοΈ Scientific Linux)
linux_slackware(slackware
π¬ Slackware)
linux_sles(sles
π¦ SUSE Linux Enterprise Server)
linux_tumbleweed(tumbleweed
β» openSUSE Tumbleweed)
linux_tuxedo(tuxedo
π€΅ Tuxedo OS)
linux_ubuntu(ubuntu
π― Ubuntu)
linux_unknown_linux(unknown_linux
π§ Unknown Linux)
linux_xenserver(xenserver
β XenServer)
end
subgraph "extra_platforms.LINUX_LAYERS
β Any Linux compatibility layers"
linux_layers_wsl1(wsl1
β Windows Subsystem for Linux v1)
linux_layers_wsl2(wsl2
β Windows Subsystem for Linux v2)
end
subgraph "extra_platforms.OTHER_UNIX
β Any other Unix"
other_unix_hurd(hurd
π GNU/Hurd)
end
subgraph "extra_platforms.SYSTEM_V
β
€ Any Unix derived from AT&T System Five"
system_v_aix(aix
βΏ IBM AIX)
system_v_solaris(solaris
π Solaris)
end
subgraph "extra_platforms.UNIX_LAYERS
β Any Unix compatibility layers"
unix_layers_cygwin(cygwin
ΟΎ Cygwin)
end
```
## Other groups
Other groups are available for convenience, but these overlaps:
```mermaid
---
title: extra_platforms.EXTRA_GROUPS - Overlapping groups, defined for convenience.
---
flowchart
subgraph "extra_platforms.ALL_PLATFORMS
π₯οΈ All platforms"
all_platforms_aix(aix
βΏ IBM AIX)
all_platforms_altlinux(altlinux
π§ ALT Linux)
all_platforms_amzn(amzn
π Amazon Linux)
all_platforms_android(android
π€ Android)
all_platforms_arch(arch
ποΈ Arch Linux)
all_platforms_buildroot(buildroot
βοΈ Buildroot)
all_platforms_centos(centos
π CentOS)
all_platforms_cloudlinux(cloudlinux
κ© CloudLinux OS)
all_platforms_cygwin(cygwin
ΟΎ Cygwin)
all_platforms_debian(debian
π Debian)
all_platforms_exherbo(exherbo
π½ Exherbo Linux)
all_platforms_fedora(fedora
π© Fedora)
all_platforms_freebsd(freebsd
π FreeBSD)
all_platforms_gentoo(gentoo
ποΈ Gentoo Linux)
all_platforms_guix(guix
π Guix System)
all_platforms_hurd(hurd
π GNU/Hurd)
all_platforms_ibm_powerkvm(ibm_powerkvm
π€Ή IBM PowerKVM)
all_platforms_kvmibm(kvmibm
π€Ή KVM for IBM z Systems)
all_platforms_linuxmint(linuxmint
πΏ Linux Mint)
all_platforms_macos(macos
π macOS)
all_platforms_mageia(mageia
β₯ Mageia)
all_platforms_mandriva(mandriva
π« Mandriva Linux)
all_platforms_midnightbsd(midnightbsd
π MidnightBSD)
all_platforms_netbsd(netbsd
π© NetBSD)
all_platforms_nobara(nobara
ο Nobara)
all_platforms_openbsd(openbsd
π‘ OpenBSD)
all_platforms_opensuse(opensuse
π¦ openSUSE)
all_platforms_oracle(oracle
𦴠Oracle Linux)
all_platforms_parallels(parallels
β₯ Parallels)
all_platforms_pidora(pidora
π Pidora)
all_platforms_raspbian(raspbian
π Raspbian)
all_platforms_rhel(rhel
π© RedHat Enterprise Linux)
all_platforms_rocky(rocky
β°οΈ Rocky Linux)
all_platforms_scientific(scientific
βοΈ Scientific Linux)
all_platforms_slackware(slackware
π¬ Slackware)
all_platforms_sles(sles
π¦ SUSE Linux Enterprise Server)
all_platforms_solaris(solaris
π Solaris)
all_platforms_sunos(sunos
βοΈ SunOS)
all_platforms_tumbleweed(tumbleweed
β» openSUSE Tumbleweed)
all_platforms_tuxedo(tuxedo
π€΅ Tuxedo OS)
all_platforms_ubuntu(ubuntu
π― Ubuntu)
all_platforms_unknown_linux(unknown_linux
π§ Unknown Linux)
all_platforms_windows(windows
πͺ Windows)
all_platforms_wsl1(wsl1
β Windows Subsystem for Linux v1)
all_platforms_wsl2(wsl2
β Windows Subsystem for Linux v2)
all_platforms_xenserver(xenserver
β XenServer)
end
subgraph "extra_platforms.BSD_WITHOUT_MACOS
π
±οΈ Any BSD excluding macOS"
bsd_without_macos_freebsd(freebsd
π FreeBSD)
bsd_without_macos_midnightbsd(midnightbsd
π MidnightBSD)
bsd_without_macos_netbsd(netbsd
π© NetBSD)
bsd_without_macos_openbsd(openbsd
π‘ OpenBSD)
bsd_without_macos_sunos(sunos
βοΈ SunOS)
end
subgraph "extra_platforms.LINUX_LIKE
π§+ Any Linux and compatibility layers"
linux_like_altlinux(altlinux
π§ ALT Linux)
linux_like_amzn(amzn
π Amazon Linux)
linux_like_android(android
π€ Android)
linux_like_arch(arch
ποΈ Arch Linux)
linux_like_buildroot(buildroot
βοΈ Buildroot)
linux_like_centos(centos
π CentOS)
linux_like_cloudlinux(cloudlinux
κ© CloudLinux OS)
linux_like_debian(debian
π Debian)
linux_like_exherbo(exherbo
π½ Exherbo Linux)
linux_like_fedora(fedora
π© Fedora)
linux_like_gentoo(gentoo
ποΈ Gentoo Linux)
linux_like_guix(guix
π Guix System)
linux_like_ibm_powerkvm(ibm_powerkvm
π€Ή IBM PowerKVM)
linux_like_kvmibm(kvmibm
π€Ή KVM for IBM z Systems)
linux_like_linuxmint(linuxmint
πΏ Linux Mint)
linux_like_mageia(mageia
β₯ Mageia)
linux_like_mandriva(mandriva
π« Mandriva Linux)
linux_like_nobara(nobara
ο Nobara)
linux_like_opensuse(opensuse
π¦ openSUSE)
linux_like_oracle(oracle
𦴠Oracle Linux)
linux_like_parallels(parallels
β₯ Parallels)
linux_like_pidora(pidora
π Pidora)
linux_like_raspbian(raspbian
π Raspbian)
linux_like_rhel(rhel
π© RedHat Enterprise Linux)
linux_like_rocky(rocky
β°οΈ Rocky Linux)
linux_like_scientific(scientific
βοΈ Scientific Linux)
linux_like_slackware(slackware
π¬ Slackware)
linux_like_sles(sles
π¦ SUSE Linux Enterprise Server)
linux_like_tumbleweed(tumbleweed
β» openSUSE Tumbleweed)
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)
linux_like_wsl2(wsl2
β Windows Subsystem for Linux v2)
linux_like_xenserver(xenserver
β XenServer)
end
subgraph "extra_platforms.UNIX
β¨· Any Unix"
unix_aix(aix
βΏ IBM AIX)
unix_altlinux(altlinux
π§ ALT Linux)
unix_amzn(amzn
π Amazon Linux)
unix_android(android
π€ Android)
unix_arch(arch
ποΈ Arch Linux)
unix_buildroot(buildroot
βοΈ Buildroot)
unix_centos(centos
π CentOS)
unix_cloudlinux(cloudlinux
κ© CloudLinux OS)
unix_cygwin(cygwin
ΟΎ Cygwin)
unix_debian(debian
π Debian)
unix_exherbo(exherbo
π½ Exherbo Linux)
unix_fedora(fedora
π© Fedora)
unix_freebsd(freebsd
π FreeBSD)
unix_gentoo(gentoo
ποΈ Gentoo Linux)
unix_guix(guix
π Guix System)
unix_hurd(hurd
π GNU/Hurd)
unix_ibm_powerkvm(ibm_powerkvm
π€Ή IBM PowerKVM)
unix_kvmibm(kvmibm
π€Ή KVM for IBM z Systems)
unix_linuxmint(linuxmint
πΏ Linux Mint)
unix_macos(macos
π macOS)
unix_mageia(mageia
β₯ Mageia)
unix_mandriva(mandriva
π« Mandriva Linux)
unix_midnightbsd(midnightbsd
π MidnightBSD)
unix_netbsd(netbsd
π© NetBSD)
unix_nobara(nobara
ο Nobara)
unix_openbsd(openbsd
π‘ OpenBSD)
unix_opensuse(opensuse
π¦ openSUSE)
unix_oracle(oracle
𦴠Oracle Linux)
unix_parallels(parallels
β₯ Parallels)
unix_pidora(pidora
π Pidora)
unix_raspbian(raspbian
π Raspbian)
unix_rhel(rhel
π© RedHat Enterprise Linux)
unix_rocky(rocky
β°οΈ Rocky Linux)
unix_scientific(scientific
βοΈ Scientific Linux)
unix_slackware(slackware
π¬ Slackware)
unix_sles(sles
π¦ SUSE Linux Enterprise Server)
unix_solaris(solaris
π Solaris)
unix_sunos(sunos
βοΈ SunOS)
unix_tumbleweed(tumbleweed
β» openSUSE Tumbleweed)
unix_tuxedo(tuxedo
π€΅ Tuxedo OS)
unix_ubuntu(ubuntu
π― Ubuntu)
unix_unknown_linux(unknown_linux
π§ Unknown Linux)
unix_wsl1(wsl1
β Windows Subsystem for Linux v1)
unix_wsl2(wsl2
β Windows Subsystem for Linux v2)
unix_xenserver(xenserver
β XenServer)
end
subgraph "extra_platforms.UNIX_WITHOUT_MACOS
β¨ Any Unix excluding macOS"
unix_without_macos_aix(aix
βΏ IBM AIX)
unix_without_macos_altlinux(altlinux
π§ ALT Linux)
unix_without_macos_amzn(amzn
π Amazon Linux)
unix_without_macos_android(android
π€ Android)
unix_without_macos_arch(arch
ποΈ Arch Linux)
unix_without_macos_buildroot(buildroot
βοΈ Buildroot)
unix_without_macos_centos(centos
π CentOS)
unix_without_macos_cloudlinux(cloudlinux
κ© CloudLinux OS)
unix_without_macos_cygwin(cygwin
ΟΎ Cygwin)
unix_without_macos_debian(debian
π Debian)
unix_without_macos_exherbo(exherbo
π½ Exherbo Linux)
unix_without_macos_fedora(fedora
π© Fedora)
unix_without_macos_freebsd(freebsd
π FreeBSD)
unix_without_macos_gentoo(gentoo
ποΈ Gentoo Linux)
unix_without_macos_guix(guix
π Guix System)
unix_without_macos_hurd(hurd
π GNU/Hurd)
unix_without_macos_ibm_powerkvm(ibm_powerkvm
π€Ή IBM PowerKVM)
unix_without_macos_kvmibm(kvmibm
π€Ή KVM for IBM z Systems)
unix_without_macos_linuxmint(linuxmint
πΏ Linux Mint)
unix_without_macos_mageia(mageia
β₯ Mageia)
unix_without_macos_mandriva(mandriva
π« Mandriva Linux)
unix_without_macos_midnightbsd(midnightbsd
π MidnightBSD)
unix_without_macos_netbsd(netbsd
π© NetBSD)
unix_without_macos_nobara(nobara
ο Nobara)
unix_without_macos_openbsd(openbsd
π‘ OpenBSD)
unix_without_macos_opensuse(opensuse
π¦ openSUSE)
unix_without_macos_oracle(oracle
𦴠Oracle Linux)
unix_without_macos_parallels(parallels
β₯ Parallels)
unix_without_macos_pidora(pidora
π Pidora)
unix_without_macos_raspbian(raspbian
π Raspbian)
unix_without_macos_rhel(rhel
π© RedHat Enterprise Linux)
unix_without_macos_rocky(rocky
β°οΈ Rocky Linux)
unix_without_macos_scientific(scientific
βοΈ Scientific Linux)
unix_without_macos_slackware(slackware
π¬ Slackware)
unix_without_macos_sles(sles
π¦ SUSE Linux Enterprise Server)
unix_without_macos_solaris(solaris
π Solaris)
unix_without_macos_sunos(sunos
βοΈ SunOS)
unix_without_macos_tumbleweed(tumbleweed
β» openSUSE Tumbleweed)
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)
unix_without_macos_wsl2(wsl2
β Windows Subsystem for Linux v2)
unix_without_macos_xenserver(xenserver
β XenServer)
end
```
> [!IMPORTANT]
> All the graphs above would be better off if merged. Unfortunately Graphviz is not capable of producing [Euler diagrams](https://xkcd.com/2721/). Only non-overlapping clusters can be rendered.
>
> There's still a chance to [have them supported by Mermaid](https://github.com/mermaid-js/mermaid/issues/2583) so we can switch to that if the feature materialize.
## Used in
Check these projects to get real-life examples of `extra-platforms` usage:
-  [Meta Package Manager](https://github.com/kdeldycke/meta-package-manager#readme) - A unifying CLI for multiple package managers.
-  [Click Extra](https://github.com/kdeldycke/click-extra#readme) - Drop-in replacement for Click to make user-friendly and colorful CLI.
Feel free to send a PR to add your project in this list if you are relying on Click Extra in any way.
## Development
[Development guidelines](https://github.com/kdeldycke/click-extra?tab=readme-ov-file#development) are the same as [parent project Click Extra](https://github.com/kdeldycke/click-extra), from which `extra-platforms` originated.