Metadata-Version: 2.4
Name: subscriptionkore
Version: 0.1.0
Summary: Provider-agnostic async subscription management library for SaaS applications
Author: InnerKore Team
License: MIT
Keywords: chargebee,lemonsqueezy,paddle,payments,saas,stripe,subscriptions
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: python-ulid>=2.0.0
Requires-Dist: structlog>=24.0.0
Requires-Dist: tenacity>=8.2.0
Provides-Extra: all
Requires-Dist: alembic>=1.13.0; extra == 'all'
Requires-Dist: asyncpg>=0.29.0; extra == 'all'
Requires-Dist: chargebee>=2.0.0; extra == 'all'
Requires-Dist: fastapi>=0.110.0; extra == 'all'
Requires-Dist: paddle-billing>=1.0.0; extra == 'all'
Requires-Dist: redis>=5.0.0; extra == 'all'
Requires-Dist: sqlalchemy[asyncio]>=2.0.0; extra == 'all'
Requires-Dist: stripe>=8.0.0; extra == 'all'
Requires-Dist: uvicorn>=0.27.0; extra == 'all'
Provides-Extra: chargebee
Requires-Dist: chargebee>=2.0.0; extra == 'chargebee'
Provides-Extra: dev
Requires-Dist: mypy>=1.8.0; extra == 'dev'
Requires-Dist: pre-commit>=3.6.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.3.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: myst-parser>=2.0.0; extra == 'docs'
Requires-Dist: sphinx-press-theme>=0.8.0; extra == 'docs'
Requires-Dist: sphinx>=7.0.0; extra == 'docs'
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.110.0; extra == 'fastapi'
Requires-Dist: uvicorn>=0.27.0; extra == 'fastapi'
Provides-Extra: paddle
Requires-Dist: paddle-billing>=1.0.0; extra == 'paddle'
Provides-Extra: redis
Requires-Dist: redis>=5.0.0; extra == 'redis'
Provides-Extra: sqlalchemy
Requires-Dist: alembic>=1.13.0; extra == 'sqlalchemy'
Requires-Dist: asyncpg>=0.29.0; extra == 'sqlalchemy'
Requires-Dist: sqlalchemy[asyncio]>=2.0.0; extra == 'sqlalchemy'
Provides-Extra: stripe
Requires-Dist: stripe>=8.0.0; extra == 'stripe'
Description-Content-Type: text/markdown

# SubscriptionKore

**Provider-agnostic async subscription management library for SaaS applications**

[![Documentation Status](https://readthedocs.org/projects/subscriptionkore/badge/?version=latest)](https://subscriptionkore.readthedocs.io/en/latest/?badge=latest)

## Features

- **Multi-provider support**: Stripe, Paddle, Chargebee, Lemon Squeezy
- **Async-first**: Built with asyncio for high performance
- **Type-safe**: Full type hints and Pydantic models
- **Database agnostic**: Works with SQLAlchemy, Redis, and more
- **Event-driven**: Domain events for extensibility
- **FastAPI integration**: Ready-to-use FastAPI routers

## Installation

```bash
pip install subscriptionkore
```

For optional dependencies:

```bash
pip install subscriptionkore[all]  # All providers and integrations
```

## Quick Start

```python
from subscriptionkore import SubscriptionKore, SubscriptionKoreConfig

# Configure
config = SubscriptionKoreConfig(
    default_provider="stripe",
    stripe_api_key="sk_test_...",
)

# Initialize
async with SubscriptionKore(config) as sk:
    # Create customer
    customer = await sk.create_customer(
        email="user@example.com",
        name="John Doe"
    )

    # Create subscription
    subscription = await sk.create_subscription(
        customer_id=customer.id,
        price_id="price_123"
    )

    print(f"Created subscription: {subscription.id}")
```

## Documentation

Full documentation is available at [Read the Docs](https://subscriptionkore.readthedocs.io/).

## Examples

See the `examples/` directory for complete applications:

- `fastapi_app.py`: FastAPI integration example
- `multi_provider_app.py`: Multi-provider setup

## Contributing

Contributions are welcome! Please see the [contributing guide](https://subscriptionkore.readthedocs.io/en/latest/contributing.html).

## License

MIT License