Release Notes¶
v2.4.2¶
Tasks can now be tagged at registration time.
- The task registration methods accept an optional
tagsargument. When provided, the extra tags are merged into each task's own tags as it is registered — applied acrossregister_task,register_from_module, andregister_from_dict. (#102) - Bumped
python-json-loggerto>= 4.1.0and switched JSON logging to the newpythonjsonlogger.jsonformatter path (the oldpythonjsonlogger.jsonloggermodule is deprecated). (#102)
v2.4.1¶
Task history can now be filtered by task tags.
- Added a
tagsfield to task history queries. Runs match when their task carries at least one of the given tags, resolved against the live registry. (#101)
v2.4.0¶
Lazy settings via pydantic-settings, JSONB params filtering for task history, and customisable route prefixes.
- Settings are now lazy — resolved on first access instead of at import
time. Env vars use a
FLUID_prefix by default; legacy unprefixed names are kept as aliases. (#100) - The task database plugin accepts a
route_prefixparameter for customising history route URLs and replaceswith_task_history_router()with aregister_routes()method. (#100) - Task history queries support filtering by run params via a new
paramsfield (renamed fromHistoryQuerytoTaskHistoryQuery). (#99) - Database migration required: the
paramscolumn is nowJSONBwith a GIN index. See the example migration for the schema changes. - Removed
get_loggerfromfluid.utils.log. Task loggers are now obtained directly vialogging.getLogger(module).
v2.3.1¶
v2.3.0 is broken — do not use it.
Fixes a regression in v2.3.0 where the httpx2 dependency was pinned to
>=2.2.0, which fails on Python 3.14 builds missing the _zstd C extension.
Pins httpx2 to >=2.0.0, <2.1.0 and switches all httpx imports to
httpx2 for correct namespace resolution.
httpx2is now pinned to>=2.0.0, <2.1.0— versions 2.1.0+ require thecompression.zstdstdlib module which is not available in all Python 3.14 builds. (#98)- All
import httpxstatements replaced withimport httpx2 as httpx(orfrom httpx2 import ...) to ensure correct namespace resolution regardless ofhttpx2version. - Added test coverage for HttpxClient and HttpxResponse.
v2.3.0¶
Moves development and documentation dependencies from optional-dependencies to
dependency groups, switches to
httpx2 for HTTP client support, and removes
the inflection dependency.
devanddocsdependencies are now declared under[dependency-groups]instead of[project.optional-dependencies]. Installed viauv sync --all-groups.- The
httpextra now useshttpx2instead ofhttpx.httpx2provides the samehttpxmodule so no code changes are required. (#97) - The
inflectiondependency has been removed. (#96)
v2.2.6¶
Adds tag filtering for task listings and fixes a race in the task database plugin.
- Task listings can be filtered by tag: the
GET /tasksendpoint and thelscommand of the task CLI accept a repeatabletagsoption that returns only tasks carrying at least one of the given tags, andTaskInfonow reports each task's tags. (#94) - The task database plugin
now serialises its per-run lifecycle writes with a dedicated task-run lock.
CrudDB.db_upsertis not atomic — it issues anUPDATEand onlyINSERTs when nothing matched — so when the scheduler wrote thequeuedrow and a consumer wrote therunningrow a few milliseconds later, the consumer'sUPDATEcould miss the not-yet-committedINSERT, fall through to its ownINSERTand violate the task-runs primary key. Holding the lock around the upsert removes the race. (#95) - TaskRun.lock
accepts an optional
nameto acquire a named sub-lock for the task run, andtimeoutnow defaults toNone. (#95)
v2.2.5¶
- The task decorator
accepts an
envmapping of extra environment variables, injected into the subprocess for CPU-bound tasks and forwarded to the container for tasks dispatched as Kubernetes Jobs. (#90)
v2.2.4¶
Bug-fix release for the task scheduler.