17
0
2026-02-27 10:07:56 +00:00
committed by Git OBS Bridge
commit ca52c97833
6 changed files with 517 additions and 0 deletions

24
.gitattributes vendored Normal file
View File

@@ -0,0 +1,24 @@
*.changes merge=merge-changes
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
*.obscpio
*.osc
_build.*
.pbuild

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7d8b71cd29f1e65acb7adced16c3f55ee9a444727f3639ea596e9839318346dc
size 138053

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:614156b8ad27067c55b4c592f3d9648aa11db4c5b0b5dec33f9e4c93f40b0138
size 215691

View File

@@ -0,0 +1,378 @@
-------------------------------------------------------------------
Tue Feb 17 05:59:05 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 9.2.0:
* 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.
- update to 9.1.0:
* 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.
-------------------------------------------------------------------
Thu Feb 12 06:39:16 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 9.0.0:
* 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.
-------------------------------------------------------------------
Tue Feb 3 11:56:26 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 8.0.0:
* 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.
-------------------------------------------------------------------
Mon Jan 19 06:56:02 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 7.0.0:
- 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.
-------------------------------------------------------------------
Fri Jan 16 13:45:07 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 6.0.0:
* 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.
- switch to tarball from GitHub, as the one from PyPi does no
longer container the tests directory
-------------------------------------------------------------------
Tue Dec 9 06:44:50 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 5.1.0:
* 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.
-------------------------------------------------------------------
Mon Nov 17 06:55:54 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 5.0.1:
* Add detection of CachyOS. Closes #341.
-------------------------------------------------------------------
Tue Nov 4 16:54:46 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 5.0.0
* Changes
- 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.
-------------------------------------------------------------------
Sun Nov 2 16:01:14 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 4.1.1:
* Add detection of Ultramarine Linux. Closes #329.
-------------------------------------------------------------------
Wed Oct 22 04:46:43 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 4.1.0:
* 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.
- update to 4.0.0:
* 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.
-------------------------------------------------------------------
Wed Aug 6 05:28:30 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 3.2.3:
* Add detection of macOS Tahoe (v26.x)
-------------------------------------------------------------------
Sun May 25 07:58:30 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 3.2.2:
* Fix detection of UNKNOWN_CI
-------------------------------------------------------------------
Sun May 18 06:25:24 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 3.2.1:
* Add convenient ALL_PLATFORMS_WITHOUT_CI group to exclude all CI
systems from ALL_PLATFORMS
-------------------------------------------------------------------
Sun May 18 06:03:14 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 3.2.0:
* 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.
-------------------------------------------------------------------
Wed Mar 5 10:53:54 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 3.1.0:
* 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().
-------------------------------------------------------------------
Wed Mar 5 10:51:41 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 3.0.0:
* 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.
-------------------------------------------------------------------
Thu Feb 20 18:31:07 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 2.1.0:
* 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.
-------------------------------------------------------------------
Fri Jan 3 08:46:58 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 2.0.0:
* Add support for Nobara detection.
* 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.
-------------------------------------------------------------------
Tue Dec 3 08:39:24 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 1.7.0:
* Display the hierarchy of non-overlapping groups as a mindmap.
* Add URL on all platforms.
* Add support for openSUSE Tumbleweed detection. Closes #133.
* Do not allow icons on platforms and groups to be empty.
* Run tests in parallel to speed up CI.
-------------------------------------------------------------------
Thu Nov 28 10:31:10 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- enable builds for python3.13
-------------------------------------------------------------------
Wed Nov 20 13:47:55 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- new package python-extra-platforms, required by
python-click-extra

105
python-extra-platforms.spec Normal file
View File

@@ -0,0 +1,105 @@
#
# spec file for package python-extra-platforms
#
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?sle15_python_module_pythons}
Name: python-extra-platforms
Version: 9.2.0
Release: 0
Summary: Detect platforms and group them by family
License: GPL-2.0-or-later
URL: https://github.com/kdeldycke/extra-platforms
Source: https://github.com/kdeldycke/extra-platforms/archive/refs/tags/v%{version}.tar.gz#/extra_platforms-%{version}.tar.gz
BuildRequires: %{python_module base >= 3.10}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module uv-build}
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros
# SECTION runtime requirements
BuildRequires: %{python_module distro >= 1.9.0}
# /SECTION
# SECTION test requirements
BuildRequires: openSUSE-release
BuildRequires: %{python_module Sphinx}
BuildRequires: %{python_module myst-parser}
BuildRequires: %{python_module pytest >= 8.3.5}
BuildRequires: %{python_module pytest-randomly >= 3.16.0}
BuildRequires: %{python_module pytest-xdist >= 3.8.0}
BuildRequires: %{python_module requests >= 2.32.3 with %python-requests < 2.33}
BuildRequires: %{python_module tabulate >= 0.9}
BuildRequires: %{python_module tomli >= 2.3.0 if %python-base < 3.11}
BuildRequires: %{python_module wcmatch >= 10.0}
# /SECTION
BuildRequires: fdupes
Requires: python-distro >= 1.9.0
BuildArch: noarch
%if %{with libalternatives}
Requires: alts
BuildRequires: alts
%else
Requires(post): update-alternatives
Requires(postun): update-alternatives
%endif
%python_subpackages
%description
Detect platforms and group them by family
%prep
%autosetup -p1 -n extra-platforms-%{version}
%build
%pyproject_wheel
%install
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%python_clone -a %{buildroot}%{_bindir}/extra-platforms
%check
# remove coverage configuration
sed -i '/cov=/d' pyproject.toml
sed -i '/cov-report=/d' pyproject.toml
sed -i '/--cov-branch/d' pyproject.toml
sed -i '/--cov-precision=2/d' pyproject.toml
# do not run tests that try to connect to websites
rm -f tests/test_platform_data.py
# remove sphinx tests
rm -f tests/test_sphinx_crossrefs.py
IGNORED_CHECKS="test_pyproject_classifiers"
%pytest -k "not (${IGNORED_CHECKS})"
%if %{with libalternatives}
%pre
%python_libalternatives_reset_alternative extra-platforms
%else
%post
%python_install_alternative extra-platforms
%postun
%python_uninstall_alternative extra-platforms
%endif
%files %{python_files}
%python_alternative %{_bindir}/extra-platforms
%{python_sitelib}/extra_platforms
%{python_sitelib}/extra_platforms-%{version}.dist-info
%changelog