Metadata-Version: 2.4
Name: ulfblk-scheduling
Version: 0.1.0
Summary: Scheduling infrastructure: appointment management, availability, slot generation, and conflict detection
Project-URL: Homepage, https://github.com/abelardodiaz/web25-991-bloques-reciclables
Project-URL: Documentation, https://github.com/abelardodiaz/web25-991-bloques-reciclables/tree/main/packages/python/ulfblk-scheduling
Project-URL: Repository, https://github.com/abelardodiaz/web25-991-bloques-reciclables
Project-URL: Issues, https://github.com/abelardodiaz/web25-991-bloques-reciclables/issues
Author-email: Abelardo Diaz <abelardo@bloques.dev>
License-Expression: MIT
Keywords: appointments,availability,fastapi,scheduling,sqlalchemy
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Office/Business :: Scheduling
Classifier: Topic :: Software Development :: Libraries
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: sqlalchemy>=2.0
Requires-Dist: ulfblk-core
Provides-Extra: dev
Requires-Dist: aiosqlite>=0.20; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# ulfblk-scheduling

Scheduling infrastructure for the Bloques ecosystem: appointment management, availability windows, slot generation, and conflict detection.

## Features

- **AppointmentMixin** - SQLAlchemy mixin for appointment models with status transitions
- **AvailabilityMixin** - Recurring weekly availability windows
- **BlockedSlotMixin** - Blocked time ranges (holidays, breaks)
- **Slot Generator** - Pure function to compute available time slots
- **Conflict Checker** - Detect scheduling conflicts and validate advance booking limits
- **Scheduler Service** - Async appointment lifecycle with concurrency-safe creation

## Quick Start

```python
from ulfblk_scheduling import (
    SchedulingSettings,
    AppointmentMixin,
    AvailabilityMixin,
    generate_slots,
    check_conflicts,
)
```

## Installation

```bash
uv add ulfblk-scheduling
```
