pypa / trove-classifiers

Canonical source for classifiers on PyPI.
https://pypi.org/p/trove-classifiers/
Apache License 2.0
142 stars 96 forks source link

Request to add trove classifiers for CPU architectures #118

Open althonos opened 2 years ago

althonos commented 2 years ago

Hello there!

I am using mostly Python for scientific programming in bioinformatics, and I've come to develop several packages with support for particular CPU features, such as SIMD extensions. At the moment, listing compiled extensions is not obvious with classifiers (there is no Compiled classifier like there is a Typing :: Typed for typed packages), but in general using Programming Language :: C or Programming Language :: Cython is enough.

However, I was wondering if it would make sense to add classifiers to list CPU architectures, given:

  1. there is now the Environment :: GPU classifier, which can be used to tag CUDA-enabled code
  2. some packages may only run on certain target platforms (for instance when only x86 is supported by an upstream dependency)
  3. it would be nice to classify packages targeting specific targets like Arm, or supporting special features like SSE.

This is open for discussion, but I could imagine an Architecture classifier something like:

Architecture :: Any
Architecture :: x86
Architecture :: x86-64
Architecture :: Arm :: Armv7
Architecture :: Arm :: Aarch64

etc. for architectures, maybe with :: Only variants for code only supporting an architecture (e.g. Architecture :: x86-64 :: Only, like Programming Language :: Python :: 3 :: Only)

For CPU features, maybe something like:

Architecture :: x86-64 :: SSE
Architecture :: x86-64 :: SSE2
...
Architecture :: Arm :: Armv7 :: NEON
Architecture :: Arm :: Aarch64 :: NEON
Architecture :: Arm :: Aarch64 :: Helium

Since there is already an Environment :: GPU classifier, another option would be to use an Environment :: CPU root classifier (e.g. Environment :: CPU :: Arm :: Aarch64 :: NEON to mark that a package implements NEON-accelerated computation, or Environment :: CPU :: x86-64 :: Only to mark that a package is only available with an x86-64 CPU).