ChangelogΒΆ

13.0.1.dev0 (unreleased)ΒΆ

Warning

This version is not released yet and is under active development.

13.0.0 (2026-05-25)ΒΆ

  • Add IBM i platform detection: OS400 / is_os400(), recognized via sys.platform == "os400" (reported by Python 3.9+ in IBM i’s AIX-compatible PASE runtime). Grouped under UNIX_LAYERS alongside Cygwin.

  • Detect the active shell on Windows by walking the parent process tree via the Win32 Tool Help API (CreateToolhelp32Snapshot), where neither /proc nor ps exists. is_powershell(), is_cmd(), Git Bash detection through is_bash(), current_shell() arbitration, and current_shell_path() now rely on the actual ancestor processes rather than only the PROMPT/PSModulePath environment variables. Executable paths are resolved with QueryFullProcessImageNameW. The ctypes bindings live in a new extra_platforms._windows module, imported lazily and only on Windows.

  • Add current_shell_path() returning the executable path of the current shell (from the process tree when available, falling back to SHELL). Shell.info() now exposes the running shell’s binary in its "path" field instead of always returning the configured login shell from SHELL.

  • Detect interpreter-hosted shells like Xonsh, which runs as a Python script so the process tree shows python rather than xonsh. The tree walk scans interpreter arguments for the shell’s launcher file, matching only an existing file named exactly after the shell to avoid false positives. A new interpreter field on Shell declares the host interpreter (XONSH sets it to python).

  • Recognize shells running under a user-mode CPU emulator: under foreign-architecture emulation (like docker run --platform linux/arm64 on an x86 host), the process tree shows qemu-aarch64 /bin/bash … rather than bash; the walk strips a leading qemu-<arch> (or rosetta) wrapper and reads the emulated command, composing with interpreter-hosted detection.

  • Detect the active shell on illumos, Solaris, and AIX/IBM i. Their System V /proc exposes process status as binary pstatus_t with no /proc/<pid>/cmdline or exe: the /proc walk previously raised UnicodeDecodeError, crashing current_shell(). It now reads /proc records as bytes and falls back to ps when /proc yields nothing. The ps invocation uses the portable POSIX form (-o pid=,ppid=,args=) with positional parsing of empty headers, working across the System V ps of all three.

  • Extend shell detection via the process tree to macOS and the BSDs: the /proc-based walk was Linux-only, and the ps-based fallback now covers macOS, FreeBSD, DragonFly, and other systems without /proc. The walk also recognizes login shells (argv[0] like -bash), survives an unreadable /proc/<pid>/exe via /proc/<pid>/cmdline, and reads parent PIDs from BSD procfs layout (/proc/<pid>/status).

  • Render GitHub-style alerts (> [!NOTE], > [!WARNING], …) as admonitions in the documentation by enabling MyST’s alert extension (requires myst-parser>=5.1).

  • Drop the types-requests typing stub and the now-empty typing dependency group, and require requests>=2.34, which ships inline type hints (PEP 561).

12.0.3 (2026-04-29)ΒΆ

Note

12.0.3 is available on 🐍 PyPI and πŸ™ GitHub.

  • Extend missing-shell tolerance to test_skip_all_shells, test_skip_bash, and test_skip_powershell in tests/test_pytest.py. The 12.0.2 shell-tolerance work only covered tests/test_root.py, leaving these three tests failing on sandboxed builders (Guix, BusyBox-only images) where no shell is detected.

12.0.2 (2026-04-28)ΒΆ

Note

12.0.2 is available on 🐍 PyPI and πŸ™ GitHub.

  • Move --cov, --cov-report=term, --numprocesses=auto, and --dist=loadgroup from pyproject.toml [tool.pytest].addopts into the CI workflow. Removes pytest-cov and pytest-xdist as unconditional test-time dependencies for downstream packagers.

  • Avoid spurious cmd /c ver subprocess calls on Windows in detection functions for non-Windows platforms. is_macos() now relies on sys.platform == "darwin" directly. is_illumos(), is_solaris(), is_sunos(), is_wsl1(), and is_wsl2() short-circuit on sys.platform before invoking platform.platform(), platform.uname(), or platform.release() (each of which shells out via platform._syscmd_ver on Windows). Fixes downstream test suites that globally patch subprocess.run.

  • Improve test portability: add network marker to test_pyproject_classifiers (exclude in sandboxed builds with pytest -m "not network"); tolerate missing shells in test_current_funcs and test_current_strict_mode (Guix builders, BusyBox-only images, where shell detection finds nothing).

