Metadata-Version: 2.4
Name: token_purveyor
Version: 0.1.1
Summary: Drop-in LLM cost tracker, analyzer, and optimizer
License: MIT
Keywords: cost,llm,openai,optimization,tokens,tracking
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Requires-Dist: click>=8.0
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.0
Requires-Dist: rich>=13.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-mock>=3.12; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# token-purveyor

> Drop-in LLM cost tracker, deduplicator, cluster analyzer, and optimizer for OpenAI APIs.

[![PyPI version](https://badge.fury.io/py/token-purveyor.svg)](https://badge.fury.io/py/token-purveyor)
[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Install
```bash
pip install token-purveyor
```

## One-line setup
```python
import openai
from token_purveyor import CostAwareClient

client = CostAwareClient(openai.OpenAI())

# Use exactly like the real OpenAI client — nothing else changes
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello"}],
)
