Skip to main content

troml_dev_status

Project inspired by troml to suggest a Development Status based solely on objective criteria.

A tool to objectively infer PyPI "Development Status" classifiers from code and release artifacts, based on the draft PEP ∞.

As far as I know, no python authority has given objective criteria for development status and the meaning is private to each user. Development status gets brief mention in PEP301.

Meanings

  • Development Status :: 1 - Planning - Minimum score. All projects get at least Planning.
  • Development Status :: 2 - Pre-Alpha - Few points awarded by grading rubric.
  • Development Status :: 3 - Alpha - Many points awarded
  • Development Status :: 4 - Beta - Even more points awarded
  • Development Status :: 5 - Production/Stable - Perfect score
  • Development Status :: 6 - Mature - Production and signs of upgrade help, e.g. Deprecation
  • Development Status :: 7 - Inactive - Impossible to award. If you publish now, you are active.

In scope - easily graded metrics.

Out of scope - vibes, intentions, promises, support contracts, budget, staffing.

Also out of scope - linting, type annotations, code coverage in the sense of running third party tools at eval time.

Surprisingly out of scope - interface and API stability. Impossible to evaluate in Python (several noble attempts!), depends on developer wishes, hopes, aspirations, vibes which require psychology tests, not build tools.

tests pre-commit.ci status Downloads Python Version Release

Installation

Should be safe to pipx install so as to not mix your dependencies with the tool's

pipx install troml-dev-status

Usage

Run the tool against a local Git repository that has a pyproject.toml file.

# just display info
troml-dev-status analyze /path/to/your/project 

# fails if tool disagrees with your current development status
troml-dev-status verify /path/to/your/project 

# updates pyproject.toml with current status
troml-dev-status update /path/to/your/project 

The tool will analyze the project's PyPI releases, Git history, and source code to produce an evidence-based " Development Status" classifier.

README Rating and Completion Checking

These two features require LLMs. If no API key is found (see .env.example) these will be skipped.

Output

The tool outputs a human-readable summary table and a machine-readable JSON report.

Example Human-Readable Output

                              Development Status Analysis for troml-dev-status                              
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID           ┃ Description                 ┃ Status ┃ Evidence                                           ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ C1           │ SECURITY.md Present         │   OK   │ Checked for security files                         │
├──────────────┼─────────────────────────────┼────────┼────────────────────────────────────────────────────┤
│ C2           │ Trusted Publisher           │   OK   │ All files in most recent package are attested.     │
├──────────────┼─────────────────────────────┼────────┼────────────────────────────────────────────────────┤
│ C3           │ Dependencies Pinned         │   X    │ Found 3 not strictly pinned somehow: textstat,     │
│              │                             │        │ llvm-diagnostics, semantic-version.                │
├──────────────┼─────────────────────────────┼────────┼────────────────────────────────────────────────────┤
│ C4           │ Reproducible Dev Env        │   OK   │ Found uv lockfile ('uv.lock').                     │
...

Final Inferred Classifier: Development Status :: 4 - Beta
Reason: EPS=13/18; version 0.2.0 < 1.0.0; recent release; S3 holds.

Example JSON Output

The tool also prints a detailed JSON object containing the results of every check.

{
  "inferred_classifier": "Development Status :: 4 - Beta",
  "evaluated_at": "2025-09-14T20:00:00.123456Z",
  "checks": {
    "R1": {
      "passed": true,
      "evidence": "Found 15 releases on PyPI for 'my-package'"
    },
    "...": {}
  },
  "metrics": {
    "eps_score": 16,
    "eps_total": 19
  }
}

Project Health

Metric Status
Coverage codecov
Docs Docs
PyPI PyPI
Downloads Downloads
License License
Last Commit Last Commit

Library info pages

Snyk Security Pages

Prior Art

Autofill/Suggest

Validate

Raw Data

UI/Initialization

License Tracking

Similar hosted services

  • OpenSSF Best Practices - some machine validated criteria and many self asserted.
  • Libraries.io SourceRank - 1/2 things you can control, 1/2 "popularity contest" metrics

Contributing

See the contributing file for how to contribute

See the development_setup file for how to set up and to run a local build.

Project Links

Download files

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

Source Distribution

troml_dev_status-0.7.0.tar.gz (63.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_dev_status-0.7.0-py3-none-any.whl (77.1 kB view details)

Uploaded Python 3

File details

Details for the file troml_dev_status-0.7.0.tar.gz.

File metadata

  • Download URL: troml_dev_status-0.7.0.tar.gz
  • Upload date:
  • Size: 63.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for troml_dev_status-0.7.0.tar.gz
Algorithm Hash digest
SHA256 0fa6aefbe46a3b49ae80cf25bffd4a5f2ae72878180caf25a618581873f36b63
MD5 aac1590c91300af0439faa508806e30f
BLAKE2b-256 26754620a3092b9f6ec9eca8c7c31ed835f1cecc7e84b8fabfa8caddcf2aa43c

See more details on using hashes here.

Provenance

The following attestation bundles were made for troml_dev_status-0.7.0.tar.gz:

Publisher: release.yml on matthewdeanmartin/troml_dev_status

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_dev_status-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for troml_dev_status-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc3aa28ac3b05d24527d91833899eae66601193f0f5153982b55d98358392bac
MD5 1d048a2522322cb07b70a92e4be00ef9
BLAKE2b-256 284acdaddae7f358e8a2073bb556b32273972fcb978d637019d9b707bf828698

See more details on using hashes here.

Provenance

The following attestation bundles were made for troml_dev_status-0.7.0-py3-none-any.whl:

Publisher: release.yml on matthewdeanmartin/troml_dev_status

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

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

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