All notable changes to the OpenJobSpec Python SDK will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2025-02-12
- Async-first
Clientfor enqueuing jobs, batch operations, and queue management. SyncClientwrapper for non-async usage.Workerwithasyncio.TaskGroup-based structured concurrency.- Handler registration via
@worker.register("job.type")decorator. - Enqueue and execution middleware chains with
next()pattern. RetryPolicywith exponential backoff, jitter, and ISO 8601 duration support.- Workflow primitives:
chain(),group(),batch(). WorkerStateenum for type-safe worker lifecycle states.- Full 8-state
JobStateenum matching the OJS specification. UniquePolicyfor job deduplication.EventandEventTypefor OJS event definitions.QueueandQueueStatstypes for queue introspection.- Abstract
Transportinterface withHTTPTransportimplementation using httpx. - Structured error hierarchy:
OJSError,OJSAPIError,DuplicateJobError,JobNotFoundError,QueuePausedError,RateLimitedError. - Graceful shutdown with SIGTERM/SIGINT handling and configurable grace period.
- Heartbeat loop with server-initiated state transitions (quiet, terminate).
- PEP 561
py.typedmarker for downstream type checking.