Show HN: Extra-Platforms, Python library to detect OS, arch, shell, CI, AI
github.comI built Extra Platforms over the past 5 years because I kept writing the same detection boilerplate over and over. And also because Python's original platform.linux_distribution() function has been removed in Python 3.8. Its replacement, Distro, only covers Linux.
It detects six traits (CPU architecture, OS/distribution, shell, terminal, CI, agents), which are grouped into families (BSD, LINUX, UNIX, ...) for convenience.
You can try the library without installing anything:
$ uvx --with extra-platforms python
>>> from extra_platforms import current_platform, BSD, is_linux
>>> current_platform()
Platform(id='macos', name='macOS')
>>> current_platform() in BSD
True
>>> is_linux()
False
It also ships Pytest decorators (@skip_linux, @unless_macos) for platform-conditional tests.The library has zero dependencies and is Apache-2.0 licensed.
I'm interested in collecting edge cases, which you can send me by performing an auto-detection with:
$ uvx extra-platforms The pytest decorators are the most immediately useful part for me — @skip_linux and @unless_macos solve something I've hacked around with pytest.mark.skipif(sys.platform != ...) more times than I'd like to admit. The CI and AI agent detection is interesting. Curious how you handle cases where multiple agents are running in the same environment — does it return the first match or all of them?
For the moment I consider that only one agent can be active. If multiple are detected, I raise an error. That is intentional to gather more context and feedback from users. I will change this behavior as soon as someone report me a use-case.
See the implementation at: https://github.com/kdeldycke/extra-platforms/blob/ecbe740bf7...