12.0.1 (2026-04-26)ΒΆ

Note

12.0.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Defer logging and warnings imports out of the cold-load path: the stdlib logging import pulls in traceback (and _colorize on Python 3.14+), which dominates import time on slow architectures like i586. Closes #494

  • Loosen the test_import_time threshold from 500 ms to 1000 ms as a safety margin for slower architectures.

12.0.0 (2026-04-24)ΒΆ

Note

12.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add SH (Bourne Shell) trait and is_sh() detection function.

  • Add GUIX_BUILD CI trait and is_guix_build() detection function.

  • Add --json, --version, and --help options to the CLI. --json outputs all detected traits and groups as a JSON object for scripting.

  • Overhaul shell detection: resolve symlinks in SHELL before identifying the implementation (so /bin/sh β†’ /bin/bash detects bash, not sh); current_shell() now disambiguates via three-tier priority β€” startup env vars, then /proc parent process tree, then SHELL value β€” fixing detection on CI runners where SHELL=/bin/sh points to a different shell than the one actually executing; SH is treated as a low-specificity fallback and stripped when a more specific shell is detected; new version_env_var field on Shell records each shell’s startup environment variable (like BASH_VERSION for Bash); is_powershell() now checks PSModulePath as a presence signal rather than a version variable. Use is_bourne_shells() to check for a Bourne-compatible interface regardless of implementation.

11.1.0 (2026-04-21)ΒΆ

Note

11.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add NixOS platform detection.

  • Convert Python docstrings to MyST markdown; render them with the repomatic.myst_docstrings Sphinx extension.

  • Expand CI test matrix to cover Ubuntu 22.04, Ubuntu 22.04 ARM, macOS 14, macOS 15, and Windows 2022.

11.0.5 (2026-04-03)ΒΆ

Note

11.0.5 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add project logo and banner. Closes #522

  • Fix broken pipx documentation link. Closes #386

  • Enable check_untyped_defs in mypy configuration. Fix all resulting type errors.

11.0.4 (2026-03-30)ΒΆ

Note

11.0.4 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add Void Linux platform detection. Closes #523

  • Suppress false-positive link checker failures for sites that block bots.

11.0.3 (2026-03-23)ΒΆ

Note

11.0.3 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add type stubs for dynamically generated is_*() group detection functions.

  • Exclude windows-11-arm + Python 3.10 from test matrix (no native ARM64 build).

  • Add Windows ARM64 workaround to force native Python instead of x86 emulation.

  • Migrate Codecov integration from codecov-action to codecov-cli.

  • Enable parallel test execution by default via --numprocesses=auto in pytest addopts.

11.0.2 (2026-03-04)ΒΆ

Note

11.0.2 is available on 🐍 PyPI and πŸ™ GitHub.

  • Raise import time test threshold from 200 ms to 500 ms to accommodate slower architectures like i586. Closes #494.

11.0.1 (2026-03-04)ΒΆ

Note

11.0.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Cache AST parse results per module in docstring generation, reducing import extra_platforms from ~120 ms to ~34 ms.

11.0.0 (2026-02-28)ΒΆ

Note

11.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Switch license from GPL-2.0+ to Apache-2.0. Closes #488.

10.0.0 (2026-02-27)ΒΆ

Note

10.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Replace distro dependency with built-in /etc/os-release parser, making the package dependency-free. macOS Platform.info() now returns distro_id: None instead of distro_id: "darwin".

  • Add new Agent trait type for detecting AI coding agents.

  • Add 3 agent definitions: CLAUDE_CODE, CLINE, CURSOR.

  • Add current_agent() detection function.

  • Add agent group: ALL_AGENTS.

  • Add @skip_<agent> and @unless_<agent> pytest decorators for all agents and agent groups.

  • Add GENERIC_LINUX platform for Linux environments where distro cannot identify the specific distribution (e.g., minimal containers or build chroots without /etc/os-release). Closes #479.

  • Show detected agent in extra-platforms CLI output.

  • Use TERM, CI, and LLM environment variables to distinguish unrecognized terminals, CI systems, and agents from absent ones.

9.2.0 (2026-02-16)ΒΆ

Note

