Skip to main content

Objectively infer PyPI Development Status classifiers from code and release artifacts.

Project description

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 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_dev_status-0.6.1.tar.gz (62.4 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.6.1-py3-none-any.whl (76.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for troml_dev_status-0.6.1.tar.gz
Algorithm Hash digest
SHA256 7fded248064bb4741bb11a25c4e016899fae99421c5c3975c5353df805f76ea3
MD5 5fdaa5f600226656b8d9b0dab27d97f1
BLAKE2b-256 dae46a4b4430fb78663d0b5159674789c55e3aca629d8a24fb303797e6eec402

See more details on using hashes here.

Provenance

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

Publisher: publish_to_pypi.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.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for troml_dev_status-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6a5b8dde00515823137f5a604bb79c9d19cb233c6d02fa2de5999905133743ac
MD5 9fcf0cc9c452aa44de73b5deadf05f0a
BLAKE2b-256 4a99b45ca5560050540486133c238000d61436f14b8759c29f76b8ce3b1b9153

See more details on using hashes here.

Provenance

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

Publisher: publish_to_pypi.yml on matthewdeanmartin/troml_dev_status

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