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. Self-contained library using uv. 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 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.

Legacy license

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.0.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.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: troml-0.4.0.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.0.tar.gz
Algorithm Hash digest
SHA256 e36dc2f4695f173ee4e8bc0916ede837125a8feff27046a768b33dc5da658e1b
MD5 a2451eeeab58b921fb60a883212ce02f
BLAKE2b-256 d066fc389811c2cf419fde8d04cd8cd4ef89045650dfd80d6b3aed6a55ba9a28

See more details on using hashes here.

Provenance

The following attestation bundles were made for troml-0.4.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: troml-0.4.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5047a6d770c4542b649f4ccfcccfcb5696751a38046b9c5f207fe90f0846287a
MD5 933aa35fc022da925961761cf05284fc
BLAKE2b-256 916bde999a4fc9c47d16cbdb833e8bf0a54e4d9d165635987ab0b64bdd5b8734

See more details on using hashes here.

Provenance

The following attestation bundles were made for troml-0.4.0-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