9.2.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add new Terminal trait type for detecting terminal emulators. Closes #459.

  • Add 20 terminal definitions: ALACRITTY, APPLE_TERMINAL, CONTOUR, FOOT, GHOSTTY, GNOME_TERMINAL, GNU_SCREEN, HYPER, ITERM2, KITTY, KONSOLE, RIO, TABBY, TILIX, TMUX, VSCODE_TERMINAL, WEZTERM, WINDOWS_TERMINAL, XTERM, ZELLIJ.

  • Add current_terminal() detection function.

  • Add terminal groups: ALL_TERMINALS, GPU_TERMINALS, MULTIPLEXERS, NATIVE_TERMINALS, WEB_TERMINALS.

  • Add @skip_<terminal> and @unless_<terminal> pytest decorators for all terminals and terminal groups.

  • Display all detected traits and groups in extra-platforms CLI.

  • Fix emoji column alignment in CLI.

9.1.0 (2026-02-15)ΒΆ

Note

9.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add extra-platforms CLI command.

  • Skip Nuitka binary builds.

  • Add new ALPINE, KALI, MANJARO, OPENWRT platform definitions.

  • Replace filesystem-based shell detection with parent process tree walking via /proc on Linux.

  • Make is_powershell() detection cross-platform (Linux, macOS, Windows) via PSModulePath environment variable and process tree inspection.

  • Fix CLI crash on Windows due to cp1252 encoding not supporting Unicode output.

  • Tweak some icons.

  • Add issue template with detection results reporting.

9.0.0 (2026-02-12)ΒΆ

Note

9.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add new Shell trait type for detecting command-line interpreters.

  • Add 12 shell definitions: ASH, BASH, CMD, CSH, DASH, FISH, KSH, NUSHELL, POWERSHELL, TCSH, XONSH, ZSH.

  • Add current_shell() detection function.

  • Add shell groups: ALL_SHELLS, BOURNE_SHELLS, C_SHELLS, OTHER_SHELLS, WINDOWS_SHELLS.

  • Add @skip_<shell> and @unless_<shell> pytest decorators for all shells and shell groups.

  • Fix icons conflicts.

  • Fix crash in compiled binaries (Nuitka, PyInstaller, cx_Freeze) caused by missing source files for docstring extraction.

  • Force Sphinx documentation builds to use Python >= 3.12 via [tool.uv.dependency-groups].

  • Remove all deprecated backward-compatibility aliases:

    • Remove ALL_PLATFORM_IDS (use ALL_TRAIT_IDS).

    • Remove ALL_PLATFORMS_WITHOUT_CI (use ALL_PLATFORMS).

    • Remove UNKNOWN_LINUX (use UNKNOWN_PLATFORM).

    • Remove ANY_ARM, ANY_MIPS, ANY_SPARC, ANY_WINDOWS (use ALL_ARM, ALL_MIPS, ALL_SPARC, ALL_WINDOWS).

    • Remove OTHER_UNIX (use OTHER_POSIX).

    • Remove current_os() (use current_platform()).

    • Remove current_platforms() (use current_traits()).

    • Remove platforms_from_ids() (use traits_from_ids()).

    • Remove is_unknown_linux() (use is_unknown_platform()).

    • Remove is_all_architectures(), is_all_platforms(), is_all_ci(), is_all_traits() (use is_any_architecture(), is_any_platform(), is_any_ci(), is_any_trait()).

    • Remove is_all_platforms_without_ci() (use is_any_platform()).

    • Remove is_ci() (use is_any_ci()).

    • Remove is_other_unix() (use is_other_posix()).

    • Remove is_bsd_without_macos() (use is_bsd_not_macos()).

    • Remove is_unix_without_macos() (use is_unix_not_macos()).

    • Remove Group._extract_members() and Group._extract_platforms() (use extract_members()).

    • Remove deprecated module shims for extra_platforms.platform and extra_platforms.operations.

  • Remove _deprecated.py module.

8.0.0 (2026-02-02)ΒΆ

Note

8.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add aliases field to Trait class, allowing alternative IDs that resolve to the canonical ID.

  • Add aliases for common architecture names:

    • arm64 β†’ aarch64

    • amd64 β†’ x86_64

    • armhf, armv7 β†’ armv7l

    • i486 β†’ i386

    • powerpc64le, ppc64el β†’ ppc64le

  • Emit a UserWarning when an alias is used, encouraging use of the canonical ID.

  • Change Trait.aliases type from tuple to frozenset for better semantics.

  • Add new BIG_ENDIAN and LITTLE_ENDIAN groups to classify architectures by endianness, with is_big_endian() and is_little_endian() detection functions.

  • Remove operations.py and move content to group and group_data modules.

  • Rename Group._extract_members() to extract_members() and make it public.

  • Simplify reduce() algorithm from brute-force enumeration to a greedy approximation for better performance.

  • Move current_*() and is_unknown_*() functions to detection.py module.

  • Create new platform_info.py module for platform-specific info gathering.

  • Add claude.md documentation file.

