## procrastinate-org/procrastinate — 3.9.0…3.10.0

_105 commits._

### Features
- **feat: add external connection support for job cancellation and status** (06ba385)
- **Add deprecation warning for verbosity flag in configure_logging()** (77c12cf)

### Fixes
- **Merge pull request #1618 from procrastinate-org/fix-signal-handler-race** (99b634d)
- **Merge pull request #1619 from procrastinate-org/fix-ci-flaky-infra** (5d81981)
- **Merge pull request #1620 from procrastinate-org/fix-acceptance-flakes** (b4c3cb6)
- **Merge pull request #1617 from procrastinate-org/fix-heartbeat-test-clock-skew** (de085de)
- **Merge pull request #1616 from procrastinate-org/fix-side-task-cancellation-deadlock** (bbeab37)
- **Fix the Django testing how-to examples** (0d459fd)
- **Merge pull request #1583 from vipierozan99/retry-strategy-typing-fix** (1433612)

### Backend
- **Lock file maintenance (#1628)** (8b63983)
- **Lock file maintenance** (a1c90a3)
- **Update benchmark-action/github-action-benchmark action to v1.22.2 (#1627)** (c835ac9)
- **Update benchmark-action/github-action-benchmark action to v1.22.2** (8f0a361)
- **Lock file maintenance (#1626)** (b00bb47)
- **Lock file maintenance** (eee152f)
- **Update astral-sh/setup-uv action to v10.1.0 (#1625)** (85e97bc)
- **Update astral-sh/setup-uv action to v10.1.0** (d31a816)
- **Lock file maintenance (#1623)** (677e6d0)
- **Lock file maintenance** (13d71d1)
- **Lock file maintenance (#1622)** (509487b)
- **Lock file maintenance** (a1ca350)
- **Merge pull request #1614 from procrastinate-org/dependabot/uv/sqlparse-0.6.0** (fbb5dde)
- **Stop leaving workers behind when a test fails** (15195ac)
- **Merge branch 'main' into dependabot/uv/sqlparse-0.6.0** (3965401)
- **Give the zipball download a timeout and retry it** (2e37adc)
- **Lock file maintenance (#1621)** (6747d94)
- **Lock file maintenance** (44f0776)
- **Wait for the lock holder to be running in test_lock** (660513e)
- **Re-check that the signal is still handled before sending it** (11ff573)
- **Bound the wait on worker shutdown in the periodic defer test** (14a6396)
- **Wait for the signal handler before signalling the worker** (b448157)
- **Compare heartbeats against the database clock, not the local one** (09b72c2)
- **Cancel and wait in the same round, report errors before abandoning** (04cd2e3)
- **Wait for the periodic defer instead of budgeting 0.1s for it** (41ce190)
- **Re-cancel side tasks that ignore their cancellation** (1911b5a)
- **Merge pull request #1615 from procrastinate-org/renovate/lock-file-maintenance** (f39f20e)
- **Make the custom retry strategy example type-check** (d92d2db)
- **Make the retry how-to examples actually runnable** (03a92b0)
- **Only mark import paths performed once the imports succeeded** (9e42350)
- **Assert on ValueError in the two_fails acceptance test** (821cbbd)
- **Raise explicitly instead of tripping __getattr__ in MovedElsewhere** (d136108)
- **Annotate __exit__ and __aexit__ with their real types** (25943f5)
- **Refresh the lock file** (c538f52)
- **Log through module loggers in the demos** (5c2a967)
- **Make datetime usage timezone-explicit** (c9e3e97)
- **Raise specific exception types in the acceptance tasks** (2b417e8)
- **Bind original_coro in the in-memory connector's coroutine wrapper** (2522676)
- **Look up __call__ directly in is_async_middleware** (6aa701a)
- **Mark the deliberate blind excepts with noqa** (f0a4ac7)
- **Flatten nested with statements into single with blocks** (413b9f4)
- **Drop redundant exception text from logger.exception messages** (2d87977)
- **Guard App.perform_import_paths with a flag instead of lru_cache** (6d4b0eb)
- **Bind job_id in the worker's abort_reason closure** (6cc8ff1)
- **Format Markdown code blocks with ruff** (b0ab359)
- **Bump sqlparse from 0.5.5 to 0.6.0** (646e87f)
- **[autofix.ci] apply automated fixes** (defbed6)
- **Lock file maintenance** (8fdeca1)
- **Update astral-sh/setup-uv action to v10.0.1 (#1612)** (6e1f50c)
- **Update astral-sh/setup-uv action to v10.0.1** (8daf5af)
- **Update astral-sh/setup-uv action to v10 (#1611)** (3559ad0)
- **Update astral-sh/setup-uv action to v10** (a6fd117)
- **Lock file maintenance (#1604)** (a6dd948)
- **Tentatively un-flakying tests** (b146dc4)
- **Update all dependencies (#1589)** (458c3af)
- **Update pypa/gh-action-pypi-publish action to v1.14.2** (76faea0)
- **Merge pull request #1610 from procrastinate-org/coverage-permissions** (9500b8c)
- **Restore the coverage job's write permissions** (39c1338)
- **Merge pull request #1609 from procrastinate-org/uv-frozen** (ad1ee3f)
- **Pin CI to the committed lockfile** (53bae66)
- **Merge pull request #1608 from procrastinate-org/coverage-permissions** (0134e41)
- **Restore the coverage comment's token permissions** (a6b72ee)
- **Merge pull request #1607 from procrastinate-org/prek** (bb09315)
- **Run a locked prek, make uv-lock effective under UV_FROZEN** (8ba7703)
- **Don't restate ruff's default rules** (b0f1f76)
- **Lint on 3.14, catch debugger statements, run zizmor** (0c9f325)
- **Pin the same Python in Autofix as in Lint** (2a882a1)
- **Run prek through autofix.ci on pull requests** (2907a7d)
- **Finish switch to prek, remove versions from .pre-commit-config.yaml** (7724260)
- **Update astral-sh/setup-uv action to v9 (#1602)** (d9cf91d)
- **Update astral-sh/setup-uv action to v9** (cdaa9b1)
- **Merge pull request #1501 from mhumzaarain/Verbosity_Fix** (575d016)
- **Lock file maintenance (#1601)** (c3c6f97)
- **Lock file maintenance** (91effab)
- **Lock file maintenance (#1600)** (4e85184)
- **[pre-commit.ci] auto fixes from pre-commit.com hooks** (1ed63c1)
- **Lock file maintenance** (2410703)
- **Lock file maintenance (#1594)** (7feebed)
- **[pre-commit.ci] auto fixes from pre-commit.com hooks** (a9baa26)
- **Lock file maintenance** (c321b55)
- **Lock file maintenance (#1592)** (13b2205)
- **[pre-commit.ci] auto fixes from pre-commit.com hooks** (fbfbd1e)
- **Lock file maintenance** (5494427)
- **Update ewjoachim/python-coverage-comment-action action to v4 (#1590)** (f099a75)
- **Update ewjoachim/python-coverage-comment-action action to v4** (13e9add)
- **Merge pull request #1560 from atteahma/external-connection-cancel-status** (19199c1)
- **broaden the type of RetryValue** (49d7ca5)
- **Lock file maintenance (#1582)** (372f20b)
- **[pre-commit.ci] auto fixes from pre-commit.com hooks** (dd1dd69)
- **Lock file maintenance** (f446447)
- **Remove implementation detail from configure_logging() docstring** (3bc52d1)
- **Ignore PendingDeprecationWarning in test_cli_logging_configuration** (50a66b9)
- **Removed Redundant Tests & Move all decision logic from configure_logging() to get_log_level()** (fb912a2)
- **Fixed Verbosity issue** (2bf6584)

### Docs
- **docs: define the job id in the cancel example** (3779304)

### Chore
- **refactor: use an intermediate variable for the sync connector in cancel/status** (0662085)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/procrastinate-org/procrastinate?utm_source=github-action)._