Skip to main content

Suggests classifiers for Python packages.

Project description

troml 🥁

troml provides a list of potential classifiers that could be added to a Python package.

It supports modern Python packages that use the pyproject.toml standard (aka PEP 621 and PEP 639). troml also follows PEP 561 to determine whether a package should be considered typed or not.

Screenshot of troml in action

Usage

uvx

uv is an extremely fast Python package and project manager, written in Rust. uvx is an alias for uv tool run ....

  1. Install uv
  2. Go to a directory with source code for a Python package
  3. uvx troml

pipx

pipx is a way to run install and run Python applications in isolated environments.

  1. Install pipx
  2. pipx install troml
  3. Go to a directory with source code for a Python package
  4. troml

pip --user

Install troml to the Python user install directory. More details in the pip docs.

  1. pip install --user troml
  2. Go to a directory with source code for a Python package
  3. troml

CLI arguments

path

troml optionally accepts a path as the first argument. Defaults to . for the current directory.

uvx troml /path/to/pypyproject.toml

suggest

Provides an output of suggested classifiers. The default if no other command is used.

uvx troml suggest /path/to/pypyproject.toml

--fix

Automatically add classifiers in the pyproject.toml based on the suggestions. Will not remove existing classifiers.

uvx troml suggest --fix /path/to/pypyproject.toml

--no-multiline

Output the classifiers in a single-line. No-op if used without --fix.

uvx troml suggest --fix --multiline /path/to/pypyproject.toml

check

Exits with an error code if there are any suggested classifiers. Useful for pre-commit, CI/CD, etc.

uvx troml check /path/to/pypyproject.toml

Supported classifiers

Python version

troml will read project.python-requires and suggest classifiers based on it.

License (deprecated)

troml will suggest removing the legacy license classifiers.

Dependencies

troml will suggest classifiers based on the dependencies in project.dependencies, project.dependency-groups, and tool.uv.constraint-dependencies.

Typing

troml will suggest the "Typing :: Typed" classifier based on the existence of the py.typed file in the same directory as the pyproject.toml file.

FAQ

Does this add classifiers interactively?

Nope and it's not something I would add in. Take a look at https://codeberg.org/kfdm/add-classifiers or https://github.com/jvllmr/trove-setup if that's what you are looking for.

What's with the name?

  • The classifiers for Python are called "Trove classifiers"
  • Modern Python packages use TOML for configuration

"trove" 🤝 "TOML"

In a happy coincidence, "trommel" in Dutch means "drum".

Development

  1. Install just: https://just.systems/man/en/packages.html
  2. just fetch

Run from source

uv run troml [PATH-TO-PYPROJECT-TOML]

Commands

  • unit tests (via pytest): just test
  • linting (via ruff): just lint
  • type checking (via mypy): just type
  • unit test coverage (via coverage.py): just coverage
  • run 'em all: just dev

Inspiration

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

troml-0.4.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

troml-0.4.1-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file troml-0.4.1.tar.gz.

File metadata

  • Download URL: troml-0.4.1.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for troml-0.4.1.tar.gz
Algorithm Hash digest
SHA256 d71b6ea5dcc503bb31937b05f7a7752076d00052c2a0c963f33a2325d0dc0c4b
MD5 6450336b61233ad10417ae2e5b61643e
BLAKE2b-256 89e381d7e78cd1508435f02baea95325342f8e997ee25bfa9104c3d49e64e5ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for troml-0.4.1.tar.gz:

Publisher: publish.yml on adamghill/troml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file troml-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: troml-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for troml-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cac2bd3663f03af716c221e795500a9ca85eca6b4e27b816db10c89d04f35905
MD5 97c63e8945d49e7a541edcd8efcfb5d8
BLAKE2b-256 843092d5e111c77a89df4267b359a1463e703d47b4e10dc7f33a4b49a2e3252b

See more details on using hashes here.

Provenance

The following attestation bundles were made for troml-0.4.1-py3-none-any.whl:

Publisher: publish.yml on adamghill/troml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page