7.0.0 (2026-01-18)ΒΆ

Note

7.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add new ARMV5TEL architecture.

  • Add new DRAGONFLY_BSD, HAIKU and ILLUMOS platforms.

  • Add new ARCH_32_BIT, ARCH_64_BIT and UNKNOWN groups.

  • Add new detection functions:

    • is_armv5tel()

    • is_dragonfly_bsd()

    • is_haiku()

    • is_illumos()

    • is_arch_32_bit()

    • is_arch_64_bit()

    • is_unknown()

  • Fix detection of AARCH64 on Windows ARM runners.

  • Rename UNKNOWN_LINUX trait to UNKNOWN_PLATFORM.

  • Remove UNKNOWN_ARCHITECTURE trait from ALL_ARCHITECTURES group.

  • Remove UNKNOWN_LINUX trait from ALL_PLATFORMS group.

  • Remove UNKNOWN_CI trait from ALL_CI group.

  • current_architecture(), current_platform() and current_ci() functions now returns UNKNOWN_ARCHITECTURE, UNKNOWN_PLATFORM and UNKNOWN_CI if detection fails. Add strict mode to raise an exception instead.

  • Rename groups:

    • OTHER_UNIX β†’ OTHER_POSIX

    • ANY_ARM β†’ ALL_ARM

    • ANY_MIPS β†’ ALL_MIPS

    • ANY_SPARC β†’ ALL_SPARC

    • ANY_WINDOWS β†’ ALL_WINDOWS

  • Rename detection functions:

    • is_other_unix() β†’ is_other_posix()

    • is_all_architectures() β†’ is_any_architecture()

    • is_all_platforms() β†’ is_any_platform()

    • is_all_ci() β†’ is_any_ci()

    • is_all_traits() β†’ is_any_trait()

    • is_unknown_linux() β†’ is_unknown_platform()

    • is_bsd_without_macos() β†’ is_bsd_not_macos()

    • is_unix_without_macos() β†’ is_unix_not_macos()

  • Re-introduce aliases removed in v6.0.0 for backward compatibility:

    • Group._extract_platforms() β†’ Group._extract_members()

    • is_all_platforms_without_ci() β†’ is_any_platform()

    • is_ci() β†’ is_any_ci()

  • Rename Pytest decorators:

    • @skip/@unless_unknown_linux β†’ @skip/@unless_unknown_platform

    • @skip/@unless_bsd_without_macos β†’ @skip/@unless_bsd_not_macos

    • @skip/@unless_unix_without_macos β†’ @skip/@unless_unix_not_macos

  • Deprecate renamed symbols and detection functions with aliases.

  • Pre-compute traits and groups metadata to enforce conventions for data definitions, detection functions, Pytest decorators and document generation.

  • Mark all canonical groups with the β¬₯ symbol everywhere in the documentation.

  • Cross-link all traits, groups and detection functions in the documentation.

6.0.0 (2026-01-02)ΒΆ

Note

6.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add architecture detection: aarch64, arm, armv6l, armv7l, armv8l, i386, i586, i686, loongarch64, mips, mips64, mips64el, mipsel, ppc, ppc64, ppc64le, riscv32, riscv64, s390x, sparc, sparc64, unknown_architecture, wasm32, wasm64, x86_64.

  • Architectures, platforms and CI systems are now known as traits.

  • Add new current_traits() method to return all traits matching the current environment: architecture, platforms and CI systems. Deprecate current_platforms() in favor of it.

  • Add new current_architecture() and current_ci() methods to return the current architecture and CI system.

  • Rename:

    • current_os() to current_platform().

    • platforms_from_ids() to traits_from_ids().

    • CI group to ALL_CI. CI now refers to the CI(Trait) class.

    • ALL_PLATFORM_IDS constant to ALL_TRAIT_IDS.

    • Group.platforms to Group.members.

    • Group.platform_ids to Group.member_ids.

    • Group._extract_platforms() to Group._extract_members()

  • Group.members is now an immutable MappingProxyType.

  • Add more in-place operators (|=, &=, -=, ^=) and set-like behavior to Group.

  • Add canonical attribute to Group.

  • Add new ALL_ARCHITECTURES, ANY_ARM, X86, LOONGARCH, ANY_MIPS, POWERPC, RISCV, ANY_SPARC, IBM_MAINFRAME, WEBASSEMBLY and ALL_TRAITS groups.

  • Deprecate ALL_PLATFORMS_WITHOUT_CI group is favor of ALL_PLATFORMS.

  • Add new ALL_ARCHITECTURE_GROUPS, ALL_PLATFORM_GROUPS and ALL_CI_GROUPS collections of groups.

  • Remove utilization workaround for macos-15-intel.

  • Replace deprecated codecov/test-results-action by codecov/codecov-action.

  • Move auto-lock time from 8:43 to 4:43.

