* fix: wait for in-flight tasks to complete before running lifespan shutdown
* feat: add test
* chore: version
* fix: add wait for tasks in deprecated / legacy mode too
* fix: wrong spot
* feat(python-sdk): add opt-in retries for REST transport errors (GET/DELETE)
* feat(python-sdk): make REST transport retries configurable via TenacityConfig
* docs(python-sdk): clarify transport retry methods exclude mutating verbs by default
* refactor(sdk): avoid parsing HTTP method from REST transport error message
- add http_method field to RestTransportError
- populate http_method when translating urllib3 transport exceptions
- use http_method for transport retry gating in tenacity utils
- update unit tests to cover the new structured method propagation
* fix(sdk): move REST transport http_method changes into apply_patches
* chore(python-sdk): bump version to 1.26.2 and update changelog
* refactor(python-sdk): type retry_transport_methods as HTTPMethod enum
* refactor(python-sdk): type retry_transport_methods as HTTPMethod enum
* fix(sdk): type rest transport http_method as HTTPMethod
- Update apply_patches to emit HTTPMethod typed http_method in generated REST transport exceptions
- Normalize method values via method.upper() when constructing HTTPMethod
- Simplify tenacity transport retry check to compare enums directly
- Update transport retry tests to use HTTPMethod enums
* feat(python-sdk): add opt-in retry for HTTP 429 responses
- Introduce TooManyRequestsException and map HTTP 429 in ApiException.from_response()
- Add retry_429 flag to TenacityConfig (default: false)
- Update tenacity retry predicate to accept config and retry 429 only when enabled
- Add unit tests covering 429 mapping + retry behavior and keep existing retry semantics intact
Refs: #2872
* feat(python-sdk): add opt-in retry support for REST 429 responses
Adds TooManyRequestsException (HTTP 429) mapping for the REST client and
enables 429 to be retried when configured via TenacityConfig.
This aligns REST retry semantics more closely with gRPC, where
RESOURCE_EXHAUSTED is retried.
Refs discussion in #2872.
* feat(sdk): add opt-in retry for REST HTTP 429
* chore(sdk): patch bump to 1.26.1 and update changelog entry
* fix: work with type syntax
* fix: one more instance of asyncio.iscoroutinefunction
* test: add tests for type alias with type syntax
* chore: remove type ignores
* chore: changelog + bump
* test(sdk): cover python REST and gRPC retry predicate behavior
* chore(release): bump hatchet python sdk to 1.23.3
Add changelog entry for 1.23.3.
* test(python-sdk): unwrap tenacity retry predicate tests from classes
* chore(python-sdk): bundle test only changes into 1.23.3 release per maintainer guidance
Move retry predicate test entry from 1.23.4 into 1.23.3 to avoid
triggering a patch release for test-only changes.
* test(rest): add typed REST transport exceptions + diagnostics tests
Adds typed REST transport exceptions for urllib3/network failures and unit tests
verifying translation, diagnostics, and backward compatibility. Updates
apply_patches.py to patch generated REST client code and exceptions.
Refs: #2443
* chore(tests): remove redundant docstrings and comments
* test(rest): convert transport exception tests to module-level functions
* chore(python-sdk): bump version to 1.23.2 and update changelog
* fix: add type override in sqlc.yaml
* chore: gen sqlc
* chore: big find and replace
* chore: more
* fix: clean up bunch of outdated `.Valid` refs
* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`
* refactor: remove uuidToStr
* fix: lint
* fix: use pointers for null uuids
* chore: clean up more null pointers
* chore: clean up a bunch more
* fix: couple more
* fix: some types on the api
* fix: incorrectly non-null param
* fix: more nullable params
* fix: more refs
* refactor: start replacing tenant id strings with uuids
* refactor: more tenant id uuid casting
* refactor: fix a bunch more
* refactor: more
* refactor: more
* refactor: is that all of them?!
* fix: panic
* fix: rm scans
* fix: unwind some broken things
* chore: tests
* fix: rebase issues
* fix: more tests
* fix: nil checks
* Refactor: Make all UUIDs into `uuid.UUID` (#2897)
* refactor: remove a bunch more string uuids
* refactor: pointers and lists
* refactor: fix all the refs
* refactor: fix a few more
* fix: config loader
* fix: revert some changes
* fix: tests
* fix: test
* chore: proto
* fix: durable listener
* fix: some more string types
* fix: python health worker sleep
* fix: remove a bunch of `MustParse`s from the various gRPC servers
* fix: rm more uuid.MustParse calls
* fix: rm mustparse from api
* fix: test
* fix: merge issues
* fix: handle a bunch more uses of `MustParse` everywhere
* fix: nil id for worker label
* fix: more casting in the oss
* fix: more id parsing
* fix: stringify jwt opt
* fix: couple more bugs in untyped calls
* fix: more types
* fix: broken test
* refactor: implement `GetKeyUuid`
* cleanup
* gen
* missed name
* slot naming consistency
* snake_case
* lint
* regenerate python
* typescript sdk
* deprecated getters
* lint
* fix tests
* version bumps
* chore: regen sqlc
* chore: replace pgtype.UUID again
* fix: bunch more type errors
* no compat
* fix: remove isort
* note
* Update sdks/python/CHANGELOG.md
Co-authored-by: matt <mrkaye97@gmail.com>
* feedback
* fix: no isort in ci
* tui
* ts lint
* lint
* weird undefined
* fix test
* last changes
* lint
* fix: ts child spawning
* consistent naming
* map fields
---------
Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
* feat(sdk): improve python REST client transport error diagnostics (#2942)
* feat(sdk): improve python REST client transport error diagnostics
Refs #2872
* chore(sdk/python): bump version to 1.22.16
* fix: change from `asyncio` to `inspect` for `.iscoroutinefunction` (#2933)
* fix: change from asyncio.iscoroutinefunction to inspect.iscoroutinefunction
* chore: bump
---------
Co-authored-by: matt <mrkaye97@gmail.com>
---------
Co-authored-by: Trevor Wilson <trevor.wilson@bloggerbust.ca>
Co-authored-by: Stefan <28559054+StefanBRas@users.noreply.github.com>
* add: scope_expression and payload columns for v1_webhook
* refactor: insert or update sql cmds for v1_webhook
* feat: update api clients, openapi schema for new webhook body
* refactor: receiver and transformer for v1 webhook
* add: python sdk changes
* feat: ts sdk changes
* feat: add FE for webhook new params
* fix: scope expression empty payload
* add: support for scope and payload for go client
* fix: lint
* fix: error message UI on webhook
* fix: lint
* fix: migraiton conflict, build failure
* fix: error handling
* update docs, add tests
* fix: lint, test file name
* fix: allow contextvars to be used in lifespans and improve cleanup of queues
* chore: version
* fix: forceful shutdown
* fix: don't handle queue cleanup in action listener proc
* feat: expose task and workflow names on the context
* chore: changelog
* fix: add type override in sqlc.yaml
* chore: gen sqlc
* chore: big find and replace
* chore: more
* fix: clean up bunch of outdated `.Valid` refs
* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`
* refactor: remove uuidToStr
* fix: lint
* fix: use pointers for null uuids
* chore: clean up more null pointers
* chore: clean up a bunch more
* fix: couple more
* fix: some types on the api
* fix: incorrectly non-null param
* fix: more nullable params
* fix: more refs
* refactor: start replacing tenant id strings with uuids
* refactor: more tenant id uuid casting
* refactor: fix a bunch more
* refactor: more
* refactor: more
* refactor: is that all of them?!
* fix: panic
* fix: rm scans
* fix: unwind some broken things
* chore: tests
* fix: rebase issues
* fix: more tests
* fix: nil checks
* Refactor: Make all UUIDs into `uuid.UUID` (#2897)
* refactor: remove a bunch more string uuids
* refactor: pointers and lists
* refactor: fix all the refs
* refactor: fix a few more
* fix: config loader
* fix: revert some changes
* fix: tests
* fix: test
* chore: proto
* fix: durable listener
* fix: some more string types
* fix: python health worker sleep
* fix: remove a bunch of `MustParse`s from the various gRPC servers
* fix: rm more uuid.MustParse calls
* fix: rm mustparse from api
* fix: test
* fix: merge issues
* fix: handle a bunch more uses of `MustParse` everywhere
* fix: nil id for worker label
* fix: more casting in the oss
* fix: more id parsing
* fix: stringify jwt opt
* fix: couple more bugs in untyped calls
* fix: more types
* fix: broken test
* refactor: implement `GetKeyUuid`
* chore: regen sqlc
* chore: replace pgtype.UUID again
* fix: bunch more type errors
* fix: panic
* fix: don't toggle selection if a user is dragging
* fix: command selection state
* fix: close search bar on enter
* fix: improve search bar styling a bit, make it more consistent with designs
* chore: tsc
* Feat: Logs Frontend, Part III (#2888)
* fix: propagate retry count through properly
* feat: attempt switcher
* fix: attempt numbers
* feat: add attempt param to log query
* feat: wiring
* feat: attempt filter
* chore: changelog
* fix: use the button component
* fix: only close on enter when in FTS mode
* fix: pass retry count and log level in Go
* fix: feedback
* chore: lint
* fix: rm cruft comment