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