mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2026-01-28 03:38:52 -06:00
* feat: olap payloads table * feat: olap queue messages for payload puts * feat: wire up writes on task write * driveby: add + ignore psql-connect * fix: down migration * fix: use external id for pk * fix: insert query * fix: more external ids * fix: bit more cleanup * feat: dags * fix: the rest of the refs * fix: placeholder uuid * fix: write external ids * feat: wire up messages over the queue * fix: panic * Revert "fix: panic" This reverts commitc0adccf2ea. * Revert "feat: wire up messages over the queue" This reverts commit36f425f3c1. * fix: rm unused method * fix: rm more * fix: rm cruft * feat: wire up failures * feat: start wiring up completed events * fix: more wiring * fix: finish wiring up completed event payloads * fix: lint * feat: start wiring up external ids in the core * feat: olap pub * fix: add returning * fix: wiring * debug: log lines for pubs * fix: external id writes * Revert "debug: log lines for pubs" This reverts commitfe430840bd. * fix: rm sample * debug: rm pub buffer param * Revert "debug: rm pub buffer param" This reverts commitb42a5cacbb. * debug: stuck queries * debug: more logs * debug: yet more logs * fix: rename BulkRetrieve -> Retrieve * chore: lint * fix: naming * fix: conn leak in putpayloads * fix: revert debug * Revert "debug: more logs" This reverts commit95da7de64f. * Revert "debug: stuck queries" This reverts commit8fda64adc4. * feat: improve getters, olap getter * fix: key type * feat: first pass at pulling olap payloads from the payload store * fix: start fixing bugs * fix: start reworking `includePayloads` param * fix: include payloads wiring * feat: analyze for payloads * fix: simplify writes more + write event payloads * feat: read out event payloads * feat: env vars for dual writes * refactor: clean up task prop drilling a bit * feat: add include payloads params to python for tests * fix: tx commit * fix: dual writes * fix: not null constraint * fix: one more * debug: logging * fix: more debugging, tweak function sig * fix: function sig * fix: refs * debug: more logging * debug: more logging * debug: fix condition * debug: overwrite properly * fix: revert debug * fix: rm more drilling * fix: comments * fix: partitioning jobs * chore: ver * fix: bug, docs * hack: dummy id and inserted at for payload offloads * fix: bug * fix: no need to handle offloads for task event data * hack: jitter + current ts * fix: short circuit * fix: offload payloads in a tx * fix: uncomment sampling * fix: don't offload if external store is disabled * chore: gen sqlc * fix: migration * fix: start reworking types * fix: couple more * fix: rm unused code * fix: drill includePayloads down again * fix: silence annoying error in some cases * fix: always store payloads * debug: use workflow run id for input * fix: improve logging * debug: logging on retrieve * debug: task input * fix: use correct field * debug: write even null payloads to limit errors * debug: hide error lines * fix: quieting more errors * fix: duplicate example names, remove print lines * debug: add logging for olap event writes * hack: immediate event offloads and cutovers * fix: rm log line * fix: import * fix: short circuit events * fix: duped names
11 KiB
11 KiB
Changelog
All notable changes to Hatchet's Python SDK will be documented in this changelog.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.20.2] - 2025-10-15
Added
- Adds a
include_payloadsparameter to thelistmethods on the runs client (defaults to true, so no change in behavior).
[1.20.1] - 2025-10-14
Added
- Adds wrapper methods for bulk cancelling / replaying large numbers of runs with pagination.
[1.20.0] - 2025-10-3
Removed
- Removes all references to
get_group_key_*which is no longer available in V1 - Removes all checks + references to V0
[1.19.0] - 2025-09-24
Removed
- Removed the deprecated
v0client and all related code. - Removed unused dependencies.
[1.18.1] - 2025-08-26
Changed
- Fixes an install issue caused by a misnamed optional dependency.
[1.18.0] - 2025-08-26
Added
- Adds a
stubsclient on the mainHatchetclient, which allows for creating typed stub tasks and workflows. These are intended to be used for triggering workflows that are registered on other workers in either other services or other languages. - Adds a config option
force_shutdown_on_shutdown_signalwhich allows users to forcefully terminate all processes when a shutdown signal is received instead of waiting for them to exit gracefully.
[1.17.2] - 2025-08-20
Added
- Adds back an optional
cel-pythondependency for v0 compatibility, allowing users to use the v0 client with the v0-compatible features in the SDK. - Adds
dependenciesto themock_runmethods on theStandalone. - Removes
aiostreamdependency that was unused. - Removes
aiohttp-retrydependency that was unused.
[1.17.1] - 2025-08-18
Added
- Adds a
HATCHET_CLIENT_LOG_QUEUE_SIZEenvironment variable to configure the size of the log queue used for capturing logs and forwarding them to Hatchet
[1.17.0] - 2025-08-12
Added
- Adds support for dependency injection in tasks via the
Dependsclass. - Deprecated
fetch_task_run_errorin favor ofget_task_run_error, which returns aTaskRunErrorobject instead of a string. This allows for better error handling and debugging.
Changed
- Uses
logger.exceptionin place oflogger.errorin the action runner to improve (e.g.) Sentry error reporting - Extends the
TaskRunErrorto include thetask_run_external_id, which is useful for debugging and tracing errors in task runs. - Fixes an issue with logging which allows log levels to be respected over the API.
Removed
- Removes the
cel-pythondependency
[1.16.5] - 2025-08-07
Changed
- Relaxes constraint on Prometheus dependency
[1.16.4] - 2025-07-28
Added
- Adds a new config option
grpc_enable_fork_supportto allow users to enable or disable gRPC fork support. This is useful for environments where gRPC fork support is not needed or causes issues. Previously was set toFalseby default, which would cause issues with e.g. Gunicorn setups. Can also be set with theHATCHET_CLIENT_GRPC_ENABLE_FORK_SUPPORTenvironment variable.
Changed
- Changes
ValidTaskReturnTypeto allowMapping[str, Any]instead ofdict[str, Any]to allow for more flexible return types in tasks, including usingTypedDict.
[1.16.3] - 2025-07-23
Added
- Adds support for filters and formatters in the logger that's passed to the Hatchet client.
- Adds a flag to disable log capture.
Changed
- Fixes a bug in
aio_sleep_forand theSleepConditionthat did not allow duplicate sleeps to be awaited correctly. - Stops retrying gRPC requests on 4XX failures, since retrying won't help
[1.16.2] - 2025-07-22
Added
- Adds an
input_validatorproperty toBaseWorkflowwhich returns a typechecker-aware version of the validator class.
[1.16.1] - 2025-07-18
Added
- Adds a
CELfeature client for debugging CEL expressions
[1.16.0] - 2025-07-17
Added
- Adds new methods for unit testing tasks and standalones, called
mock_runandaio_mock_run, which allow you to run tasks and standalones in a mocked environment without needing to start a worker or connect to the engine. - Improves exception logs throughout the SDK to provide more context for what went wrong when an exception is thrown.
- Adds
create_run_ref,get_result, andaio_get_resultmethods to theStandaloneclass, to allow for getting typed results of a run more easily. - Adds
return_exceptionsoption to therun_manyandaio_run_manymethods to be more similar to e.g.asyncio.gather. IfTrue, exceptions will be returned as part of the results instead of raising them.
Changed
- Correctly propagates additional metadata through the various
runmethods to spawned children.
[1.15.3] - 2025-07-14
Changed
remove_null_unicode_characternow accepts any type of data, not just strings, dictionaries, lists, and tuples. If the data is not one of these types, it's returned as-is.
[1.15.2] - 2025-07-12
Changed
- Fixes an issue in
capture_logswhere thelogcall was blocking the event loop.
[1.15.1] - 2025-07-11
Added
- Correctly sends SDK info to the engine when a worker is created
[1.15.0] - 2025-07-10
Added
- The
Metricsclient now includes a method to scrape Prometheus metrics from the tenant.
Changed
- The
Metricsclient'sget_task_metricsandget_queue_metricsnow return better-shaped, correctly-fetched data from the API.
[1.14.4] - 2025-07-09
Added
- Adds
deleteandaio_deletemethods to the workflows feature client and the correspondingWorkflowandStandaloneclasses, allowing for deleting workflows and standalone tasks.
[1.14.3] - 2025-07-07
Added
- Adds
remove_null_unicode_characterutility function to remove null unicode characters from data structures.
Changed
- Task outputs that contain a null unicode character (\u0000) will now throw an exception instead of being serialized.
- OpenTelemetry instrumentor now correctly reports exceptions raised in tasks to the OTel collector.
[1.14.2] - 2025-07-03
Added
- The
Runsclient now haslist_with_paginationandaio_list_with_paginationmethods that allow for listing workflow runs with internal pagination. The wrappers on theStandaloneandWorkflowclasses have been updated to use these methods. - Added retries with backoff to all of the REST API wrapper methods on the feature clients.
[1.14.1] - 2025-07-03
Changed
DurableContext.aio_wait_forcan now accept an or group, in addition to sleep and event conditions.
[1.14.0] - 2025-06-25
Added
- Adds an
IllegalTaskOutputErrorthat handles cases where tasks return invalid outputs. - Logs
NonRetryableExceptionas an info-level log so it doesn't get picked up by Sentry and similar tools.
Changed
- Exports
NonRetryableExceptionat the top level - Fixes an issue with the
statusfield throwing a Pydantic error when callingworker.get - Fixes an issue with duplicate protobufs if you try to import both the v1 and v0 clients.
[1.13.0] - 2025-06-25
Added
- Documentation for the
Contextclasses - Allows for a worker to be terminated after a certain number of tasks by providing the
terminate_worker_after_num_tasksconfig option
Changed
- Adds a number of helpful Ruff linting rules
DedupeViolationErris nowDedupeViolationError- Fixed events documentation to correctly have a skipped run example.
- Changed default arguments to many methods from mutable defaults like
[]to None - Changes
JSONSerializableMappingfromMappingtodict - Handles some potential bugs related to
asynciotasks being garbage collected. - Improves exception printing with an
ExceptionGroupimplementation - Fixes a bug with namespacing of user event conditions where the namespace was not respected so the task waiting for it would hang
- Fixes a memory leak in streaming and logging, and fixes some issues with log capture.
[1.12.3] - 2025-06-25
Changed
- Fixes a namespacing-related but in the
workflow.idproperty that incorrectly (and inconsistently) returned incorrect IDs for namespaced workflows.
[1.12.2] - 2025-06-17
Changed
- Fixes a security vulnerability by bumping the
protobuflibrary
[1.12.1] - 2025-06-13
Added
- Adds corresponding SDK changes from API changes to events (additional parameters to filter events by, additional data returned)
[1.12.0] - 2025-06-06
Added
- Adds a warning on client init if the SDK version is not compatible with the tenant (engine) version.
- Adds a
default_filtersparameter to theHatchet.workflowandHatchet.taskmethods to allow you to declaratively provide a list of filters that will be applied to the workflow by default when events are pushed. - Adds
get_statusandaio_get_statusmethods to theRunsfeature client, which return a workflow run's status by its ID. - Adds a
updatemethods to theFiltersfeature client.
Changed
- Allows the
concurrencyparameter to tasks to be alist. - Fixes an internal bug with duplicate concurrency expressions being set when using
Hatchet.task. - Modifies existing
datetimehandling to use UTC timestamps everywhere.
[1.11.1] - 2025-06-05
Changed
- Fixes a couple of blocking calls buried in the admin client causing loop blockages on child spawning
[1.11.0] - 2025-05-29
Changed
- Significant improvements to the OpenTelemetry instrumentor, including:
- Traceparents are automatically propagated through the metadata now so the client does not need to provide them manually.
- Added a handful of attributes to the
run_workflow,push_event, etc. spans, such as the workflow being run / event being pushed, the metadata, and so on. Ignoring - Added tracing for workflow scheduling
[1.10.2] - 2025-05-19
Changed
- Fixing an issue with the spawn index being set at the
workflow_run_idlevel and not the(workflow_run_id, retry_count)level, causing children to be spawned multiple times on retry.
[1.10.1] - 2025-05-16
Added
- Adds an
otelitem to theClientConfigand aexcluded_attributes: list[OTelAttribute]there to allow users to exclude certain attributes from being sent to the OpenTelemetry collector.
[1.10.0] - 2025-05-16
Added
- The main
Hatchetclient now has afiltersattribute (aFiltersclient) which wraps basic CRUD operations for managing filters. - Events can now be pushed with a
priorityattribute, which sets the priority of the runs triggered by the event. - There are new
listandaio_listmethods for theEventsclient, which allow listing events. - Workflow runs can now be filtered by
triggering_event_external_id, to allow for seeing runs triggered by a specific event. - There is now an
idproperty on allWorkflowobjects (Workflowcreated byhatchet.workflowandStandalonecreated byhatchet.task) that returns the ID (UUID) of the workflow. - Events can now be pushed with a
scopeparameter, which is required for using filters to narrow down the filters to consider applying when triggering workflows from the event.
Changed
- The
nameparameter tohatchet.taskandhatchet.durable_taskis now optional. If not provided, the task name will be the same as the function name.