5.1.0 (2025-12-06)ΒΆ

Note

5.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Change Amazon Linux icon.

  • Add cooldown period for dependabot and uv.lock updates.

  • Merge all label jobs into a single one.

  • Change the test, typing and docs extra dependency groups into development dependency groups.

  • Uncap all dependencies.

  • Run tests on Python 3.14t and 3.15t free-threaded variants.

  • Run tests on ubuntu-slim GitHub Actions runner.

  • Run docs update job on ubuntu-slim runner.

  • Unlock a CPU core stuck at 100% utilization on macos-15-intel.

5.0.1 (2025-11-15)ΒΆ

Note

5.0.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add detection of CachyOS. Closes #341.

5.0.0 (2025-11-03)ΒΆ

Note

5.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Relax dependencies to support Python 3.10.

  • Re-introduce tomli dependency for Python 3.10 users.

  • Skip tests on intermediate Python versions (3.11, 3.12 and 3.13) to reduce CI load.

4.1.1 (2025-11-02)ΒΆ

Note

4.1.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add detection of Ultramarine Linux. Closes #329.

4.1.0 (2025-10-21)ΒΆ

Note

4.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add new invalidate_caches() method to invalidate internal caches used for platform detection.

  • Remove dependency on boltons.

  • Add all Operating System :: trove classifiers.

  • Add all platform names as package keywords.

4.0.0 (2025-10-21)ΒΆ

Note

4.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Fix detection of GNU/Hurd. Closes #308.

  • Move all typing-related imports behind a hard-coded TYPE_CHECKING guard to avoid runtime imports.

  • Remove maximum capped version of all dependencies (relax all ~= specifiers to >=). This gives more freedom to downstream and upstream packagers. Document each minimal version choice.

  • Add official support of Python 3.14.

  • Run tests on Python 3.15.

  • Skip tests on Python 3.12 and 3.13 to reduce CI load.

  • Use astral-sh/setup-uv action to install uv instead of manually installing it with pip.

  • Run tests on macos-26 and macos-15-intel runners.

  • Remove tests on EOL’ed windows-2019 and macos-13.

  • Support GitHub admonitions in Sphinx/MyST documentation.

3.2.3 (2025-08-05)ΒΆ

Note

3.2.3 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add detection of macOS Tahoe (v26.x).

3.2.2 (2025-05-24)ΒΆ

Note

3.2.2 is available on 🐍 PyPI and πŸ™ GitHub.

  • Fix detection of UNKNOWN_CI.

3.2.1 (2025-05-17)ΒΆ

Note

3.2.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add convenient ALL_PLATFORMS_WITHOUT_CI group to exclude all CI systems from ALL_PLATFORMS.

3.2.0 (2025-05-17)ΒΆ

Note

3.2.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add detection of CI systems: GITHUB_CI, GITLAB_CI and UNKNOWN_CI.

  • Add new CI group to group all CI platforms.

  • Move OS families diagrams to group documentation page.

  • Remove ALL_PLATFORMS from Sankey diagram.

  • Run tests on windows-11-arm runners.

  • Remove tests on EOL ubuntu-20-04.

3.1.0 (2025-03-04)ΒΆ

Note

3.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Allow platform ID membership test on groups.

  • Add items() method to Group.

  • Allow None values in nested references to platforms and groups.

  • Keep initial order of data from platforms_from_ids() and groups_from_ids() results.

  • Allow arbitrary arguments number in Group._extract_platforms().

3.0.0 (2025-03-02)ΒΆ

Note

3.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Allow set operations to resolve group and Platform IDs.

  • Make resolution of platform and group IDs case-insensitive.

  • Only runs website tests on Linux to prevent DOSing them.

  • Drop supports for Python 3.10.

  • Remove tomli dependency.

