ChangelogΒΆ
11.0.3.dev0 (unreleased)ΒΆ
Warning
This version is not released yet and is under active development.
Exclude
debug.yamlfrom repomatic workflow sync.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-actiontocodecov-cli.Add typos extended identifiers for common capitalization fixes (GitHub, macOS, PyPI, etc.).
Add
ignore_missing_filesto bumpversion configuration.Rename bug report issue template to
bug-report.ymland add bug label.Update code of conduct attribution links to canonical URLs.
Rename
"linters"to"zizmor"in[tool.repomatic] init.excludeto match upstream rename.Add
assigneesfield and uv version custom manager torenovate.json5.Add GitHub issue comment fragment exclusion rule to
lychee.toml.Enable parallel test execution by default via
--numprocesses=autoin pytestaddopts.
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_platformsfrom ~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
distrodependency with built-in/etc/os-releaseparser, making the package dependency-free. macOSPlatform.info()now returnsdistro_id: Noneinstead ofdistro_id: "darwin".Add new
Agenttrait 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_LINUXplatform for Linux environments wheredistrocannot identify the specific distribution (e.g., minimal containers or build chroots without/etc/os-release). Closes #479.Show detected agent in
extra-platformsCLI output.Use
TERM,CI, andLLMenvironment 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
Terminaltrait 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-platformsCLI.Fix emoji column alignment in CLI.
9.1.0 (2026-02-15)ΒΆ
Note
9.1.0 is available on π PyPI and π GitHub.
Add
extra-platformsCLI command.Skip Nuitka binary builds.
Add new
ALPINE,KALI,MANJARO,OPENWRTplatform definitions.Replace filesystem-based shell detection with parent process tree walking via
/procon Linux.Make
is_powershell()detection cross-platform (Linux, macOS, Windows) viaPSModulePathenvironment variable and process tree inspection.Fix CLI crash on Windows due to
cp1252encoding 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
Shelltrait 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(useALL_TRAIT_IDS).Remove
ALL_PLATFORMS_WITHOUT_CI(useALL_PLATFORMS).Remove
UNKNOWN_LINUX(useUNKNOWN_PLATFORM).Remove
ANY_ARM,ANY_MIPS,ANY_SPARC,ANY_WINDOWS(useALL_ARM,ALL_MIPS,ALL_SPARC,ALL_WINDOWS).Remove
OTHER_UNIX(useOTHER_POSIX).Remove
current_os()(usecurrent_platform()).Remove
current_platforms()(usecurrent_traits()).Remove
platforms_from_ids()(usetraits_from_ids()).Remove
is_unknown_linux()(useis_unknown_platform()).Remove
is_all_architectures(),is_all_platforms(),is_all_ci(),is_all_traits()(useis_any_architecture(),is_any_platform(),is_any_ci(),is_any_trait()).Remove
is_all_platforms_without_ci()(useis_any_platform()).Remove
is_ci()(useis_any_ci()).Remove
is_other_unix()(useis_other_posix()).Remove
is_bsd_without_macos()(useis_bsd_not_macos()).Remove
is_unix_without_macos()(useis_unix_not_macos()).Remove
Group._extract_members()andGroup._extract_platforms()(useextract_members()).Remove deprecated module shims for
extra_platforms.platformandextra_platforms.operations.
Remove
_deprecated.pymodule.
8.0.0 (2026-02-02)ΒΆ
Note
8.0.0 is available on π PyPI and π GitHub.
Add
aliasesfield toTraitclass, allowing alternative IDs that resolve to the canonical ID.Add aliases for common architecture names:
arm64βaarch64amd64βx86_64armhf,armv7βarmv7li486βi386powerpc64le,ppc64elβppc64le
Emit a
UserWarningwhen an alias is used, encouraging use of the canonical ID.Change
Trait.aliasestype fromtupletofrozensetfor better semantics.Add new
BIG_ENDIANandLITTLE_ENDIANgroups to classify architectures by endianness, withis_big_endian()andis_little_endian()detection functions.Remove
operations.pyand move content togroupandgroup_datamodules.Rename
Group._extract_members()toextract_members()and make it public.Simplify
reduce()algorithm from brute-force enumeration to a greedy approximation for better performance.Move
current_*()andis_unknown_*()functions todetection.pymodule.Create new
platform_info.pymodule for platform-specific info gathering.Add
claude.mddocumentation file.
7.0.0 (2026-01-18)ΒΆ
Note
7.0.0 is available on π PyPI and π GitHub.
Add new
ARMV5TELarchitecture.Add new
DRAGONFLY_BSD,HAIKUandILLUMOSplatforms.Add new
ARCH_32_BIT,ARCH_64_BITandUNKNOWNgroups.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
AARCH64on Windows ARM runners.Rename
UNKNOWN_LINUXtrait toUNKNOWN_PLATFORM.Remove
UNKNOWN_ARCHITECTUREtrait fromALL_ARCHITECTURESgroup.Remove
UNKNOWN_LINUXtrait fromALL_PLATFORMSgroup.Remove
UNKNOWN_CItrait fromALL_CIgroup.current_architecture(),current_platform()andcurrent_ci()functions now returnsUNKNOWN_ARCHITECTURE,UNKNOWN_PLATFORMandUNKNOWN_CIif detection fails. Add strict mode to raise an exception instead.Rename groups:
OTHER_UNIXβOTHER_POSIXANY_ARMβALL_ARMANY_MIPSβALL_MIPSANY_SPARCβALL_SPARCANY_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. Deprecatecurrent_platforms()in favor of it.Add new
current_architecture()andcurrent_ci()methods to return the current architecture and CI system.Rename:
current_os()tocurrent_platform().platforms_from_ids()totraits_from_ids().CIgroup toALL_CI.CInow refers to theCI(Trait)class.ALL_PLATFORM_IDSconstant toALL_TRAIT_IDS.Group.platformstoGroup.members.Group.platform_idstoGroup.member_ids.Group._extract_platforms()toGroup._extract_members()
Group.membersis now an immutableMappingProxyType.Add more in-place operators (
|=,&=,-=,^=) and set-like behavior toGroup.Add
canonicalattribute toGroup.Add new
ALL_ARCHITECTURES,ANY_ARM,X86,LOONGARCH,ANY_MIPS,POWERPC,RISCV,ANY_SPARC,IBM_MAINFRAME,WEBASSEMBLYandALL_TRAITSgroups.Deprecate
ALL_PLATFORMS_WITHOUT_CIgroup is favor ofALL_PLATFORMS.Add new
ALL_ARCHITECTURE_GROUPS,ALL_PLATFORM_GROUPSandALL_CI_GROUPScollections of groups.Remove utilization workaround for
macos-15-intel.Replace deprecated
codecov/test-results-actionbycodecov/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.lockupdates.Merge all label jobs into a single one.
Change the
test,typinganddocsextra dependency groups into development dependency groups.Uncap all dependencies.
Run tests on Python
3.14tand3.15tfree-threaded variants.Run tests on
ubuntu-slimGitHub Actions runner.Run docs update job on
ubuntu-slimrunner.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
tomlidependency for Python 3.10 users.Skip tests on intermediate Python versions (
3.11,3.12and3.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_CHECKINGguard 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-uvaction to installuvinstead of manually installing it withpip.Run tests on
macos-26andmacos-15-intelrunners.Remove tests on EOLβed
windows-2019andmacos-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_CIgroup to exclude all CI systems fromALL_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_CIandUNKNOWN_CI.Add new
CIgroup to group all CI platforms.Move OS families diagrams to group documentation page.
Remove
ALL_PLATFORMSfrom Sankey diagram.Run tests on
windows-11-armrunners.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 toGroup.Allow
Nonevalues in nested references to platforms and groups.Keep initial order of data from
platforms_from_ids()andgroups_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
tomlidependency.
2.1.0 (2025-02-20)ΒΆ
Note
2.1.0 is available on π PyPI and π GitHub.
Add new
platforms_from_idsandgroups_from_idsmethods 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_IDSandALL_IDSconstants.Removes
ALL_OS_LABELS.Add
windows-2025to 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 ofis_<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 toGroup.New
target_poolparameter onreducemethod let you specify the subset of groups to reduce platforms to.Remove
CURRENT_OS_IDandCURRENT_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 forGroup.Deduplicate platforms on
Groupinstantiation.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.04instead ofubuntu-22.04.Run tests on
macos-15. Remove tests onmacos-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_LINUXgroup toLINUX.Rename
ALL_WINDOWSgroup toANY_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_LIKEfamily that mergeALL_LINUXandLINUX_LAYERSgroups.
1.1.1 (2024-08-21)ΒΆ
Note
1.1.1 is available on π PyPI and π GitHub.
Run tests on
ubuntu-24.04andmacos-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
pytestutilities.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.