Metadata-Version: 2.4
Name: troml-dev-status
Version: 0.2.0
Summary: Objectively infer PyPI Development Status classifiers from code and release artifacts.
Project-URL: Repository, https://github.com/matthewdeanmartin/troml_dev_status
Project-URL: Changelog, https://github.com/matthewdeanmartin/troml_dev_status/blob/main/CHANGELOG.md
Project-URL: homepage, https://github.com/matthewdeanmartin/troml_dev_status
Project-URL: issues, https://github.com/matthewdeanmartin/troml_dev_status/issues/
Author: Gemini, ChatGPT
Author-email: Matthew Dean Martin <matthewdeanmartin@gmail.com>
License-File: LICENSE
Keywords: development status,python packaging,trove classifiers
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Framework :: Pydantic
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: Security
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Requires-Dist: httpx[http2]>=0.28.1
Requires-Dist: packaging>=25.0
Requires-Dist: pathspec>=0.12.1
Requires-Dist: pydantic>=2.11.9
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: rich>=14.1.0
Requires-Dist: tomli>1.0.0; python_version < '3.11'
Requires-Dist: tomlkit>=0.13.3
Description-Content-Type: text/markdown

# 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 ∞](https://github.com/matthewdeanmartin/troml_dev_status/blob/main/docs/PEP.md).

## Installation

```bash
pip install troml-dev-status
````

## Usage

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

```bash
# 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.

## Output

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

### Example Human-Readable Output

```text
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Check ID                         ┃ Status ┃ Evidence                                    ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ R1. Published at least once      │   OK   │ Found 15 releases on PyPI for 'my-package'  │
│ R2. Wheel + sdist present        │   OK   │ Latest release 1.2.3 has wheel and sdist    │
│ ...                              │   ...  │ ...                                         │
│ Q5. Type hints shipped           │   X    │ 45.8% of 120 public symbols are annotated   │
│ ...                              │   ...  │ ...                                         │
└──────────────────────────────────┴────────┴─────────────────────────────────────────────┘
          Final Inferred Classifier: Development Status :: 4 - Beta
 Reason: EPS=16/19; version 0.8.0 < 1.0.0; recent release (35 days ago)
```

### Example JSON Output

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

```json
{
  "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](https://codecov.io/gh/matthewdeanmartin/troml_dev_status/branch/main/graph/badge.svg)](https://codecov.io/gh/matthewdeanmartin/troml_dev_status)                                                          |
| Docs           | [![Docs](https://readthedocs.org/projects/troml_dev_status/badge/?version=latest)](https://troml_dev_status.readthedocs.io/en/latest/)                                                                                |
| PyPI           | [![PyPI](https://img.shields.io/pypi/v/troml_dev_status)](https://pypi.org/project/troml_dev_status/)                                                                                                                 |
| Downloads      | [![Downloads](https://static.pepy.tech/personalized-badge/troml-dev-status?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/troml_dev_status) |
| License        | [![License](https://img.shields.io/github/license/matthewdeanmartin/troml_dev_status)](https://github.com/matthewdeanmartin/troml_dev_status/blob/main/LICENSE.md)                                                    |
| Last Commit    | ![Last Commit](https://img.shields.io/github/last-commit/matthewdeanmartin/troml_dev_status)                                                                                                                          |

## Libray info pages
- [troml_dev_status](https://libraries.io/pypi/troml_dev_status)

## Snyk Security Pages

- [troml_dev_status](https://security.snyk.io/package/pip/troml_dev_status)

## Prior Art

- [check-python-versions](https://pypi.org/project/check-python-versions/)
- [pyproject-fmt](https://pypi.org/project/pyproject-fmt/)
- [troml](https://pypi.org/project/troml/)
- [pyroma](https://pypi.org/project/pyroma/)