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.

Metadata

Release files for troml-dev-status 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for troml-dev-status 0.7.0
File Size Uploaded
troml_dev_status-0.7.0.tar.gz 63.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for troml-dev-status 0.7.0
File Interpreter ABI Platform
troml_dev_status-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 140.7 kB

Release files / troml_dev_status-0.7.0.tar.gz

Download URL troml_dev_status-0.7.0.tar.gz
Size 63.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0fa6aefbe46a3b49ae80cf25bffd4a5f2ae72878180caf25a618581873f36b63
BLAKE2b-256 checksum
How to use checksums
26754620a3092b9f6ec9eca8c7c31ed835f1cecc7e84b8fabfa8caddcf2aa43c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 29, 2026.

Transparency log

Release files / troml_dev_status-0.7.0-py3-none-any.whl

Download URL troml_dev_status-0.7.0-py3-none-any.whl
Size 77.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc3aa28ac3b05d24527d91833899eae66601193f0f5153982b55d98358392bac
BLAKE2b-256 checksum
How to use checksums
284acdaddae7f358e8a2073bb556b32273972fcb978d637019d9b707bf828698
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page