Settings

Theme

Show HN: Extra-Platforms, Python library to detect OS, arch, shell, CI, AI

github.com

9 points by kdeldycke a month ago · 3 comments · 1 min read

Reader

I 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
thitami a month ago

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?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection