Metadata-Version: 2.3
Name: trainloop-llm-logging
Version: 0.9.0
Summary: TrainLoop LLM Logging SDK for data collection
Author: Mason Pierce
Author-email: masonpierce@trainloop.ai
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: fsspec (>=2023.1.0)
Requires-Dist: pyyaml (>=6.0,<7.0)
Requires-Dist: requests (>=2.31.0,<3.0.0)
Description-Content-Type: text/markdown

# TrainLoop Python SDK

Zero-touch HTTP instrumentation library for collecting LLM request/response data.

## 📚 Documentation

For complete Python SDK documentation, installation guides, and usage examples:

**👉 [evals.docs.trainloop.ai](https://evals.docs.trainloop.ai/reference/sdk/python/api)**

### Quick Links
- **[Python SDK Guide](https://evals.docs.trainloop.ai/docs/python/quick-start)** - Complete integration guide
- **[Installation](https://evals.docs.trainloop.ai/getting-started/installation#python-sdk)** - Install the SDK
- **[Development](https://evals.docs.trainloop.ai/docs/python/development)** - Contributing to the SDK

## Quick Start

```bash
# Install
pip install trainloop-llm-logging
```

```python
from trainloop_llm_logging import collect

# Start collecting LLM data
collect("path/to/trainloop.config.yaml")

# Your existing LLM calls work automatically
# No code changes required!
```

For detailed information, visit **[evals.docs.trainloop.ai/docs/python](https://evals.docs.trainloop.ai/docs/python)**

## Development & Testing

For SDK development and testing information:

- **Unit Tests**: `poetry run pytest -m unit`
- **Integration Tests**: `python run_integration_tests.py` (see [INTEGRATION_TESTING.md](./INTEGRATION_TESTING.md))
- **Documentation**: See [docs/development/sdk-testing.md](../../docs/docs/development/sdk-testing.md)

**Note**: Integration tests cannot use pytest due to import order requirements. Use the standalone test runner instead.
