Headless scheduling and time-slot engine for Python applications.
Project description
slotify
Русская версия: README.md.
slotify is a production-oriented, headless Python scheduling engine for time ranges, slots, bookings, blocks, and scheduling rules.
Positioning
This package is intended for developers embedding scheduling behavior into:
- web backends
- APIs and microservices
- internal tools
- CLI workflows
- reusable open-source libraries
It is framework-agnostic and storage-agnostic by design.
Features
- timezone-aware API with UTC-normalized calculations
- source-of-truth event model plus derived slots
- pluggable rules and strategies
- optimistic concurrency hooks
- strong typing and modern Python packaging
- in-memory implementation for tests and prototyping
- merge/split free-slot behavior out of the box
Example
from datetime import UTC, datetime, timedelta
from slotify import InMemoryScheduleRepository, Scheduler
from slotify.domain import ScheduleDefinition, TimeRange
repository = InMemoryScheduleRepository()
scheduler = Scheduler(repository=repository)
repository.create_schedule(
ScheduleDefinition(
schedule_id="room-a",
bounds=TimeRange(
start=datetime(2026, 3, 23, 8, 0, tzinfo=UTC),
end=datetime(2026, 3, 23, 18, 0, tzinfo=UTC),
),
slot_size=timedelta(minutes=30),
timezone="UTC",
)
)
scheduler.add_block(
"room-a",
start=datetime(2026, 3, 23, 12, 0, tzinfo=UTC),
end=datetime(2026, 3, 23, 13, 0, tzinfo=UTC),
metadata={"reason": "maintenance"},
)
available_slots = scheduler.get_slots("room-a")
Installation
python -m pip install slotify
For local development:
python -m pip install -e .[dev]
Docs
See the docs/ directory for:
- overview
- quickstart
- concepts
- extensibility notes
- roadmap
Status
Version 0.1.0 is focused on a clean, reusable core for scheduling logic. It does not implement distributed locking or full RRULE recurrence yet.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slotify_engine-0.1.0.tar.gz.
File metadata
- Download URL: slotify_engine-0.1.0.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f570d1e57a3df6d34bd18b0689d873e6e3c9ebba0cb696722703eda4c17f5d00
|
|
| MD5 |
c2fd5dd2fdefcb5fba49567b33cba32a
|
|
| BLAKE2b-256 |
fdc18da9d92cbdbfa14c817ec4c4a9447febe9c0eb8efebf798c292682dd0ea8
|
File details
Details for the file slotify_engine-0.1.0-py3-none-any.whl.
File metadata
- Download URL: slotify_engine-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f551f4a2f233ac541cf103b89a2ef795fe25989d0aff981348ebf6212e6e401f
|
|
| MD5 |
1ec4edb0eae0f1c56b584afde0349189
|
|
| BLAKE2b-256 |
b7570269ab3c9b2f2be3cdc13a898b069960c4ec5f63e5fd10df9eb273e829ae
|