2.1.0 (2025-02-20)ΒΆ

Note

2.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add new platforms_from_ids and groups_from_ids methods to retrieve platforms and groups from a collection of IDs.

  • Allow a platform to be fetched by its ID from a group with the group[platform_id] item getter syntax.

  • Add new ALL_PLATFORM_IDS, ALL_GROUP_IDS and ALL_IDS constants.

  • Removes ALL_OS_LABELS.

  • Add windows-2025 to the test matrix.

  • Mark Python 3.14 tests as stable.

2.0.0 (2025-01-02)ΒΆ

Note

2.0.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add detection of Nobara.

  • Fix current_os() to always return a single platform. Closes #158.

  • Add new current_platforms() method to return all platforms matching the current environment.

  • Generate a pair of Pytest @skip_<id>/@unless_<id> decorators for each platform and group.

  • Change all group membership check utilities to be functions instead of variables. You now have to call is_<group_id>() instead of is_<group_id>.

  • Cache the result of is_<group_id>() group membership check utilities.

  • Do not call all detection heuristics on module import. Instead, call them lazily when needed.

  • Make URLs required on all platforms.

  • Invite users in error messages and logs to contribute back edge-cases to improve detection heuristics.

  • Upload test results to coverage.

1.7.0 (2024-12-03)ΒΆ

Note

1.7.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Display the hierarchy of non-overlapping groups as a mindmap.

  • Add URL on all platforms.

  • Add detection of openSUSE Tumbleweed. Closes #133.

  • Do not allow icons on platforms and groups to be empty.

  • Run tests in parallel to speed up CI.

1.6.0 (2024-11-11)ΒΆ

Note

1.6.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add a new copy() method to Group.

  • New target_pool parameter on reduce method let you specify the subset of groups to reduce platforms to.

  • Remove CURRENT_OS_ID and CURRENT_OS_LABEL.

1.5.0 (2024-11-10)ΒΆ

Note

1.5.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Allow union, intersection, difference and symmetric difference of Group.

  • Implements <=, <, >=, >, |, &, - and ^ operators for Group.

  • Deduplicate platforms on Group instantiation.

  • Allow testing for membership of individual platform in Group.

1.4.0 (2024-10-27)ΒΆ

Note

1.4.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Allow set comparison between groups and single platform.

  • Add detection of Tuxedo OS. Closes #93.

  • Add support for Python 3.13.

  • Drop supports for Python 3.9.

  • Run jobs on ubuntu-24.04 instead of ubuntu-22.04.

  • Run tests on macos-15. Remove tests on macos-12.

  • Run tests on Python 3.14-dev.

1.3.1 (2024-09-18)ΒΆ

Note

1.3.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Fix conflicting detection heuristics for Linux distributions. Closes #72.

  • Fix fetching of macOS version for releases without build number (like 15.0).

1.3.0 (2024-09-11)ΒΆ

Note

1.3.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add detection of all versions of macOS and Windows. Closes #55.

  • Drop supports for Python 3.8.

  • Add is_<group_id> booleans to module root to test the membership of the current platform to that group.

  • Rename ALL_LINUX group to LINUX.

  • Rename ALL_WINDOWS group to ANY_WINDOWS.

1.2.1 (2024-09-04)ΒΆ

Note

1.2.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Fix changelog update.

1.2.0 (2024-08-24)ΒΆ

Note

1.2.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add new LINUX_LIKE family that merge ALL_LINUX and LINUX_LAYERS groups.

1.1.1 (2024-08-21)ΒΆ

Note

1.1.1 is available on 🐍 PyPI and πŸ™ GitHub.

  • Run tests on ubuntu-24.04 and macos-12.

  • Add missing typed marker.

1.1.0 (2024-08-20)ΒΆ

Note

1.1.0 is available on 🐍 PyPI and πŸ™ GitHub.

  • Add documentation.

  • Expose all utilities at root level.

  • Split code.

1.0.2 (2024-08-19)ΒΆ

Note

1.0.2 is available on 🐍 PyPI and πŸ™ GitHub.

  • Re-release.

1.0.1 (2024-08-19)ΒΆ

Warning

1.0.1 is not available on 🐍 PyPI and πŸ™ GitHub.

  • Add pytest utilities.

  • Reorganize code.

  • Fix tests.

1.0.0 (2024-08-19)ΒΆ

Note

1.0.0 is the first version available on 🐍 PyPI and πŸ™ GitHub.

  • First version as a stand alone package extracted from click-extra.