extra-platforms


Nameextra-platforms JSON
Version 1.7.0 PyPI version JSON
download
home_pageNone
SummaryDetect platforms and group them by family
upload_time2024-12-03 07:17:22
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords multiplatform pytest python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Extra Platforms

[![Last release](https://img.shields.io/pypi/v/extra-platforms.svg)](https://pypi.python.org/pypi/extra-platforms)
[![Python versions](https://img.shields.io/pypi/pyversions/extra-platforms.svg)](https://pypi.python.org/pypi/extra-platforms)
[![Downloads](https://static.pepy.tech/badge/extra_platforms/month)](https://pepy.tech/project/extra_platforms)
[![Unittests status](https://github.com/kdeldycke/extra-platforms/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/extra-platforms/actions/workflows/tests.yaml?query=branch%3Amain)
[![Coverage status](https://codecov.io/gh/kdeldycke/extra-platforms/branch/main/graph/badge.svg)](https://app.codecov.io/gh/kdeldycke/extra-platforms)
[![Documentation status](https://github.com/kdeldycke/extra-platforms/actions/workflows/docs.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/extra-platforms/actions/workflows/docs.yaml?query=branch%3Amain)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13341712.svg)](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', '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
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:

<!-- platform-sankey-start -->

```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,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,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,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,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,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
```

<!-- platform-sankey-end -->

## OS families

Each platform is assigned to a group of non-overlpaping families:

<!-- platform-hierarchy-start -->

```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)
            (🦎 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)
```

<!-- platform-hierarchy-end -->

<!-- NON_OVERLAPPING_GROUPS-graph-start -->

```mermaid
---
title: <code>extra_platforms.NON_OVERLAPPING_GROUPS</code> - Non-overlapping groups.
---
flowchart

    subgraph "<code>extra_platforms.ANY_WINDOWS</code><br/>πŸͺŸ <em>Any Windows</em>"
        any_windows_windows(<code>windows</code><br/>πŸͺŸ <em>Windows</em>)
    end
    subgraph "<code>extra_platforms.BSD</code><br/>πŸ…±οΈ+ <em>Any BSD</em>"
        bsd_freebsd(<code>freebsd</code><br/>😈 <em>FreeBSD</em>)
        bsd_macos(<code>macos</code><br/>🍎 <em>macOS</em>)
        bsd_midnightbsd(<code>midnightbsd</code><br/>🌘 <em>MidnightBSD</em>)
        bsd_netbsd(<code>netbsd</code><br/>🚩 <em>NetBSD</em>)
        bsd_openbsd(<code>openbsd</code><br/>🐑 <em>OpenBSD</em>)
        bsd_sunos(<code>sunos</code><br/>β˜€οΈ <em>SunOS</em>)
    end
    subgraph "<code>extra_platforms.LINUX</code><br/>🐧 <em>Any Linux distribution</em>"
        linux_altlinux(<code>altlinux</code><br/>🐧 <em>ALT Linux</em>)
        linux_amzn(<code>amzn</code><br/>πŸ™‚ <em>Amazon Linux</em>)
        linux_android(<code>android</code><br/>πŸ€– <em>Android</em>)
        linux_arch(<code>arch</code><br/>πŸŽ—οΈ <em>Arch Linux</em>)
        linux_buildroot(<code>buildroot</code><br/>⛑️ <em>Buildroot</em>)
        linux_centos(<code>centos</code><br/>πŸ’  <em>CentOS</em>)
        linux_cloudlinux(<code>cloudlinux</code><br/>꩜ <em>CloudLinux OS</em>)
        linux_debian(<code>debian</code><br/>πŸŒ€ <em>Debian</em>)
        linux_exherbo(<code>exherbo</code><br/>🐽 <em>Exherbo Linux</em>)
        linux_fedora(<code>fedora</code><br/>🎩 <em>Fedora</em>)
        linux_gentoo(<code>gentoo</code><br/>πŸ—œοΈ <em>Gentoo Linux</em>)
        linux_guix(<code>guix</code><br/>πŸƒ <em>Guix System</em>)
        linux_ibm_powerkvm(<code>ibm_powerkvm</code><br/>🀹 <em>IBM PowerKVM</em>)
        linux_kvmibm(<code>kvmibm</code><br/>🀹 <em>KVM for IBM z Systems</em>)
        linux_linuxmint(<code>linuxmint</code><br/>🌿 <em>Linux Mint</em>)
        linux_mageia(<code>mageia</code><br/>β₯ <em>Mageia</em>)
        linux_mandriva(<code>mandriva</code><br/>πŸ’« <em>Mandriva Linux</em>)
        linux_opensuse(<code>opensuse</code><br/>🦎 <em>openSUSE</em>)
        linux_oracle(<code>oracle</code><br/>🦴 <em>Oracle Linux</em>)
        linux_parallels(<code>parallels</code><br/>βˆ₯ <em>Parallels</em>)
        linux_pidora(<code>pidora</code><br/>πŸ“ <em>Pidora</em>)
        linux_raspbian(<code>raspbian</code><br/>πŸ“ <em>Raspbian</em>)
        linux_rhel(<code>rhel</code><br/>🎩 <em>RedHat Enterprise Linux</em>)
        linux_rocky(<code>rocky</code><br/>⛰️ <em>Rocky Linux</em>)
        linux_scientific(<code>scientific</code><br/>βš›οΈ <em>Scientific Linux</em>)
        linux_slackware(<code>slackware</code><br/>🚬 <em>Slackware</em>)
        linux_sles(<code>sles</code><br/>🦎 <em>SUSE Linux Enterprise Server</em>)
        linux_tumbleweed(<code>tumbleweed</code><br/>↻ <em>openSUSE Tumbleweed</em>)
        linux_tuxedo(<code>tuxedo</code><br/>🀡 <em>Tuxedo OS</em>)
        linux_ubuntu(<code>ubuntu</code><br/>🎯 <em>Ubuntu</em>)
        linux_unknown_linux(<code>unknown_linux</code><br/>🐧 <em>Unknown Linux</em>)
        linux_xenserver(<code>xenserver</code><br/>Ⓧ <em>XenServer</em>)
    end
    subgraph "<code>extra_platforms.LINUX_LAYERS</code><br/>β‰š <em>Any Linux compatibility layers</em>"
        linux_layers_wsl1(<code>wsl1</code><br/>⊞ <em>Windows Subsystem for Linux v1</em>)
        linux_layers_wsl2(<code>wsl2</code><br/>⊞ <em>Windows Subsystem for Linux v2</em>)
    end
    subgraph "<code>extra_platforms.OTHER_UNIX</code><br/>⊎ <em>Any other Unix</em>"
        other_unix_hurd(<code>hurd</code><br/>πŸƒ <em>GNU/Hurd</em>)
    end
    subgraph "<code>extra_platforms.SYSTEM_V</code><br/>β…€ <em>Any Unix derived from AT&amp;T System Five</em>"
        system_v_aix(<code>aix</code><br/>➿ <em>IBM AIX</em>)
        system_v_solaris(<code>solaris</code><br/>🌞 <em>Solaris</em>)
    end
    subgraph "<code>extra_platforms.UNIX_LAYERS</code><br/>≛ <em>Any Unix compatibility layers</em>"
        unix_layers_cygwin(<code>cygwin</code><br/>ΟΎ <em>Cygwin</em>)
    end
```

<!-- NON_OVERLAPPING_GROUPS-graph-end -->

## Other groups

Other groups are available for convenience, but these overlaps:

<!-- EXTRA_GROUPS-graph-start -->

```mermaid
---
title: <code>extra_platforms.EXTRA_GROUPS</code> - Overlapping groups, defined for convenience.
---
flowchart

    subgraph "<code>extra_platforms.ALL_PLATFORMS</code><br/>πŸ–₯️ <em>All platforms</em>"
        all_platforms_aix(<code>aix</code><br/>➿ <em>IBM AIX</em>)
        all_platforms_altlinux(<code>altlinux</code><br/>🐧 <em>ALT Linux</em>)
        all_platforms_amzn(<code>amzn</code><br/>πŸ™‚ <em>Amazon Linux</em>)
        all_platforms_android(<code>android</code><br/>πŸ€– <em>Android</em>)
        all_platforms_arch(<code>arch</code><br/>πŸŽ—οΈ <em>Arch Linux</em>)
        all_platforms_buildroot(<code>buildroot</code><br/>⛑️ <em>Buildroot</em>)
        all_platforms_centos(<code>centos</code><br/>πŸ’  <em>CentOS</em>)
        all_platforms_cloudlinux(<code>cloudlinux</code><br/>꩜ <em>CloudLinux OS</em>)
        all_platforms_cygwin(<code>cygwin</code><br/>ΟΎ <em>Cygwin</em>)
        all_platforms_debian(<code>debian</code><br/>πŸŒ€ <em>Debian</em>)
        all_platforms_exherbo(<code>exherbo</code><br/>🐽 <em>Exherbo Linux</em>)
        all_platforms_fedora(<code>fedora</code><br/>🎩 <em>Fedora</em>)
        all_platforms_freebsd(<code>freebsd</code><br/>😈 <em>FreeBSD</em>)
        all_platforms_gentoo(<code>gentoo</code><br/>πŸ—œοΈ <em>Gentoo Linux</em>)
        all_platforms_guix(<code>guix</code><br/>πŸƒ <em>Guix System</em>)
        all_platforms_hurd(<code>hurd</code><br/>πŸƒ <em>GNU/Hurd</em>)
        all_platforms_ibm_powerkvm(<code>ibm_powerkvm</code><br/>🀹 <em>IBM PowerKVM</em>)
        all_platforms_kvmibm(<code>kvmibm</code><br/>🀹 <em>KVM for IBM z Systems</em>)
        all_platforms_linuxmint(<code>linuxmint</code><br/>🌿 <em>Linux Mint</em>)
        all_platforms_macos(<code>macos</code><br/>🍎 <em>macOS</em>)
        all_platforms_mageia(<code>mageia</code><br/>β₯ <em>Mageia</em>)
        all_platforms_mandriva(<code>mandriva</code><br/>πŸ’« <em>Mandriva Linux</em>)
        all_platforms_midnightbsd(<code>midnightbsd</code><br/>🌘 <em>MidnightBSD</em>)
        all_platforms_netbsd(<code>netbsd</code><br/>🚩 <em>NetBSD</em>)
        all_platforms_openbsd(<code>openbsd</code><br/>🐑 <em>OpenBSD</em>)
        all_platforms_opensuse(<code>opensuse</code><br/>🦎 <em>openSUSE</em>)
        all_platforms_oracle(<code>oracle</code><br/>🦴 <em>Oracle Linux</em>)
        all_platforms_parallels(<code>parallels</code><br/>βˆ₯ <em>Parallels</em>)
        all_platforms_pidora(<code>pidora</code><br/>πŸ“ <em>Pidora</em>)
        all_platforms_raspbian(<code>raspbian</code><br/>πŸ“ <em>Raspbian</em>)
        all_platforms_rhel(<code>rhel</code><br/>🎩 <em>RedHat Enterprise Linux</em>)
        all_platforms_rocky(<code>rocky</code><br/>⛰️ <em>Rocky Linux</em>)
        all_platforms_scientific(<code>scientific</code><br/>βš›οΈ <em>Scientific Linux</em>)
        all_platforms_slackware(<code>slackware</code><br/>🚬 <em>Slackware</em>)
        all_platforms_sles(<code>sles</code><br/>🦎 <em>SUSE Linux Enterprise Server</em>)
        all_platforms_solaris(<code>solaris</code><br/>🌞 <em>Solaris</em>)
        all_platforms_sunos(<code>sunos</code><br/>β˜€οΈ <em>SunOS</em>)
        all_platforms_tumbleweed(<code>tumbleweed</code><br/>↻ <em>openSUSE Tumbleweed</em>)
        all_platforms_tuxedo(<code>tuxedo</code><br/>🀡 <em>Tuxedo OS</em>)
        all_platforms_ubuntu(<code>ubuntu</code><br/>🎯 <em>Ubuntu</em>)
        all_platforms_unknown_linux(<code>unknown_linux</code><br/>🐧 <em>Unknown Linux</em>)
        all_platforms_windows(<code>windows</code><br/>πŸͺŸ <em>Windows</em>)
        all_platforms_wsl1(<code>wsl1</code><br/>⊞ <em>Windows Subsystem for Linux v1</em>)
        all_platforms_wsl2(<code>wsl2</code><br/>⊞ <em>Windows Subsystem for Linux v2</em>)
        all_platforms_xenserver(<code>xenserver</code><br/>Ⓧ <em>XenServer</em>)
    end
    subgraph "<code>extra_platforms.BSD_WITHOUT_MACOS</code><br/>πŸ…±οΈ <em>Any BSD but macOS</em>"
        bsd_without_macos_freebsd(<code>freebsd</code><br/>😈 <em>FreeBSD</em>)
        bsd_without_macos_midnightbsd(<code>midnightbsd</code><br/>🌘 <em>MidnightBSD</em>)
        bsd_without_macos_netbsd(<code>netbsd</code><br/>🚩 <em>NetBSD</em>)
        bsd_without_macos_openbsd(<code>openbsd</code><br/>🐑 <em>OpenBSD</em>)
        bsd_without_macos_sunos(<code>sunos</code><br/>β˜€οΈ <em>SunOS</em>)
    end
    subgraph "<code>extra_platforms.LINUX_LIKE</code><br/>🐧+ <em>Any Linux and compatibility layers</em>"
        linux_like_altlinux(<code>altlinux</code><br/>🐧 <em>ALT Linux</em>)
        linux_like_amzn(<code>amzn</code><br/>πŸ™‚ <em>Amazon Linux</em>)
        linux_like_android(<code>android</code><br/>πŸ€– <em>Android</em>)
        linux_like_arch(<code>arch</code><br/>πŸŽ—οΈ <em>Arch Linux</em>)
        linux_like_buildroot(<code>buildroot</code><br/>⛑️ <em>Buildroot</em>)
        linux_like_centos(<code>centos</code><br/>πŸ’  <em>CentOS</em>)
        linux_like_cloudlinux(<code>cloudlinux</code><br/>꩜ <em>CloudLinux OS</em>)
        linux_like_debian(<code>debian</code><br/>πŸŒ€ <em>Debian</em>)
        linux_like_exherbo(<code>exherbo</code><br/>🐽 <em>Exherbo Linux</em>)
        linux_like_fedora(<code>fedora</code><br/>🎩 <em>Fedora</em>)
        linux_like_gentoo(<code>gentoo</code><br/>πŸ—œοΈ <em>Gentoo Linux</em>)
        linux_like_guix(<code>guix</code><br/>πŸƒ <em>Guix System</em>)
        linux_like_ibm_powerkvm(<code>ibm_powerkvm</code><br/>🀹 <em>IBM PowerKVM</em>)
        linux_like_kvmibm(<code>kvmibm</code><br/>🀹 <em>KVM for IBM z Systems</em>)
        linux_like_linuxmint(<code>linuxmint</code><br/>🌿 <em>Linux Mint</em>)
        linux_like_mageia(<code>mageia</code><br/>β₯ <em>Mageia</em>)
        linux_like_mandriva(<code>mandriva</code><br/>πŸ’« <em>Mandriva Linux</em>)
        linux_like_opensuse(<code>opensuse</code><br/>🦎 <em>openSUSE</em>)
        linux_like_oracle(<code>oracle</code><br/>🦴 <em>Oracle Linux</em>)
        linux_like_parallels(<code>parallels</code><br/>βˆ₯ <em>Parallels</em>)
        linux_like_pidora(<code>pidora</code><br/>πŸ“ <em>Pidora</em>)
        linux_like_raspbian(<code>raspbian</code><br/>πŸ“ <em>Raspbian</em>)
        linux_like_rhel(<code>rhel</code><br/>🎩 <em>RedHat Enterprise Linux</em>)
        linux_like_rocky(<code>rocky</code><br/>⛰️ <em>Rocky Linux</em>)
        linux_like_scientific(<code>scientific</code><br/>βš›οΈ <em>Scientific Linux</em>)
        linux_like_slackware(<code>slackware</code><br/>🚬 <em>Slackware</em>)
        linux_like_sles(<code>sles</code><br/>🦎 <em>SUSE Linux Enterprise Server</em>)
        linux_like_tumbleweed(<code>tumbleweed</code><br/>↻ <em>openSUSE Tumbleweed</em>)
        linux_like_tuxedo(<code>tuxedo</code><br/>🀡 <em>Tuxedo OS</em>)
        linux_like_ubuntu(<code>ubuntu</code><br/>🎯 <em>Ubuntu</em>)
        linux_like_unknown_linux(<code>unknown_linux</code><br/>🐧 <em>Unknown Linux</em>)
        linux_like_wsl1(<code>wsl1</code><br/>⊞ <em>Windows Subsystem for Linux v1</em>)
        linux_like_wsl2(<code>wsl2</code><br/>⊞ <em>Windows Subsystem for Linux v2</em>)
        linux_like_xenserver(<code>xenserver</code><br/>Ⓧ <em>XenServer</em>)
    end
    subgraph "<code>extra_platforms.UNIX</code><br/>β¨· <em>Any Unix</em>"
        unix_aix(<code>aix</code><br/>➿ <em>IBM AIX</em>)
        unix_altlinux(<code>altlinux</code><br/>🐧 <em>ALT Linux</em>)
        unix_amzn(<code>amzn</code><br/>πŸ™‚ <em>Amazon Linux</em>)
        unix_android(<code>android</code><br/>πŸ€– <em>Android</em>)
        unix_arch(<code>arch</code><br/>πŸŽ—οΈ <em>Arch Linux</em>)
        unix_buildroot(<code>buildroot</code><br/>⛑️ <em>Buildroot</em>)
        unix_centos(<code>centos</code><br/>πŸ’  <em>CentOS</em>)
        unix_cloudlinux(<code>cloudlinux</code><br/>꩜ <em>CloudLinux OS</em>)
        unix_cygwin(<code>cygwin</code><br/>ΟΎ <em>Cygwin</em>)
        unix_debian(<code>debian</code><br/>πŸŒ€ <em>Debian</em>)
        unix_exherbo(<code>exherbo</code><br/>🐽 <em>Exherbo Linux</em>)
        unix_fedora(<code>fedora</code><br/>🎩 <em>Fedora</em>)
        unix_freebsd(<code>freebsd</code><br/>😈 <em>FreeBSD</em>)
        unix_gentoo(<code>gentoo</code><br/>πŸ—œοΈ <em>Gentoo Linux</em>)
        unix_guix(<code>guix</code><br/>πŸƒ <em>Guix System</em>)
        unix_hurd(<code>hurd</code><br/>πŸƒ <em>GNU/Hurd</em>)
        unix_ibm_powerkvm(<code>ibm_powerkvm</code><br/>🀹 <em>IBM PowerKVM</em>)
        unix_kvmibm(<code>kvmibm</code><br/>🀹 <em>KVM for IBM z Systems</em>)
        unix_linuxmint(<code>linuxmint</code><br/>🌿 <em>Linux Mint</em>)
        unix_macos(<code>macos</code><br/>🍎 <em>macOS</em>)
        unix_mageia(<code>mageia</code><br/>β₯ <em>Mageia</em>)
        unix_mandriva(<code>mandriva</code><br/>πŸ’« <em>Mandriva Linux</em>)
        unix_midnightbsd(<code>midnightbsd</code><br/>🌘 <em>MidnightBSD</em>)
        unix_netbsd(<code>netbsd</code><br/>🚩 <em>NetBSD</em>)
        unix_openbsd(<code>openbsd</code><br/>🐑 <em>OpenBSD</em>)
        unix_opensuse(<code>opensuse</code><br/>🦎 <em>openSUSE</em>)
        unix_oracle(<code>oracle</code><br/>🦴 <em>Oracle Linux</em>)
        unix_parallels(<code>parallels</code><br/>βˆ₯ <em>Parallels</em>)
        unix_pidora(<code>pidora</code><br/>πŸ“ <em>Pidora</em>)
        unix_raspbian(<code>raspbian</code><br/>πŸ“ <em>Raspbian</em>)
        unix_rhel(<code>rhel</code><br/>🎩 <em>RedHat Enterprise Linux</em>)
        unix_rocky(<code>rocky</code><br/>⛰️ <em>Rocky Linux</em>)
        unix_scientific(<code>scientific</code><br/>βš›οΈ <em>Scientific Linux</em>)
        unix_slackware(<code>slackware</code><br/>🚬 <em>Slackware</em>)
        unix_sles(<code>sles</code><br/>🦎 <em>SUSE Linux Enterprise Server</em>)
        unix_solaris(<code>solaris</code><br/>🌞 <em>Solaris</em>)
        unix_sunos(<code>sunos</code><br/>β˜€οΈ <em>SunOS</em>)
        unix_tumbleweed(<code>tumbleweed</code><br/>↻ <em>openSUSE Tumbleweed</em>)
        unix_tuxedo(<code>tuxedo</code><br/>🀡 <em>Tuxedo OS</em>)
        unix_ubuntu(<code>ubuntu</code><br/>🎯 <em>Ubuntu</em>)
        unix_unknown_linux(<code>unknown_linux</code><br/>🐧 <em>Unknown Linux</em>)
        unix_wsl1(<code>wsl1</code><br/>⊞ <em>Windows Subsystem for Linux v1</em>)
        unix_wsl2(<code>wsl2</code><br/>⊞ <em>Windows Subsystem for Linux v2</em>)
        unix_xenserver(<code>xenserver</code><br/>Ⓧ <em>XenServer</em>)
    end
    subgraph "<code>extra_platforms.UNIX_WITHOUT_MACOS</code><br/>⨂ <em>Any Unix but macOS</em>"
        unix_without_macos_aix(<code>aix</code><br/>➿ <em>IBM AIX</em>)
        unix_without_macos_altlinux(<code>altlinux</code><br/>🐧 <em>ALT Linux</em>)
        unix_without_macos_amzn(<code>amzn</code><br/>πŸ™‚ <em>Amazon Linux</em>)
        unix_without_macos_android(<code>android</code><br/>πŸ€– <em>Android</em>)
        unix_without_macos_arch(<code>arch</code><br/>πŸŽ—οΈ <em>Arch Linux</em>)
        unix_without_macos_buildroot(<code>buildroot</code><br/>⛑️ <em>Buildroot</em>)
        unix_without_macos_centos(<code>centos</code><br/>πŸ’  <em>CentOS</em>)
        unix_without_macos_cloudlinux(<code>cloudlinux</code><br/>꩜ <em>CloudLinux OS</em>)
        unix_without_macos_cygwin(<code>cygwin</code><br/>ΟΎ <em>Cygwin</em>)
        unix_without_macos_debian(<code>debian</code><br/>πŸŒ€ <em>Debian</em>)
        unix_without_macos_exherbo(<code>exherbo</code><br/>🐽 <em>Exherbo Linux</em>)
        unix_without_macos_fedora(<code>fedora</code><br/>🎩 <em>Fedora</em>)
        unix_without_macos_freebsd(<code>freebsd</code><br/>😈 <em>FreeBSD</em>)
        unix_without_macos_gentoo(<code>gentoo</code><br/>πŸ—œοΈ <em>Gentoo Linux</em>)
        unix_without_macos_guix(<code>guix</code><br/>πŸƒ <em>Guix System</em>)
        unix_without_macos_hurd(<code>hurd</code><br/>πŸƒ <em>GNU/Hurd</em>)
        unix_without_macos_ibm_powerkvm(<code>ibm_powerkvm</code><br/>🀹 <em>IBM PowerKVM</em>)
        unix_without_macos_kvmibm(<code>kvmibm</code><br/>🀹 <em>KVM for IBM z Systems</em>)
        unix_without_macos_linuxmint(<code>linuxmint</code><br/>🌿 <em>Linux Mint</em>)
        unix_without_macos_mageia(<code>mageia</code><br/>β₯ <em>Mageia</em>)
        unix_without_macos_mandriva(<code>mandriva</code><br/>πŸ’« <em>Mandriva Linux</em>)
        unix_without_macos_midnightbsd(<code>midnightbsd</code><br/>🌘 <em>MidnightBSD</em>)
        unix_without_macos_netbsd(<code>netbsd</code><br/>🚩 <em>NetBSD</em>)
        unix_without_macos_openbsd(<code>openbsd</code><br/>🐑 <em>OpenBSD</em>)
        unix_without_macos_opensuse(<code>opensuse</code><br/>🦎 <em>openSUSE</em>)
        unix_without_macos_oracle(<code>oracle</code><br/>🦴 <em>Oracle Linux</em>)
        unix_without_macos_parallels(<code>parallels</code><br/>βˆ₯ <em>Parallels</em>)
        unix_without_macos_pidora(<code>pidora</code><br/>πŸ“ <em>Pidora</em>)
        unix_without_macos_raspbian(<code>raspbian</code><br/>πŸ“ <em>Raspbian</em>)
        unix_without_macos_rhel(<code>rhel</code><br/>🎩 <em>RedHat Enterprise Linux</em>)
        unix_without_macos_rocky(<code>rocky</code><br/>⛰️ <em>Rocky Linux</em>)
        unix_without_macos_scientific(<code>scientific</code><br/>βš›οΈ <em>Scientific Linux</em>)
        unix_without_macos_slackware(<code>slackware</code><br/>🚬 <em>Slackware</em>)
        unix_without_macos_sles(<code>sles</code><br/>🦎 <em>SUSE Linux Enterprise Server</em>)
        unix_without_macos_solaris(<code>solaris</code><br/>🌞 <em>Solaris</em>)
        unix_without_macos_sunos(<code>sunos</code><br/>β˜€οΈ <em>SunOS</em>)
        unix_without_macos_tumbleweed(<code>tumbleweed</code><br/>↻ <em>openSUSE Tumbleweed</em>)
        unix_without_macos_tuxedo(<code>tuxedo</code><br/>🀡 <em>Tuxedo OS</em>)
        unix_without_macos_ubuntu(<code>ubuntu</code><br/>🎯 <em>Ubuntu</em>)
        unix_without_macos_unknown_linux(<code>unknown_linux</code><br/>🐧 <em>Unknown Linux</em>)
        unix_without_macos_wsl1(<code>wsl1</code><br/>⊞ <em>Windows Subsystem for Linux v1</em>)
        unix_without_macos_wsl2(<code>wsl2</code><br/>⊞ <em>Windows Subsystem for Linux v2</em>)
        unix_without_macos_xenserver(<code>xenserver</code><br/>Ⓧ <em>XenServer</em>)
    end
```

<!-- EXTRA_GROUPS-graph-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:

- ![GitHub stars](https://img.shields.io/github/stars/kdeldycke/meta-package-manager?label=%E2%AD%90&style=flat-square) [Meta Package Manager](https://github.com/kdeldycke/meta-package-manager#readme) - A unifying CLI for multiple package managers.
- ![GitHub stars](https://img.shields.io/github/stars/kdeldycke/click-extra?label=%E2%AD%90&style=flat-square) [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.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "extra-platforms",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "multiplatform, pytest, python",
    "author": null,
    "author_email": "Kevin Deldycke <kevin@deldycke.com>",
    "download_url": "https://files.pythonhosted.org/packages/2a/13/e5c083cf45bd40d7e9babe31ff522f5c41987d916dddd5b80a4c8d5a3f37/extra_platforms-1.7.0.tar.gz",
    "platform": null,
    "description": "# Extra Platforms\n\n[![Last release](https://img.shields.io/pypi/v/extra-platforms.svg)](https://pypi.python.org/pypi/extra-platforms)\n[![Python versions](https://img.shields.io/pypi/pyversions/extra-platforms.svg)](https://pypi.python.org/pypi/extra-platforms)\n[![Downloads](https://static.pepy.tech/badge/extra_platforms/month)](https://pepy.tech/project/extra_platforms)\n[![Unittests status](https://github.com/kdeldycke/extra-platforms/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/extra-platforms/actions/workflows/tests.yaml?query=branch%3Amain)\n[![Coverage status](https://codecov.io/gh/kdeldycke/extra-platforms/branch/main/graph/badge.svg)](https://app.codecov.io/gh/kdeldycke/extra-platforms)\n[![Documentation status](https://github.com/kdeldycke/extra-platforms/actions/workflows/docs.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/extra-platforms/actions/workflows/docs.yaml?query=branch%3Amain)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13341712.svg)](https://doi.org/10.5281/zenodo.13341712)\n\n## What is Extra Platforms?\n\n- Provides a list of all known platforms\n- Detect the current platform, at the distribution level\n- Gather current platform metadata (version, codename, etc.)\n- Group platforms into families\n- Manage collection of platforms and groups\n- Associate each platform and group to an emoji symbol\n- New conditional markers for `pytest`:\n  - `@skip_linux`, `@skip_macos` and `@skip_windows`\n  - `@unless_linux`, `@unless_macos` and `@unless_windows`\n- Address [`distro#177` issue (support for Windows and Mac OS)](https://github.com/python-distro/distro/issues/177)\n\n## Examples\n\nGet the current platform, from which you can access lots of metadata:\n\n```pycon\n>>> from extra_platforms import current_os\n\n>>> my_os = current_os()\n>>> my_os\nPlatform(id='macos', name='macOS', current=True)\n\n>>> my_os.id\n'macos'\n>>> my_os.name\n'macOS'\n>>> my_os.icon\n'\ud83c\udf4e'\n\n>>> my_os.info()\n{\n    \"id\": \"macos\",\n    \"name\": \"macOS\",\n    \"icon\": \"\ud83c\udf4e\",\n    \"current\": True,\n    \"distro_id\": \"darwin\",\n    \"version\": \"23.6.0\",\n    \"version_parts\": {\"major\": \"23\", \"minor\": \"6\", \"build_number\": \"0\"},\n    \"like\": None,\n    \"codename\": None,\n}\n```\n\nCheck if a platform is a specific system:\n\n```pycon\n>>> from extra_platforms import is_gentoo\n\n>>> is_gentoo()\nFalse\n```\n\nUse groups to check if the current platform is part of a specific family:\n\n```pycon\n>>> from extra_platforms import UNIX, current_os\n\n>>> current_os() in UNIX\nFalse\n```\n\nOr directly use the boolean variables available for each family:\n\n```pycon\n>>> from extra_platforms import is_unix\n\n>>> is_unix\nFalse\n```\n\nList all platforms of a family:\n\n```pycon\n>>> from extra_platforms import LINUX\n\n>>> LINUX\nGroup(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'}))\n\n>>> print(\"\\n\".join([p.name for p in LINUX]))\nALT Linux\nAmazon Linux\nAndroid\nArch Linux\nBuildroot\nCentOS\nCloudLinux OS\nDebian\nExherbo Linux\nFedora\nGentoo Linux\nGuix System\nIBM PowerKVM\nKVM for IBM z Systems\nLinux Mint\nMageia\nMandriva Linux\nopenSUSE\nOracle Linux\nParallels\nPidora\nRaspbian\nRedHat Enterprise Linux\nRocky Linux\nScientific Linux\nSlackware\nSUSE Linux Enterprise Server\nTuxedo OS\nUbuntu\nUnknown Linux\nXenServer\n```\n\nReduce a disparate collection of groups and platforms into a minimal descriptive set, by grouping all platforms into families:\n\n```pycon\n>>> from extra_platforms import AIX, MACOS, SOLARIS, reduce\n\n>>> reduce([AIX, MACOS])\n{\n    Platform(id='aix', name='IBM AIX', current=False),\n    Platform(id='macos', name='macOS', current=True),\n}\n\n>>> reduce([AIX, MACOS, SOLARIS])\n{\n    Group(id='system_v', name='Any Unix derived from AT&T System Five', platform_ids=frozenset({'aix', 'solaris'})),\n    Platform(id='macos', name='macOS', current=True),\n}\n```\n\n## Groups \u2192 Platforms mapping\n\nRelationships between groups and platforms:\n\n<!-- platform-sankey-start -->\n\n```mermaid\n---\nconfig: {\"sankey\": {\"showValues\": false, \"width\": 800, \"height\": 400}}\n---\nsankey-beta\n\nALL_PLATFORMS,aix,1\nALL_PLATFORMS,altlinux,1\nALL_PLATFORMS,amzn,1\nALL_PLATFORMS,android,1\nALL_PLATFORMS,arch,1\nALL_PLATFORMS,buildroot,1\nALL_PLATFORMS,centos,1\nALL_PLATFORMS,cloudlinux,1\nALL_PLATFORMS,cygwin,1\nALL_PLATFORMS,debian,1\nALL_PLATFORMS,exherbo,1\nALL_PLATFORMS,fedora,1\nALL_PLATFORMS,freebsd,1\nALL_PLATFORMS,gentoo,1\nALL_PLATFORMS,guix,1\nALL_PLATFORMS,hurd,1\nALL_PLATFORMS,ibm_powerkvm,1\nALL_PLATFORMS,kvmibm,1\nALL_PLATFORMS,linuxmint,1\nALL_PLATFORMS,macos,1\nALL_PLATFORMS,mageia,1\nALL_PLATFORMS,mandriva,1\nALL_PLATFORMS,midnightbsd,1\nALL_PLATFORMS,netbsd,1\nALL_PLATFORMS,openbsd,1\nALL_PLATFORMS,opensuse,1\nALL_PLATFORMS,oracle,1\nALL_PLATFORMS,parallels,1\nALL_PLATFORMS,pidora,1\nALL_PLATFORMS,raspbian,1\nALL_PLATFORMS,rhel,1\nALL_PLATFORMS,rocky,1\nALL_PLATFORMS,scientific,1\nALL_PLATFORMS,slackware,1\nALL_PLATFORMS,sles,1\nALL_PLATFORMS,solaris,1\nALL_PLATFORMS,sunos,1\nALL_PLATFORMS,tumbleweed,1\nALL_PLATFORMS,tuxedo,1\nALL_PLATFORMS,ubuntu,1\nALL_PLATFORMS,unknown_linux,1\nALL_PLATFORMS,windows,1\nALL_PLATFORMS,wsl1,1\nALL_PLATFORMS,wsl2,1\nALL_PLATFORMS,xenserver,1\nUNIX,aix,1\nUNIX,altlinux,1\nUNIX,amzn,1\nUNIX,android,1\nUNIX,arch,1\nUNIX,buildroot,1\nUNIX,centos,1\nUNIX,cloudlinux,1\nUNIX,cygwin,1\nUNIX,debian,1\nUNIX,exherbo,1\nUNIX,fedora,1\nUNIX,freebsd,1\nUNIX,gentoo,1\nUNIX,guix,1\nUNIX,hurd,1\nUNIX,ibm_powerkvm,1\nUNIX,kvmibm,1\nUNIX,linuxmint,1\nUNIX,macos,1\nUNIX,mageia,1\nUNIX,mandriva,1\nUNIX,midnightbsd,1\nUNIX,netbsd,1\nUNIX,openbsd,1\nUNIX,opensuse,1\nUNIX,oracle,1\nUNIX,parallels,1\nUNIX,pidora,1\nUNIX,raspbian,1\nUNIX,rhel,1\nUNIX,rocky,1\nUNIX,scientific,1\nUNIX,slackware,1\nUNIX,sles,1\nUNIX,solaris,1\nUNIX,sunos,1\nUNIX,tumbleweed,1\nUNIX,tuxedo,1\nUNIX,ubuntu,1\nUNIX,unknown_linux,1\nUNIX,wsl1,1\nUNIX,wsl2,1\nUNIX,xenserver,1\nUNIX_WITHOUT_MACOS,aix,1\nUNIX_WITHOUT_MACOS,altlinux,1\nUNIX_WITHOUT_MACOS,amzn,1\nUNIX_WITHOUT_MACOS,android,1\nUNIX_WITHOUT_MACOS,arch,1\nUNIX_WITHOUT_MACOS,buildroot,1\nUNIX_WITHOUT_MACOS,centos,1\nUNIX_WITHOUT_MACOS,cloudlinux,1\nUNIX_WITHOUT_MACOS,cygwin,1\nUNIX_WITHOUT_MACOS,debian,1\nUNIX_WITHOUT_MACOS,exherbo,1\nUNIX_WITHOUT_MACOS,fedora,1\nUNIX_WITHOUT_MACOS,freebsd,1\nUNIX_WITHOUT_MACOS,gentoo,1\nUNIX_WITHOUT_MACOS,guix,1\nUNIX_WITHOUT_MACOS,hurd,1\nUNIX_WITHOUT_MACOS,ibm_powerkvm,1\nUNIX_WITHOUT_MACOS,kvmibm,1\nUNIX_WITHOUT_MACOS,linuxmint,1\nUNIX_WITHOUT_MACOS,mageia,1\nUNIX_WITHOUT_MACOS,mandriva,1\nUNIX_WITHOUT_MACOS,midnightbsd,1\nUNIX_WITHOUT_MACOS,netbsd,1\nUNIX_WITHOUT_MACOS,openbsd,1\nUNIX_WITHOUT_MACOS,opensuse,1\nUNIX_WITHOUT_MACOS,oracle,1\nUNIX_WITHOUT_MACOS,parallels,1\nUNIX_WITHOUT_MACOS,pidora,1\nUNIX_WITHOUT_MACOS,raspbian,1\nUNIX_WITHOUT_MACOS,rhel,1\nUNIX_WITHOUT_MACOS,rocky,1\nUNIX_WITHOUT_MACOS,scientific,1\nUNIX_WITHOUT_MACOS,slackware,1\nUNIX_WITHOUT_MACOS,sles,1\nUNIX_WITHOUT_MACOS,solaris,1\nUNIX_WITHOUT_MACOS,sunos,1\nUNIX_WITHOUT_MACOS,tumbleweed,1\nUNIX_WITHOUT_MACOS,tuxedo,1\nUNIX_WITHOUT_MACOS,ubuntu,1\nUNIX_WITHOUT_MACOS,unknown_linux,1\nUNIX_WITHOUT_MACOS,wsl1,1\nUNIX_WITHOUT_MACOS,wsl2,1\nUNIX_WITHOUT_MACOS,xenserver,1\nLINUX_LIKE,altlinux,1\nLINUX_LIKE,amzn,1\nLINUX_LIKE,android,1\nLINUX_LIKE,arch,1\nLINUX_LIKE,buildroot,1\nLINUX_LIKE,centos,1\nLINUX_LIKE,cloudlinux,1\nLINUX_LIKE,debian,1\nLINUX_LIKE,exherbo,1\nLINUX_LIKE,fedora,1\nLINUX_LIKE,gentoo,1\nLINUX_LIKE,guix,1\nLINUX_LIKE,ibm_powerkvm,1\nLINUX_LIKE,kvmibm,1\nLINUX_LIKE,linuxmint,1\nLINUX_LIKE,mageia,1\nLINUX_LIKE,mandriva,1\nLINUX_LIKE,opensuse,1\nLINUX_LIKE,oracle,1\nLINUX_LIKE,parallels,1\nLINUX_LIKE,pidora,1\nLINUX_LIKE,raspbian,1\nLINUX_LIKE,rhel,1\nLINUX_LIKE,rocky,1\nLINUX_LIKE,scientific,1\nLINUX_LIKE,slackware,1\nLINUX_LIKE,sles,1\nLINUX_LIKE,tumbleweed,1\nLINUX_LIKE,tuxedo,1\nLINUX_LIKE,ubuntu,1\nLINUX_LIKE,unknown_linux,1\nLINUX_LIKE,wsl1,1\nLINUX_LIKE,wsl2,1\nLINUX_LIKE,xenserver,1\nLINUX,altlinux,1\nLINUX,amzn,1\nLINUX,android,1\nLINUX,arch,1\nLINUX,buildroot,1\nLINUX,centos,1\nLINUX,cloudlinux,1\nLINUX,debian,1\nLINUX,exherbo,1\nLINUX,fedora,1\nLINUX,gentoo,1\nLINUX,guix,1\nLINUX,ibm_powerkvm,1\nLINUX,kvmibm,1\nLINUX,linuxmint,1\nLINUX,mageia,1\nLINUX,mandriva,1\nLINUX,opensuse,1\nLINUX,oracle,1\nLINUX,parallels,1\nLINUX,pidora,1\nLINUX,raspbian,1\nLINUX,rhel,1\nLINUX,rocky,1\nLINUX,scientific,1\nLINUX,slackware,1\nLINUX,sles,1\nLINUX,tumbleweed,1\nLINUX,tuxedo,1\nLINUX,ubuntu,1\nLINUX,unknown_linux,1\nLINUX,xenserver,1\nBSD,freebsd,1\nBSD,macos,1\nBSD,midnightbsd,1\nBSD,netbsd,1\nBSD,openbsd,1\nBSD,sunos,1\nBSD_WITHOUT_MACOS,freebsd,1\nBSD_WITHOUT_MACOS,midnightbsd,1\nBSD_WITHOUT_MACOS,netbsd,1\nBSD_WITHOUT_MACOS,openbsd,1\nBSD_WITHOUT_MACOS,sunos,1\nSYSTEM_V,aix,1\nSYSTEM_V,solaris,1\nLINUX_LAYERS,wsl1,1\nLINUX_LAYERS,wsl2,1\nUNIX_LAYERS,cygwin,1\nOTHER_UNIX,hurd,1\nANY_WINDOWS,windows,1\n```\n\n<!-- platform-sankey-end -->\n\n## OS families\n\nEach platform is assigned to a group of non-overlpaping families:\n\n<!-- platform-hierarchy-start -->\n\n```mermaid\n---\nconfig: {\"mindmap\": {\"padding\": 5}}\n---\nmindmap\n    ((Extra Platforms))\n        )\u225b UNIX_LAYERS(\n            (\u03fe cygwin)\n        )\u2164 SYSTEM_V(\n            (\u27bf aix)\n            (\ud83c\udf1e solaris)\n        )\u228e OTHER_UNIX(\n            (\ud83d\udc03 hurd)\n        )\u225a LINUX_LAYERS(\n            (\u229e wsl1)\n            (\u229e wsl2)\n        )\ud83d\udc27 LINUX(\n            (\ud83d\udc27 altlinux)\n            (\ud83d\ude42 amzn)\n            (\ud83e\udd16 android)\n            (\ud83c\udf97\ufe0f arch)\n            (\u26d1\ufe0f buildroot)\n            (\ud83d\udca0 centos)\n            (\uaa5c cloudlinux)\n            (\ud83c\udf00 debian)\n            (\ud83d\udc3d exherbo)\n            (\ud83c\udfa9 fedora)\n            (\ud83d\udddc\ufe0f gentoo)\n            (\ud83d\udc03 guix)\n            (\ud83e\udd39 ibm_powerkvm)\n            (\ud83e\udd39 kvmibm)\n            (\ud83c\udf3f linuxmint)\n            (\u2365 mageia)\n            (\ud83d\udcab mandriva)\n            (\ud83e\udd8e opensuse)\n            (\ud83e\uddb4 oracle)\n            (\u2225 parallels)\n            (\ud83c\udf53 pidora)\n            (\ud83c\udf53 raspbian)\n            (\ud83c\udfa9 rhel)\n            (\u26f0\ufe0f rocky)\n            (\u269b\ufe0f scientific)\n            (\ud83d\udeac slackware)\n            (\ud83e\udd8e sles)\n            (\u21bb tumbleweed)\n            (\ud83e\udd35 tuxedo)\n            (\ud83c\udfaf ubuntu)\n            (\ud83d\udc27 unknown_linux)\n            (\u24cd xenserver)\n        )\ud83c\udd71\ufe0f+ BSD(\n            (\ud83d\ude08 freebsd)\n            (\ud83c\udf4e macos)\n            (\ud83c\udf18 midnightbsd)\n            (\ud83d\udea9 netbsd)\n            (\ud83d\udc21 openbsd)\n            (\u2600\ufe0f sunos)\n        )\ud83e\ude9f ANY_WINDOWS(\n            (\ud83e\ude9f windows)\n```\n\n<!-- platform-hierarchy-end -->\n\n<!-- NON_OVERLAPPING_GROUPS-graph-start -->\n\n```mermaid\n---\ntitle: <code>extra_platforms.NON_OVERLAPPING_GROUPS</code> - Non-overlapping groups.\n---\nflowchart\n\n    subgraph \"<code>extra_platforms.ANY_WINDOWS</code><br/>\ud83e\ude9f <em>Any Windows</em>\"\n        any_windows_windows(<code>windows</code><br/>\ud83e\ude9f <em>Windows</em>)\n    end\n    subgraph \"<code>extra_platforms.BSD</code><br/>\ud83c\udd71\ufe0f+ <em>Any BSD</em>\"\n        bsd_freebsd(<code>freebsd</code><br/>\ud83d\ude08 <em>FreeBSD</em>)\n        bsd_macos(<code>macos</code><br/>\ud83c\udf4e <em>macOS</em>)\n        bsd_midnightbsd(<code>midnightbsd</code><br/>\ud83c\udf18 <em>MidnightBSD</em>)\n        bsd_netbsd(<code>netbsd</code><br/>\ud83d\udea9 <em>NetBSD</em>)\n        bsd_openbsd(<code>openbsd</code><br/>\ud83d\udc21 <em>OpenBSD</em>)\n        bsd_sunos(<code>sunos</code><br/>\u2600\ufe0f <em>SunOS</em>)\n    end\n    subgraph \"<code>extra_platforms.LINUX</code><br/>\ud83d\udc27 <em>Any Linux distribution</em>\"\n        linux_altlinux(<code>altlinux</code><br/>\ud83d\udc27 <em>ALT Linux</em>)\n        linux_amzn(<code>amzn</code><br/>\ud83d\ude42 <em>Amazon Linux</em>)\n        linux_android(<code>android</code><br/>\ud83e\udd16 <em>Android</em>)\n        linux_arch(<code>arch</code><br/>\ud83c\udf97\ufe0f <em>Arch Linux</em>)\n        linux_buildroot(<code>buildroot</code><br/>\u26d1\ufe0f <em>Buildroot</em>)\n        linux_centos(<code>centos</code><br/>\ud83d\udca0 <em>CentOS</em>)\n        linux_cloudlinux(<code>cloudlinux</code><br/>\uaa5c <em>CloudLinux OS</em>)\n        linux_debian(<code>debian</code><br/>\ud83c\udf00 <em>Debian</em>)\n        linux_exherbo(<code>exherbo</code><br/>\ud83d\udc3d <em>Exherbo Linux</em>)\n        linux_fedora(<code>fedora</code><br/>\ud83c\udfa9 <em>Fedora</em>)\n        linux_gentoo(<code>gentoo</code><br/>\ud83d\udddc\ufe0f <em>Gentoo Linux</em>)\n        linux_guix(<code>guix</code><br/>\ud83d\udc03 <em>Guix System</em>)\n        linux_ibm_powerkvm(<code>ibm_powerkvm</code><br/>\ud83e\udd39 <em>IBM PowerKVM</em>)\n        linux_kvmibm(<code>kvmibm</code><br/>\ud83e\udd39 <em>KVM for IBM z Systems</em>)\n        linux_linuxmint(<code>linuxmint</code><br/>\ud83c\udf3f <em>Linux Mint</em>)\n        linux_mageia(<code>mageia</code><br/>\u2365 <em>Mageia</em>)\n        linux_mandriva(<code>mandriva</code><br/>\ud83d\udcab <em>Mandriva Linux</em>)\n        linux_opensuse(<code>opensuse</code><br/>\ud83e\udd8e <em>openSUSE</em>)\n        linux_oracle(<code>oracle</code><br/>\ud83e\uddb4 <em>Oracle Linux</em>)\n        linux_parallels(<code>parallels</code><br/>\u2225 <em>Parallels</em>)\n        linux_pidora(<code>pidora</code><br/>\ud83c\udf53 <em>Pidora</em>)\n        linux_raspbian(<code>raspbian</code><br/>\ud83c\udf53 <em>Raspbian</em>)\n        linux_rhel(<code>rhel</code><br/>\ud83c\udfa9 <em>RedHat Enterprise Linux</em>)\n        linux_rocky(<code>rocky</code><br/>\u26f0\ufe0f <em>Rocky Linux</em>)\n        linux_scientific(<code>scientific</code><br/>\u269b\ufe0f <em>Scientific Linux</em>)\n        linux_slackware(<code>slackware</code><br/>\ud83d\udeac <em>Slackware</em>)\n        linux_sles(<code>sles</code><br/>\ud83e\udd8e <em>SUSE Linux Enterprise Server</em>)\n        linux_tumbleweed(<code>tumbleweed</code><br/>\u21bb <em>openSUSE Tumbleweed</em>)\n        linux_tuxedo(<code>tuxedo</code><br/>\ud83e\udd35 <em>Tuxedo OS</em>)\n        linux_ubuntu(<code>ubuntu</code><br/>\ud83c\udfaf <em>Ubuntu</em>)\n        linux_unknown_linux(<code>unknown_linux</code><br/>\ud83d\udc27 <em>Unknown Linux</em>)\n        linux_xenserver(<code>xenserver</code><br/>\u24cd <em>XenServer</em>)\n    end\n    subgraph \"<code>extra_platforms.LINUX_LAYERS</code><br/>\u225a <em>Any Linux compatibility layers</em>\"\n        linux_layers_wsl1(<code>wsl1</code><br/>\u229e <em>Windows Subsystem for Linux v1</em>)\n        linux_layers_wsl2(<code>wsl2</code><br/>\u229e <em>Windows Subsystem for Linux v2</em>)\n    end\n    subgraph \"<code>extra_platforms.OTHER_UNIX</code><br/>\u228e <em>Any other Unix</em>\"\n        other_unix_hurd(<code>hurd</code><br/>\ud83d\udc03 <em>GNU/Hurd</em>)\n    end\n    subgraph \"<code>extra_platforms.SYSTEM_V</code><br/>\u2164 <em>Any Unix derived from AT&amp;T System Five</em>\"\n        system_v_aix(<code>aix</code><br/>\u27bf <em>IBM AIX</em>)\n        system_v_solaris(<code>solaris</code><br/>\ud83c\udf1e <em>Solaris</em>)\n    end\n    subgraph \"<code>extra_platforms.UNIX_LAYERS</code><br/>\u225b <em>Any Unix compatibility layers</em>\"\n        unix_layers_cygwin(<code>cygwin</code><br/>\u03fe <em>Cygwin</em>)\n    end\n```\n\n<!-- NON_OVERLAPPING_GROUPS-graph-end -->\n\n## Other groups\n\nOther groups are available for convenience, but these overlaps:\n\n<!-- EXTRA_GROUPS-graph-start -->\n\n```mermaid\n---\ntitle: <code>extra_platforms.EXTRA_GROUPS</code> - Overlapping groups, defined for convenience.\n---\nflowchart\n\n    subgraph \"<code>extra_platforms.ALL_PLATFORMS</code><br/>\ud83d\udda5\ufe0f <em>All platforms</em>\"\n        all_platforms_aix(<code>aix</code><br/>\u27bf <em>IBM AIX</em>)\n        all_platforms_altlinux(<code>altlinux</code><br/>\ud83d\udc27 <em>ALT Linux</em>)\n        all_platforms_amzn(<code>amzn</code><br/>\ud83d\ude42 <em>Amazon Linux</em>)\n        all_platforms_android(<code>android</code><br/>\ud83e\udd16 <em>Android</em>)\n        all_platforms_arch(<code>arch</code><br/>\ud83c\udf97\ufe0f <em>Arch Linux</em>)\n        all_platforms_buildroot(<code>buildroot</code><br/>\u26d1\ufe0f <em>Buildroot</em>)\n        all_platforms_centos(<code>centos</code><br/>\ud83d\udca0 <em>CentOS</em>)\n        all_platforms_cloudlinux(<code>cloudlinux</code><br/>\uaa5c <em>CloudLinux OS</em>)\n        all_platforms_cygwin(<code>cygwin</code><br/>\u03fe <em>Cygwin</em>)\n        all_platforms_debian(<code>debian</code><br/>\ud83c\udf00 <em>Debian</em>)\n        all_platforms_exherbo(<code>exherbo</code><br/>\ud83d\udc3d <em>Exherbo Linux</em>)\n        all_platforms_fedora(<code>fedora</code><br/>\ud83c\udfa9 <em>Fedora</em>)\n        all_platforms_freebsd(<code>freebsd</code><br/>\ud83d\ude08 <em>FreeBSD</em>)\n        all_platforms_gentoo(<code>gentoo</code><br/>\ud83d\udddc\ufe0f <em>Gentoo Linux</em>)\n        all_platforms_guix(<code>guix</code><br/>\ud83d\udc03 <em>Guix System</em>)\n        all_platforms_hurd(<code>hurd</code><br/>\ud83d\udc03 <em>GNU/Hurd</em>)\n        all_platforms_ibm_powerkvm(<code>ibm_powerkvm</code><br/>\ud83e\udd39 <em>IBM PowerKVM</em>)\n        all_platforms_kvmibm(<code>kvmibm</code><br/>\ud83e\udd39 <em>KVM for IBM z Systems</em>)\n        all_platforms_linuxmint(<code>linuxmint</code><br/>\ud83c\udf3f <em>Linux Mint</em>)\n        all_platforms_macos(<code>macos</code><br/>\ud83c\udf4e <em>macOS</em>)\n        all_platforms_mageia(<code>mageia</code><br/>\u2365 <em>Mageia</em>)\n        all_platforms_mandriva(<code>mandriva</code><br/>\ud83d\udcab <em>Mandriva Linux</em>)\n        all_platforms_midnightbsd(<code>midnightbsd</code><br/>\ud83c\udf18 <em>MidnightBSD</em>)\n        all_platforms_netbsd(<code>netbsd</code><br/>\ud83d\udea9 <em>NetBSD</em>)\n        all_platforms_openbsd(<code>openbsd</code><br/>\ud83d\udc21 <em>OpenBSD</em>)\n        all_platforms_opensuse(<code>opensuse</code><br/>\ud83e\udd8e <em>openSUSE</em>)\n        all_platforms_oracle(<code>oracle</code><br/>\ud83e\uddb4 <em>Oracle Linux</em>)\n        all_platforms_parallels(<code>parallels</code><br/>\u2225 <em>Parallels</em>)\n        all_platforms_pidora(<code>pidora</code><br/>\ud83c\udf53 <em>Pidora</em>)\n        all_platforms_raspbian(<code>raspbian</code><br/>\ud83c\udf53 <em>Raspbian</em>)\n        all_platforms_rhel(<code>rhel</code><br/>\ud83c\udfa9 <em>RedHat Enterprise Linux</em>)\n        all_platforms_rocky(<code>rocky</code><br/>\u26f0\ufe0f <em>Rocky Linux</em>)\n        all_platforms_scientific(<code>scientific</code><br/>\u269b\ufe0f <em>Scientific Linux</em>)\n        all_platforms_slackware(<code>slackware</code><br/>\ud83d\udeac <em>Slackware</em>)\n        all_platforms_sles(<code>sles</code><br/>\ud83e\udd8e <em>SUSE Linux Enterprise Server</em>)\n        all_platforms_solaris(<code>solaris</code><br/>\ud83c\udf1e <em>Solaris</em>)\n        all_platforms_sunos(<code>sunos</code><br/>\u2600\ufe0f <em>SunOS</em>)\n        all_platforms_tumbleweed(<code>tumbleweed</code><br/>\u21bb <em>openSUSE Tumbleweed</em>)\n        all_platforms_tuxedo(<code>tuxedo</code><br/>\ud83e\udd35 <em>Tuxedo OS</em>)\n        all_platforms_ubuntu(<code>ubuntu</code><br/>\ud83c\udfaf <em>Ubuntu</em>)\n        all_platforms_unknown_linux(<code>unknown_linux</code><br/>\ud83d\udc27 <em>Unknown Linux</em>)\n        all_platforms_windows(<code>windows</code><br/>\ud83e\ude9f <em>Windows</em>)\n        all_platforms_wsl1(<code>wsl1</code><br/>\u229e <em>Windows Subsystem for Linux v1</em>)\n        all_platforms_wsl2(<code>wsl2</code><br/>\u229e <em>Windows Subsystem for Linux v2</em>)\n        all_platforms_xenserver(<code>xenserver</code><br/>\u24cd <em>XenServer</em>)\n    end\n    subgraph \"<code>extra_platforms.BSD_WITHOUT_MACOS</code><br/>\ud83c\udd71\ufe0f <em>Any BSD but macOS</em>\"\n        bsd_without_macos_freebsd(<code>freebsd</code><br/>\ud83d\ude08 <em>FreeBSD</em>)\n        bsd_without_macos_midnightbsd(<code>midnightbsd</code><br/>\ud83c\udf18 <em>MidnightBSD</em>)\n        bsd_without_macos_netbsd(<code>netbsd</code><br/>\ud83d\udea9 <em>NetBSD</em>)\n        bsd_without_macos_openbsd(<code>openbsd</code><br/>\ud83d\udc21 <em>OpenBSD</em>)\n        bsd_without_macos_sunos(<code>sunos</code><br/>\u2600\ufe0f <em>SunOS</em>)\n    end\n    subgraph \"<code>extra_platforms.LINUX_LIKE</code><br/>\ud83d\udc27+ <em>Any Linux and compatibility layers</em>\"\n        linux_like_altlinux(<code>altlinux</code><br/>\ud83d\udc27 <em>ALT Linux</em>)\n        linux_like_amzn(<code>amzn</code><br/>\ud83d\ude42 <em>Amazon Linux</em>)\n        linux_like_android(<code>android</code><br/>\ud83e\udd16 <em>Android</em>)\n        linux_like_arch(<code>arch</code><br/>\ud83c\udf97\ufe0f <em>Arch Linux</em>)\n        linux_like_buildroot(<code>buildroot</code><br/>\u26d1\ufe0f <em>Buildroot</em>)\n        linux_like_centos(<code>centos</code><br/>\ud83d\udca0 <em>CentOS</em>)\n        linux_like_cloudlinux(<code>cloudlinux</code><br/>\uaa5c <em>CloudLinux OS</em>)\n        linux_like_debian(<code>debian</code><br/>\ud83c\udf00 <em>Debian</em>)\n        linux_like_exherbo(<code>exherbo</code><br/>\ud83d\udc3d <em>Exherbo Linux</em>)\n        linux_like_fedora(<code>fedora</code><br/>\ud83c\udfa9 <em>Fedora</em>)\n        linux_like_gentoo(<code>gentoo</code><br/>\ud83d\udddc\ufe0f <em>Gentoo Linux</em>)\n        linux_like_guix(<code>guix</code><br/>\ud83d\udc03 <em>Guix System</em>)\n        linux_like_ibm_powerkvm(<code>ibm_powerkvm</code><br/>\ud83e\udd39 <em>IBM PowerKVM</em>)\n        linux_like_kvmibm(<code>kvmibm</code><br/>\ud83e\udd39 <em>KVM for IBM z Systems</em>)\n        linux_like_linuxmint(<code>linuxmint</code><br/>\ud83c\udf3f <em>Linux Mint</em>)\n        linux_like_mageia(<code>mageia</code><br/>\u2365 <em>Mageia</em>)\n        linux_like_mandriva(<code>mandriva</code><br/>\ud83d\udcab <em>Mandriva Linux</em>)\n        linux_like_opensuse(<code>opensuse</code><br/>\ud83e\udd8e <em>openSUSE</em>)\n        linux_like_oracle(<code>oracle</code><br/>\ud83e\uddb4 <em>Oracle Linux</em>)\n        linux_like_parallels(<code>parallels</code><br/>\u2225 <em>Parallels</em>)\n        linux_like_pidora(<code>pidora</code><br/>\ud83c\udf53 <em>Pidora</em>)\n        linux_like_raspbian(<code>raspbian</code><br/>\ud83c\udf53 <em>Raspbian</em>)\n        linux_like_rhel(<code>rhel</code><br/>\ud83c\udfa9 <em>RedHat Enterprise Linux</em>)\n        linux_like_rocky(<code>rocky</code><br/>\u26f0\ufe0f <em>Rocky Linux</em>)\n        linux_like_scientific(<code>scientific</code><br/>\u269b\ufe0f <em>Scientific Linux</em>)\n        linux_like_slackware(<code>slackware</code><br/>\ud83d\udeac <em>Slackware</em>)\n        linux_like_sles(<code>sles</code><br/>\ud83e\udd8e <em>SUSE Linux Enterprise Server</em>)\n        linux_like_tumbleweed(<code>tumbleweed</code><br/>\u21bb <em>openSUSE Tumbleweed</em>)\n        linux_like_tuxedo(<code>tuxedo</code><br/>\ud83e\udd35 <em>Tuxedo OS</em>)\n        linux_like_ubuntu(<code>ubuntu</code><br/>\ud83c\udfaf <em>Ubuntu</em>)\n        linux_like_unknown_linux(<code>unknown_linux</code><br/>\ud83d\udc27 <em>Unknown Linux</em>)\n        linux_like_wsl1(<code>wsl1</code><br/>\u229e <em>Windows Subsystem for Linux v1</em>)\n        linux_like_wsl2(<code>wsl2</code><br/>\u229e <em>Windows Subsystem for Linux v2</em>)\n        linux_like_xenserver(<code>xenserver</code><br/>\u24cd <em>XenServer</em>)\n    end\n    subgraph \"<code>extra_platforms.UNIX</code><br/>\u2a37 <em>Any Unix</em>\"\n        unix_aix(<code>aix</code><br/>\u27bf <em>IBM AIX</em>)\n        unix_altlinux(<code>altlinux</code><br/>\ud83d\udc27 <em>ALT Linux</em>)\n        unix_amzn(<code>amzn</code><br/>\ud83d\ude42 <em>Amazon Linux</em>)\n        unix_android(<code>android</code><br/>\ud83e\udd16 <em>Android</em>)\n        unix_arch(<code>arch</code><br/>\ud83c\udf97\ufe0f <em>Arch Linux</em>)\n        unix_buildroot(<code>buildroot</code><br/>\u26d1\ufe0f <em>Buildroot</em>)\n        unix_centos(<code>centos</code><br/>\ud83d\udca0 <em>CentOS</em>)\n        unix_cloudlinux(<code>cloudlinux</code><br/>\uaa5c <em>CloudLinux OS</em>)\n        unix_cygwin(<code>cygwin</code><br/>\u03fe <em>Cygwin</em>)\n        unix_debian(<code>debian</code><br/>\ud83c\udf00 <em>Debian</em>)\n        unix_exherbo(<code>exherbo</code><br/>\ud83d\udc3d <em>Exherbo Linux</em>)\n        unix_fedora(<code>fedora</code><br/>\ud83c\udfa9 <em>Fedora</em>)\n        unix_freebsd(<code>freebsd</code><br/>\ud83d\ude08 <em>FreeBSD</em>)\n        unix_gentoo(<code>gentoo</code><br/>\ud83d\udddc\ufe0f <em>Gentoo Linux</em>)\n        unix_guix(<code>guix</code><br/>\ud83d\udc03 <em>Guix System</em>)\n        unix_hurd(<code>hurd</code><br/>\ud83d\udc03 <em>GNU/Hurd</em>)\n        unix_ibm_powerkvm(<code>ibm_powerkvm</code><br/>\ud83e\udd39 <em>IBM PowerKVM</em>)\n        unix_kvmibm(<code>kvmibm</code><br/>\ud83e\udd39 <em>KVM for IBM z Systems</em>)\n        unix_linuxmint(<code>linuxmint</code><br/>\ud83c\udf3f <em>Linux Mint</em>)\n        unix_macos(<code>macos</code><br/>\ud83c\udf4e <em>macOS</em>)\n        unix_mageia(<code>mageia</code><br/>\u2365 <em>Mageia</em>)\n        unix_mandriva(<code>mandriva</code><br/>\ud83d\udcab <em>Mandriva Linux</em>)\n        unix_midnightbsd(<code>midnightbsd</code><br/>\ud83c\udf18 <em>MidnightBSD</em>)\n        unix_netbsd(<code>netbsd</code><br/>\ud83d\udea9 <em>NetBSD</em>)\n        unix_openbsd(<code>openbsd</code><br/>\ud83d\udc21 <em>OpenBSD</em>)\n        unix_opensuse(<code>opensuse</code><br/>\ud83e\udd8e <em>openSUSE</em>)\n        unix_oracle(<code>oracle</code><br/>\ud83e\uddb4 <em>Oracle Linux</em>)\n        unix_parallels(<code>parallels</code><br/>\u2225 <em>Parallels</em>)\n        unix_pidora(<code>pidora</code><br/>\ud83c\udf53 <em>Pidora</em>)\n        unix_raspbian(<code>raspbian</code><br/>\ud83c\udf53 <em>Raspbian</em>)\n        unix_rhel(<code>rhel</code><br/>\ud83c\udfa9 <em>RedHat Enterprise Linux</em>)\n        unix_rocky(<code>rocky</code><br/>\u26f0\ufe0f <em>Rocky Linux</em>)\n        unix_scientific(<code>scientific</code><br/>\u269b\ufe0f <em>Scientific Linux</em>)\n        unix_slackware(<code>slackware</code><br/>\ud83d\udeac <em>Slackware</em>)\n        unix_sles(<code>sles</code><br/>\ud83e\udd8e <em>SUSE Linux Enterprise Server</em>)\n        unix_solaris(<code>solaris</code><br/>\ud83c\udf1e <em>Solaris</em>)\n        unix_sunos(<code>sunos</code><br/>\u2600\ufe0f <em>SunOS</em>)\n        unix_tumbleweed(<code>tumbleweed</code><br/>\u21bb <em>openSUSE Tumbleweed</em>)\n        unix_tuxedo(<code>tuxedo</code><br/>\ud83e\udd35 <em>Tuxedo OS</em>)\n        unix_ubuntu(<code>ubuntu</code><br/>\ud83c\udfaf <em>Ubuntu</em>)\n        unix_unknown_linux(<code>unknown_linux</code><br/>\ud83d\udc27 <em>Unknown Linux</em>)\n        unix_wsl1(<code>wsl1</code><br/>\u229e <em>Windows Subsystem for Linux v1</em>)\n        unix_wsl2(<code>wsl2</code><br/>\u229e <em>Windows Subsystem for Linux v2</em>)\n        unix_xenserver(<code>xenserver</code><br/>\u24cd <em>XenServer</em>)\n    end\n    subgraph \"<code>extra_platforms.UNIX_WITHOUT_MACOS</code><br/>\u2a02 <em>Any Unix but macOS</em>\"\n        unix_without_macos_aix(<code>aix</code><br/>\u27bf <em>IBM AIX</em>)\n        unix_without_macos_altlinux(<code>altlinux</code><br/>\ud83d\udc27 <em>ALT Linux</em>)\n        unix_without_macos_amzn(<code>amzn</code><br/>\ud83d\ude42 <em>Amazon Linux</em>)\n        unix_without_macos_android(<code>android</code><br/>\ud83e\udd16 <em>Android</em>)\n        unix_without_macos_arch(<code>arch</code><br/>\ud83c\udf97\ufe0f <em>Arch Linux</em>)\n        unix_without_macos_buildroot(<code>buildroot</code><br/>\u26d1\ufe0f <em>Buildroot</em>)\n        unix_without_macos_centos(<code>centos</code><br/>\ud83d\udca0 <em>CentOS</em>)\n        unix_without_macos_cloudlinux(<code>cloudlinux</code><br/>\uaa5c <em>CloudLinux OS</em>)\n        unix_without_macos_cygwin(<code>cygwin</code><br/>\u03fe <em>Cygwin</em>)\n        unix_without_macos_debian(<code>debian</code><br/>\ud83c\udf00 <em>Debian</em>)\n        unix_without_macos_exherbo(<code>exherbo</code><br/>\ud83d\udc3d <em>Exherbo Linux</em>)\n        unix_without_macos_fedora(<code>fedora</code><br/>\ud83c\udfa9 <em>Fedora</em>)\n        unix_without_macos_freebsd(<code>freebsd</code><br/>\ud83d\ude08 <em>FreeBSD</em>)\n        unix_without_macos_gentoo(<code>gentoo</code><br/>\ud83d\udddc\ufe0f <em>Gentoo Linux</em>)\n        unix_without_macos_guix(<code>guix</code><br/>\ud83d\udc03 <em>Guix System</em>)\n        unix_without_macos_hurd(<code>hurd</code><br/>\ud83d\udc03 <em>GNU/Hurd</em>)\n        unix_without_macos_ibm_powerkvm(<code>ibm_powerkvm</code><br/>\ud83e\udd39 <em>IBM PowerKVM</em>)\n        unix_without_macos_kvmibm(<code>kvmibm</code><br/>\ud83e\udd39 <em>KVM for IBM z Systems</em>)\n        unix_without_macos_linuxmint(<code>linuxmint</code><br/>\ud83c\udf3f <em>Linux Mint</em>)\n        unix_without_macos_mageia(<code>mageia</code><br/>\u2365 <em>Mageia</em>)\n        unix_without_macos_mandriva(<code>mandriva</code><br/>\ud83d\udcab <em>Mandriva Linux</em>)\n        unix_without_macos_midnightbsd(<code>midnightbsd</code><br/>\ud83c\udf18 <em>MidnightBSD</em>)\n        unix_without_macos_netbsd(<code>netbsd</code><br/>\ud83d\udea9 <em>NetBSD</em>)\n        unix_without_macos_openbsd(<code>openbsd</code><br/>\ud83d\udc21 <em>OpenBSD</em>)\n        unix_without_macos_opensuse(<code>opensuse</code><br/>\ud83e\udd8e <em>openSUSE</em>)\n        unix_without_macos_oracle(<code>oracle</code><br/>\ud83e\uddb4 <em>Oracle Linux</em>)\n        unix_without_macos_parallels(<code>parallels</code><br/>\u2225 <em>Parallels</em>)\n        unix_without_macos_pidora(<code>pidora</code><br/>\ud83c\udf53 <em>Pidora</em>)\n        unix_without_macos_raspbian(<code>raspbian</code><br/>\ud83c\udf53 <em>Raspbian</em>)\n        unix_without_macos_rhel(<code>rhel</code><br/>\ud83c\udfa9 <em>RedHat Enterprise Linux</em>)\n        unix_without_macos_rocky(<code>rocky</code><br/>\u26f0\ufe0f <em>Rocky Linux</em>)\n        unix_without_macos_scientific(<code>scientific</code><br/>\u269b\ufe0f <em>Scientific Linux</em>)\n        unix_without_macos_slackware(<code>slackware</code><br/>\ud83d\udeac <em>Slackware</em>)\n        unix_without_macos_sles(<code>sles</code><br/>\ud83e\udd8e <em>SUSE Linux Enterprise Server</em>)\n        unix_without_macos_solaris(<code>solaris</code><br/>\ud83c\udf1e <em>Solaris</em>)\n        unix_without_macos_sunos(<code>sunos</code><br/>\u2600\ufe0f <em>SunOS</em>)\n        unix_without_macos_tumbleweed(<code>tumbleweed</code><br/>\u21bb <em>openSUSE Tumbleweed</em>)\n        unix_without_macos_tuxedo(<code>tuxedo</code><br/>\ud83e\udd35 <em>Tuxedo OS</em>)\n        unix_without_macos_ubuntu(<code>ubuntu</code><br/>\ud83c\udfaf <em>Ubuntu</em>)\n        unix_without_macos_unknown_linux(<code>unknown_linux</code><br/>\ud83d\udc27 <em>Unknown Linux</em>)\n        unix_without_macos_wsl1(<code>wsl1</code><br/>\u229e <em>Windows Subsystem for Linux v1</em>)\n        unix_without_macos_wsl2(<code>wsl2</code><br/>\u229e <em>Windows Subsystem for Linux v2</em>)\n        unix_without_macos_xenserver(<code>xenserver</code><br/>\u24cd <em>XenServer</em>)\n    end\n```\n\n<!-- EXTRA_GROUPS-graph-end -->\n\n> [!IMPORTANT]\n> 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.\n>\n> 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.\n\n## Used in\n\nCheck these projects to get real-life examples of `extra-platforms` usage:\n\n- ![GitHub stars](https://img.shields.io/github/stars/kdeldycke/meta-package-manager?label=%E2%AD%90&style=flat-square) [Meta Package Manager](https://github.com/kdeldycke/meta-package-manager#readme) - A unifying CLI for multiple package managers.\n- ![GitHub stars](https://img.shields.io/github/stars/kdeldycke/click-extra?label=%E2%AD%90&style=flat-square) [Click Extra](https://github.com/kdeldycke/click-extra#readme) - Drop-in replacement for Click to make user-friendly and colorful CLI.\n\nFeel free to send a PR to add your project in this list if you are relying on Click Extra in any way.\n\n## Development\n\n[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.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Detect platforms and group them by family",
    "version": "1.7.0",
    "project_urls": {
        "Changelog": "https://github.com/kdeldycke/extra-platforms/blob/main/changelog.md",
        "Documentation": "https://kdeldycke.github.io/extra-platforms",
        "Funding": "https://github.com/sponsors/kdeldycke",
        "Homepage": "https://github.com/kdeldycke/extra-platforms",
        "Issues": "https://github.com/kdeldycke/extra-platforms/issues",
        "Repository": "https://github.com/kdeldycke/extra-platforms"
    },
    "split_keywords": [
        "multiplatform",
        " pytest",
        " python"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f1b9b53ded83337691bb2054eec049906149f31d54f90a1793e1c0652d6c645b",
                "md5": "8aad32f59d6dc29e5323aacfa25d6e26",
                "sha256": "4a0ea0a79d91cffefaab0bc16cc2e633b181193d58c0700c3c3e600d321b72a8"
            },
            "downloads": -1,
            "filename": "extra_platforms-1.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8aad32f59d6dc29e5323aacfa25d6e26",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 29059,
            "upload_time": "2024-12-03T07:17:20",
            "upload_time_iso_8601": "2024-12-03T07:17:20.960169Z",
            "url": "https://files.pythonhosted.org/packages/f1/b9/b53ded83337691bb2054eec049906149f31d54f90a1793e1c0652d6c645b/extra_platforms-1.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2a13e5c083cf45bd40d7e9babe31ff522f5c41987d916dddd5b80a4c8d5a3f37",
                "md5": "8f39fef4cd08a95d9b5403a3eed4dd4d",
                "sha256": "1ceffea7b3721b937442a7961c83e0dfe1d0f43523696c4fa6c201552905e08e"
            },
            "downloads": -1,
            "filename": "extra_platforms-1.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "8f39fef4cd08a95d9b5403a3eed4dd4d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 43683,
            "upload_time": "2024-12-03T07:17:22",
            "upload_time_iso_8601": "2024-12-03T07:17:22.775144Z",
            "url": "https://files.pythonhosted.org/packages/2a/13/e5c083cf45bd40d7e9babe31ff522f5c41987d916dddd5b80a4c8d5a3f37/extra_platforms-1.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-03 07:17:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kdeldycke",
    "github_project": "extra-platforms",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "extra-platforms"
}
        
Elapsed time: 0.54157s