3.5.0 - 🎃 The Exorcism of Python 3.9 👻
Released on October 31, 2025 With the removal of Python 3.9 support, Prefect now requires Python 3.10 or later. This means you can finally say goodbye tofrom __future__ import annotations in your workflow code—native type annotations are now standard! This release also removes several long-deprecated features including Runner functionality and system Blocks. Check the Breaking Changes section below for details.
Enhancements ➕➕
- Add
on_runninghook support for tasks by @zzstoatzz in #19277 - Allow using Field descriptions directly in Flow parameters (#13912) by @jmesterh in #19281
- Add
PREFECT_SERVER_UI_SHOW_PROMOTIONAL_CONTENTsetting by @zzstoatzz in #19299
- Remove Python 3.9 support by @desertaxle in #19273
- Remove deprecated
Runnerfunctionality and system Blocks by @desertaxle in #19307
- Fix forward reference resolution in
ValidatedFunctionby @desertaxle in #19289 - Fix
datetimeparameter serialization inrun_deploymentby @zzstoatzz in #19278 - Fix time zone normalization bug in interval schedules by @zzstoatzz in #19301
- Fix multiprocessing deadlock after using
prefect_test_harnesson Linux by @zzstoatzz in #19116
- Update
typerminimum to0.16.0forclick>=8.2compatibility by @zzstoatzz in #19269 - Remove weird language by @zzstoatzz in #19271
- Update
justrecipes to use 3.10 for lowest python by @zzstoatzz in #19297 - Fix duration in
generate_deprecation_messageby @desertaxle in #19314 - Fix
RRuleScheduletest flakiness from DST-dependent date by @zzstoatzz in #19305 - Add debug log for fork handler registration failure by @zzstoatzz in #19311
- Add global concurrency limits concept doc and refactor how-to guide by @desertaxle in #19231