Releases: chrisguidry/docket
0.19.2 - Go with the flow
What's Changed
- Mark admission-blocked task spans as OK, not ERROR by @joshuastagner in #395
Full Changelog: 0.19.1...0.19.2
0.19.1 - Work it
Worker-level dependencies!
async with Worker(docket, dependencies=[Depends(transaction), Retry(attempts=3)]:
...You can now define dependencies on your worker that are merged with the dependencies of each task. This allows for adding cross-cutting/orthogonal concerns (instrumentation, observability, environment setup, etc) without repeating them for each task! Those worker-level dependencies can themselves have dependencies, including looking at the current task's task argument, task key, the current execution, or any other dependency.
More on this in the docs!
What's Changed
- Bump pytest from 9.0.2 to 9.0.3 by @dependabot[bot] in #391
- Add worker-level automatic task dependencies by @chrisguidry in #393
- Bump codecov/codecov-action from 5 to 6 in the all-actions group by @dependabot[bot] in #375
- Bump the all-dependencies group across 1 directory with 21 updates by @dependabot[bot] in #392
Full Changelog: 0.19.0...0.19.1
0.19.0 - Fake it 'til you make it
What's Changed
- Bump the all-dependencies group with 13 updates by @dependabot[bot] in #364
- Upload test results to Codecov by @chrisguidry in #366
- Bump j178/prek-action from 1 to 2 in the all-actions group by @dependabot[bot] in #367
- Fix Zensical URL (.dev → .org) by @aaazzam in #370
- Bump the all-dependencies group with 5 updates by @dependabot[bot] in #368
- Bump requests from 2.32.5 to 2.33.0 by @dependabot[bot] in #372
- Bump the all-dependencies group with 7 updates by @dependabot[bot] in #371
- Add Retry.forever() and ExponentialRetry.forever() classmethods by @chrisguidry in #373
- Bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #374
- Fix Read the Docs builds by bumping Zensical by @jakekaplan in #383
- Fix fakeredis 2.35 memory backend startup by @jakekaplan in #382
New Contributors
Full Changelog: 0.18.2...0.19.0
0.18.2 - cron is a flat circcle
What's Changed
- Replace croniter with cronsim by @chrisguidry in #363
Full Changelog: 0.18.1...0.18.2
0.18.1 - Don't be so shy
What's Changed
- Bump the all-dependencies group with 5 updates by @dependabot[bot] in #358
- Log errors from failing Perpetual tasks by @chrisguidry in #361
Full Changelog: 0.18.0...0.18.1
0.18.0 - Totally uncalled for
The big news with this release is that I've extracted Docket's dependency system to it's own library called uncalled-for (https://github.com/chrisguidry/uncalled-for and https://pypi.org/project/uncalled-for/). This should be a transparent change for all Docket users, and I've done everything I could to make sure that the import surface area is completely compatible.
I also took this opportunity to implement some ideas that we've been bouncing around for a bit, where we have Annotated dependencies specifically for dependencies that need to modify their behavior based on a parameter. For example, if you want to set a concurrency limit by customer, that looks like:
async def hit_customer_webhook(customer_id: Annotated[int, ConcurrencyLimit(2)]):
...
(note, the prior style continues to work for ConcurrencyLimit)
Inspired by this new style, I've implemented some additional modifiers to runtime behavior/admissions, Debouce, Cooldown, and RateLimit, which all hopefully do what they sound like they do. More on those new behavior dependencies in the docs.
Please note that with Annotated dependencies, they are still activated for the lifecycle of the task, but their return values aren't accessible as parameters. This is a design choice and we will not be supporting some_parameter: Annotated[SomeType, Depends(some_function)]. Our stance is that any dependency like that should be provided via a kwarg default to keep the intention clear. I want to thank @omikader for helping me think through this and bravely taking a stab at one version of Annotated dependencies.
What's Changed
- Polish docs: reorganize pages and clean up AI filler by @chrisguidry in #350
- Bump the all-dependencies group with 5 updates by @dependabot[bot] in #351
- Use uncalled-for for dependency injection plumbing by @chrisguidry in #353
- Support Annotated-style dependency injection by @chrisguidry in #354
- Debounce and Cooldown admission control dependencies by @chrisguidry in #355
- RateLimit admission control dependency by @chrisguidry in #356
- Share _signature_cache with uncalled-for by @chrisguidry in #357
Compatibility guarantees
I've tested both FastMCP 2.x and FastMCP 3.x with no other code changes and both are operating correctly. Prefect doesn't use any relevant imports from Docket and is using only the public API that's remained unchanged.
Full Changelog: 0.17.9...0.18.0
0.17.9 - READ ME
What's Changed
- Fix flaky test_task_duration_is_measured on Windows by @chrisguidry in #345
- Bump the all-dependencies group with 5 updates by @dependabot[bot] in #344
- Migrate docs hosting from GitHub Pages to ReadTheDocs by @chrisguidry in #347
- Fix README doc subpage URLs for RTD's /en/latest/ prefix by @chrisguidry in #348
- Point PyPI homepage to docket.lol by @chrisguidry in #349
Full Changelog: 0.17.8...0.17.9
0.17.8
What's Changed
- Clear
knownfrom runs hash on cancel so add() can reschedule by @chrisguidry in #336 - Handle AlreadyExists race in cluster image build by @chrisguidry in #337
- Serialize cluster image builds and split CLI tests into separate CI job by @chrisguidry in #338
- Fix high CPU on Windows memory:// backend and add Windows CI by @chrisguidry in #340
- Support redis-py 7.2.0 and bump CI to Redis 8.6 by @chrisguidry in #342
- Migrate docs from mkdocs-material to Zensical by @chrisguidry in #343
Full Changelog: 0.17.7...0.17.8
0.17.7 - The whole universe, just Lua scripts all the way down.
What's Changed
- Bump the all-dependencies group with 2 updates by @dependabot[bot] in #333
- Don't let _mark_as_terminal clobber Perpetual successor state by @chrisguidry in #335
Full Changelog: 0.17.6...0.17.7
0.17.6 - Perpetual: The Next Generation
What's Changed
-
Fix Perpetual rescheduling race condition by @chrisguidry in #331
-
Batch dependency updates by @chrisguidry in #319
-
Batch dependency updates by @chrisguidry in #327
-
Group Dependabot updates into single PRs by @chrisguidry in #328
-
Bump the all-dependencies group with 9 updates by @dependabot[bot] in #329
Full Changelog: 0.17.5...0.17.6