prefect-client 3.8.8.dev2__tar.gz → 3.8.8.dev4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/PKG-INFO +1 -1
  2. prefect_client-3.8.8.dev4/src/prefect/_build_info.py +5 -0
  3. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/services.py +33 -12
  4. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/notifications.py +1 -0
  5. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/cache_policies.py +3 -3
  6. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/base.py +35 -4
  7. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/runner.py +8 -1
  8. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_engine.py +22 -10
  9. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/tasks.py +3 -0
  10. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/validation.py +5 -2
  11. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/templating/__init__.py +9 -2
  12. prefect_client-3.8.8.dev2/src/prefect/_build_info.py +0 -5
  13. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/.gitignore +0 -0
  14. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/LICENSE +0 -0
  15. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/README.md +0 -0
  16. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/hatch_build.py +0 -0
  17. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/pyproject.toml +0 -0
  18. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/.prefectignore +0 -0
  19. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/AGENTS.md +0 -0
  20. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/__init__.py +0 -0
  21. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/__main__.py +0 -0
  22. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/__init__.py +0 -0
  23. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/_launchers.py +0 -0
  24. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
  25. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
  26. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/__init__.py +0 -0
  27. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/apply.py +0 -0
  28. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  29. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/manager.py +0 -0
  30. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/spec.py +0 -0
  31. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
  32. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/client.py +0 -0
  33. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
  34. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_flow_run_suspension.py +0 -0
  35. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/__init__.py +0 -0
  36. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/_logging.py +0 -0
  37. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/__init__.py +0 -0
  38. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  39. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/client.py +0 -0
  40. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/device_id.py +0 -0
  41. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/emit.py +0 -0
  42. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/enabled.py +0 -0
  43. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/events.py +0 -0
  44. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/milestones.py +0 -0
  45. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/notice.py +0 -0
  46. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/service.py +0 -0
  47. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/ast_utils.py +0 -0
  48. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/attempt_control.py +0 -0
  49. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/buildx.py +0 -0
  50. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
  51. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  52. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/backports.py +0 -0
  53. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
  54. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  55. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  56. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
  57. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/starlette.py +0 -0
  58. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
  59. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
  60. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
  61. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  62. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  63. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
  64. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
  65. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
  66. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
  67. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/control_listener.py +0 -0
  68. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/deprecated.py +0 -0
  69. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/engine.py +0 -0
  70. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/git.py +0 -0
  71. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  72. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/installation.py +0 -0
  73. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/integrations.py +0 -0
  74. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/launchers.py +0 -0
  75. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/lazy.py +0 -0
  76. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/metrics.py +0 -0
  77. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/observability.py +0 -0
  78. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/observers.py +0 -0
  79. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/__init__.py +0 -0
  80. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/apply.py +0 -0
  81. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/collections.py +0 -0
  82. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  83. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/manager.py +0 -0
  84. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/spec.py +0 -0
  85. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/startup.py +0 -0
  86. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
  87. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
  88. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  89. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  90. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  91. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pytz.py +0 -0
  92. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/result_records.py +0 -0
  93. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/retries.py +0 -0
  94. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schema.py +0 -0
  95. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
  96. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/_registry.py +0 -0
  97. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
  98. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
  99. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
  100. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/validators.py +0 -0
  101. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  102. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/states.py +0 -0
  103. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/testing.py +0 -0
  104. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/urls.py +0 -0
  105. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/uuid7.py +0 -0
  106. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/version_checking.py +0 -0
  107. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/versioning.py +0 -0
  108. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/waiters.py +0 -0
  109. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/websockets.py +0 -0
  110. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/__init__.py +0 -0
  111. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/fetcher.py +0 -0
  112. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/generator.py +0 -0
  113. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/models.py +0 -0
  114. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/naming.py +0 -0
  115. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/renderer.py +0 -0
  116. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/schema_converter.py +0 -0
  117. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/templates/__init__.py +0 -0
  118. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  119. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/types.py +0 -0
  120. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/unions.py +0 -0
  121. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
  122. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
  123. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/agent.py +0 -0
  124. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/analytics/__init__.py +0 -0
  125. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/artifacts.py +0 -0
  126. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/assets/__init__.py +0 -0
  127. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/assets/core.py +0 -0
  128. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/assets/materialize.py +0 -0
  129. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/automations.py +0 -0
  130. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/AGENTS.md +0 -0
  131. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/__init__.py +0 -0
  132. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/abstract.py +0 -0
  133. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/core.py +0 -0
  134. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/fields.py +0 -0
  135. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/redis.py +0 -0
  136. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/system.py +0 -0
  137. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/webhook.py +0 -0
  138. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/__init__.py +0 -0
  139. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_file_collector.py +0 -0
  140. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_ignore_filter.py +0 -0
  141. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_path_resolver.py +0 -0
  142. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_zip_builder.py +0 -0
  143. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_zip_extractor.py +0 -0
  144. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/execute.py +0 -0
  145. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/AGENTS.md +0 -0
  146. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/__init__.py +0 -0
  147. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/attribution.py +0 -0
  148. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/cloud.py +0 -0
  149. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/collections.py +0 -0
  150. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/constants.py +0 -0
  151. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
  152. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  153. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  154. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  155. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
  156. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  157. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  158. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  159. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  160. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  161. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  162. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  163. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  164. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  165. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  166. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  167. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_events/client.py +0 -0
  168. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  169. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  170. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  171. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
  172. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  173. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
  174. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  175. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
  176. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  177. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  178. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/base.py +0 -0
  179. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/routes.py +0 -0
  180. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/__init__.py +0 -0
  181. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/actions.py +0 -0
  182. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/events.py +0 -0
  183. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/filters.py +0 -0
  184. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/objects.py +0 -0
  185. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/responses.py +0 -0
  186. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/schedules.py +0 -0
  187. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/sorting.py +0 -0
  188. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/worker_channel.py +0 -0
  189. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/subscriptions.py +0 -0
  190. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/types/__init__.py +0 -0
  191. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  192. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/utilities.py +0 -0
  193. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/AGENTS.md +0 -0
  194. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/__init__.py +0 -0
  195. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
  196. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_events.py +0 -0
  197. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_leases.py +0 -0
  198. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_sync.py +0 -0
  199. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/asyncio.py +0 -0
  200. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/context.py +0 -0
  201. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/services.py +0 -0
  202. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/sync.py +0 -0
  203. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
  204. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  205. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
  206. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
  207. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/context.py +0 -0
  208. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/services.py +0 -0
  209. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
  210. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/context.py +0 -0
  211. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/AGENTS.md +0 -0
  212. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/__init__.py +0 -0
  213. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/base.py +0 -0
  214. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/deployments.py +0 -0
  215. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/flow_runs.py +0 -0
  216. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/runner.py +0 -0
  217. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/schedules.py +0 -0
  218. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
  219. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/core.py +0 -0
  220. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/pull.py +0 -0
  221. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/utility.py +0 -0
  222. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/docker/__init__.py +0 -0
  223. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/docker/_buildx.py +0 -0
  224. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/docker/docker_image.py +0 -0
  225. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/engine.py +0 -0
  226. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/AGENTS.md +0 -0
  227. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/__init__.py +0 -0
  228. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/actions.py +0 -0
  229. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/clients.py +0 -0
  230. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/filters.py +0 -0
  231. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/related.py +0 -0
  232. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/__init__.py +0 -0
  233. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/automations.py +0 -0
  234. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  235. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/events.py +0 -0
  236. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/labelling.py +0 -0
  237. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/subscribers.py +0 -0
  238. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/utilities.py +0 -0
  239. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/worker.py +0 -0
  240. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/exceptions.py +0 -0
  241. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/filesystems.py +0 -0
  242. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/flow_engine.py +0 -0
  243. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/flow_runs.py +0 -0
  244. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/flows.py +0 -0
  245. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/futures.py +0 -0
  246. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/__init__.py +0 -0
  247. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/base.py +0 -0
  248. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  249. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  250. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  251. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  252. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  253. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  254. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/input/__init__.py +0 -0
  255. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/input/actions.py +0 -0
  256. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/input/run_input.py +0 -0
  257. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/__init__.py +0 -0
  258. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/_filelock.py +0 -0
  259. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/filesystem.py +0 -0
  260. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/memory.py +0 -0
  261. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/protocol.py +0 -0
  262. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/AGENTS.md +0 -0
  263. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/__init__.py +0 -0
  264. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/clients.py +0 -0
  265. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/configuration.py +0 -0
  266. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/filters.py +0 -0
  267. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/formatters.py +0 -0
  268. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/handlers.py +0 -0
  269. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/highlighters.py +0 -0
  270. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/loggers.py +0 -0
  271. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/logging.yml +0 -0
  272. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/main.py +0 -0
  273. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/plugins.py +0 -0
  274. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/py.typed +0 -0
  275. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/results.py +0 -0
  276. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/AGENTS.md +0 -0
  277. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/__init__.py +0 -0
  278. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_cancel_finalizer.py +0 -0
  279. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_cancellation_manager.py +0 -0
  280. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_control_channel.py +0 -0
  281. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_deployment_registry.py +0 -0
  282. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_event_emitter.py +0 -0
  283. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_flow_resolver.py +0 -0
  284. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_flow_run_executor.py +0 -0
  285. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_hook_runner.py +0 -0
  286. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_limit_manager.py +0 -0
  287. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_process_manager.py +0 -0
  288. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_scheduled_run_poller.py +0 -0
  289. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_starter_bundle.py +0 -0
  290. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_starter_direct.py +0 -0
  291. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_starter_engine.py +0 -0
  292. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_state_proposer.py +0 -0
  293. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_uv_command.py +0 -0
  294. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_hook_runner.py +0 -0
  295. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_resolver.py +0 -0
  296. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_runtime.py +0 -0
  297. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
  298. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_starter.py +0 -0
  299. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_supervisor.py +0 -0
  300. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/server.py +0 -0
  301. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/storage.py +0 -0
  302. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/__init__.py +0 -0
  303. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/deployment.py +0 -0
  304. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/flow_run.py +0 -0
  305. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/task_run.py +0 -0
  306. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/schedules.py +0 -0
  307. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/serializers.py +0 -0
  308. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/__init__.py +0 -0
  309. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/_ui_static.py +0 -0
  310. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/admin.py +0 -0
  311. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/artifacts.py +0 -0
  312. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/automations.py +0 -0
  313. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/background_workers.py +0 -0
  314. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
  315. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_documents.py +0 -0
  316. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_schemas.py +0 -0
  317. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_types.py +0 -0
  318. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/clients.py +0 -0
  319. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/collections.py +0 -0
  320. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  321. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
  322. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  323. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/csrf_token.py +0 -0
  324. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/dependencies.py +0 -0
  325. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/deployments.py +0 -0
  326. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/events.py +0 -0
  327. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
  328. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/flow_runs.py +0 -0
  329. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/flows.py +0 -0
  330. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/logs.py +0 -0
  331. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/middleware.py +0 -0
  332. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/root.py +0 -0
  333. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/run_history.py +0 -0
  334. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/saved_searches.py +0 -0
  335. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/server.py +0 -0
  336. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  337. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/task_run_states.py +0 -0
  338. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/task_runs.py +0 -0
  339. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/task_workers.py +0 -0
  340. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/templates.py +0 -0
  341. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
  342. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
  343. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/flows.py +0 -0
  344. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/schemas.py +0 -0
  345. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
  346. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/validation.py +0 -0
  347. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/variables.py +0 -0
  348. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/work_queues.py +0 -0
  349. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/workers.py +0 -0
  350. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/AGENTS.md +0 -0
  351. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/__init__.py +0 -0
  352. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/_types.py +0 -0
  353. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/base.py +0 -0
  354. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/constants.py +0 -0
  355. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/context.py +0 -0
  356. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/legacy.py +0 -0
  357. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/__init__.py +0 -0
  358. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/_defaults.py +0 -0
  359. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/api.py +0 -0
  360. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/cli.py +0 -0
  361. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/client.py +0 -0
  362. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/cloud.py +0 -0
  363. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/deployments.py +0 -0
  364. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/events.py +0 -0
  365. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/experiments.py +0 -0
  366. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/flows.py +0 -0
  367. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/internal.py +0 -0
  368. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/logging.py +0 -0
  369. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/plugins.py +0 -0
  370. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/results.py +0 -0
  371. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/root.py +0 -0
  372. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/runner.py +0 -0
  373. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
  374. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/api.py +0 -0
  375. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/concurrency.py +0 -0
  376. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/database.py +0 -0
  377. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
  378. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/docket.py +0 -0
  379. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
  380. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/events.py +0 -0
  381. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  382. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/logs.py +0 -0
  383. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/root.py +0 -0
  384. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/services.py +0 -0
  385. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
  386. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/ui.py +0 -0
  387. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/worker_channel.py +0 -0
  388. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/tasks.py +0 -0
  389. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/telemetry.py +0 -0
  390. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/testing.py +0 -0
  391. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/worker.py +0 -0
  392. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/profiles.py +0 -0
  393. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/profiles.toml +0 -0
  394. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/sources.py +0 -0
  395. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/states.py +0 -0
  396. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_runners.py +0 -0
  397. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_runs.py +0 -0
  398. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_worker.py +0 -0
  399. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/telemetry/__init__.py +0 -0
  400. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
  401. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/transactions.py +0 -0
  402. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/__init__.py +0 -0
  403. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/_concurrency.py +0 -0
  404. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/_datetime.py +0 -0
  405. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/entrypoint.py +0 -0
  406. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/names.py +0 -0
  407. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/AGENTS.md +0 -0
  408. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/__init__.py +0 -0
  409. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/annotations.py +0 -0
  410. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  411. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  412. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/callables/AGENTS.md +0 -0
  413. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/callables/__init__.py +0 -0
  414. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/collections.py +0 -0
  415. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/compat.py +0 -0
  416. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/context.py +0 -0
  417. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/dispatch.py +0 -0
  418. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/dockerutils.py +0 -0
  419. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/engine/AGENTS.md +0 -0
  420. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/engine/__init__.py +0 -0
  421. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  422. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/filesystem/__init__.py +0 -0
  423. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/generics.py +0 -0
  424. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/hashing.py +0 -0
  425. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/importtools.py +0 -0
  426. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/math.py +0 -0
  427. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/names.py +0 -0
  428. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  429. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/processutils/__init__.py +0 -0
  430. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/pydantic.py +0 -0
  431. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/render_swagger.py +0 -0
  432. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  433. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  434. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  435. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/services.py +0 -0
  436. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/slugify.py +0 -0
  437. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/templating/AGENTS.md +0 -0
  438. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/text.py +0 -0
  439. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/timeout.py +0 -0
  440. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/urls.py +0 -0
  441. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/visualization.py +0 -0
  442. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/variables.py +0 -0
  443. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/AGENTS.md +0 -0
  444. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/__init__.py +0 -0
  445. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_cleanup.py +0 -0
  446. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_cleanup_handlers.py +0 -0
  447. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  448. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
  449. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_state.py +0 -0
  450. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_sync.py +0 -0
  451. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  452. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/base.py +0 -0
  453. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/block.py +0 -0
  454. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/cloud.py +0 -0
  455. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/process.py +0 -0
  456. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/server.py +0 -0
  457. {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: prefect-client
3
- Version: 3.8.8.dev2
3
+ Version: 3.8.8.dev4
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.8.8.dev4"
3
+ __build_date__ = "2026-10-06 08:20:50.566787+00:00"
4
+ __git_commit__ = "69b2c7f719ab9aca457ea7059fd159dca7aa1f74"
5
+ __dirty__ = False
@@ -57,6 +57,9 @@ if hasattr(os, "register_at_fork"):
57
57
  class _QueueServiceBase(abc.ABC, Generic[T]):
58
58
  _instances: dict[int, Self] = {}
59
59
  _instance_lock = threading.Lock()
60
+ # Keep cache access separate from startup serialization: instance() waits for
61
+ # the global loop, whose service cleanup must be able to evict instances.
62
+ _instance_cache_lock = threading.Lock()
60
63
  _max_queue_size: int = 0 # 0 means unbounded
61
64
 
62
65
  def __init__(self, *args: Hashable) -> None:
@@ -96,6 +99,7 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
96
99
  """Reset class-level state after fork() to prevent deadlocks in child process."""
97
100
  cls._instances.clear()
98
101
  cls._instance_lock = threading.Lock()
102
+ cls._instance_cache_lock = threading.Lock()
99
103
 
100
104
  def start(self) -> None:
101
105
  logger.debug("Starting service %r", self)
@@ -281,7 +285,8 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
281
285
  """
282
286
  futures: list[concurrent.futures.Future[bool]] = []
283
287
  with cls._instance_lock:
284
- instances = tuple(cls._instances.values())
288
+ with cls._instance_cache_lock:
289
+ instances = tuple(cls._instances.values())
285
290
 
286
291
  for instance in instances:
287
292
  futures.append(instance._drain(at_exit=at_exit))
@@ -312,28 +317,44 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
312
317
  """
313
318
  with cls._instance_lock:
314
319
  key = hash((cls, *args))
315
- if key not in cls._instances:
316
- cls._instances[key] = cls._new_instance(*args)
320
+ with cls._instance_cache_lock:
321
+ instance = cls._instances.get(key)
322
+ if instance is None or instance._stopped:
323
+ instance = cls._new_instance(*args)
317
324
 
318
- return cls._instances[key]
325
+ return instance
319
326
 
320
327
  def _remove_instance(self):
321
- self._instances.pop(self._key, None)
328
+ # Only evict this instance; a newer instance may already be cached under
329
+ # the same key
330
+ with self._instance_cache_lock:
331
+ if self._instances.get(self._key) is self:
332
+ self._instances.pop(self._key, None)
322
333
 
323
334
  @classmethod
324
335
  def _new_instance(cls, *args: Hashable) -> Self:
325
336
  """
326
- Create and start a new instance of the service.
337
+ Create, cache, and start a new instance of the service.
327
338
  """
328
339
  instance = cls(*args)
329
340
 
330
- # If already on the global loop, just start it here to avoid deadlock
331
- if threading.get_ident() == get_global_loop().thread.ident:
332
- instance.start()
341
+ # Cache before starting so that a service which stops while starting, e.g.
342
+ # because its lifespan failed, evicts itself instead of being cached after
343
+ # it has already stopped
344
+ with cls._instance_cache_lock:
345
+ cls._instances[instance._key] = instance
333
346
 
334
- # Otherwise, bind the service to the global loop
335
- else:
336
- from_sync.call_soon_in_loop_thread(create_call(instance.start)).result()
347
+ try:
348
+ # If already on the global loop, just start it here to avoid deadlock
349
+ if threading.get_ident() == get_global_loop().thread.ident:
350
+ instance.start()
351
+
352
+ # Otherwise, bind the service to the global loop
353
+ else:
354
+ from_sync.call_soon_in_loop_thread(create_call(instance.start)).result()
355
+ except BaseException:
356
+ instance._remove_instance()
357
+ raise
337
358
 
338
359
  return instance
339
360
 
@@ -751,6 +751,7 @@ class MattermostWebhook(AbstractAppriseNotificationBlock):
751
751
  token=self.token.get_secret_value(),
752
752
  fullpath=self.path,
753
753
  host=self.hostname,
754
+ user=self.botname,
754
755
  targets=self.channels,
755
756
  include_image=self.include_image,
756
757
  port=self.port,
@@ -1,7 +1,7 @@
1
1
  import inspect
2
2
  import sys
3
3
  from copy import deepcopy
4
- from dataclasses import dataclass, field
4
+ from dataclasses import dataclass, field, replace
5
5
  from logging import Logger
6
6
  from pathlib import Path
7
7
  from typing import (
@@ -255,7 +255,7 @@ class CompoundCachePolicy(CachePolicy):
255
255
 
256
256
  if inputs_policies:
257
257
  new = Inputs(exclude=[other])
258
- return CompoundCachePolicy(policies=[*self.policies, new])
258
+ return replace(self, policies=[*self.policies, new])
259
259
  else:
260
260
  # no dependency on inputs already
261
261
  return self
@@ -404,7 +404,7 @@ class Inputs(CachePolicy):
404
404
  def __sub__(self, other: str) -> "CachePolicy":
405
405
  if not isinstance(other, str): # type: ignore[reportUnnecessaryIsInstance]
406
406
  raise TypeError("Can only subtract strings from key policies.")
407
- return Inputs(exclude=self.exclude + [other])
407
+ return replace(self, exclude=self.exclude + [other])
408
408
 
409
409
 
410
410
  INPUTS = Inputs()
@@ -1,4 +1,5 @@
1
1
  import copy
2
+ import math
2
3
  import sys
3
4
  import threading
4
5
  import time
@@ -7,6 +8,7 @@ from collections import defaultdict
7
8
  from collections.abc import AsyncGenerator, Awaitable, MutableMapping
8
9
  from contextlib import asynccontextmanager
9
10
  from datetime import datetime, timezone
11
+ from email.utils import parsedate_to_datetime
10
12
  from logging import Logger
11
13
  from typing import TYPE_CHECKING, Any, Callable, Optional, Protocol, runtime_checkable
12
14
 
@@ -177,6 +179,31 @@ class PrefectResponse(httpx.Response):
177
179
  return new_response
178
180
 
179
181
 
182
+ def _parse_retry_after(value: str) -> float | None:
183
+ """
184
+ Parse a `Retry-After` header value into a number of seconds to wait.
185
+
186
+ Supports both forms allowed by RFC 9110: delay-seconds and HTTP-date. Returns
187
+ `None` if the value cannot be interpreted so callers can fall back to their
188
+ default backoff.
189
+ """
190
+ try:
191
+ seconds = float(value)
192
+ except ValueError:
193
+ try:
194
+ retry_at = parsedate_to_datetime(value)
195
+ except (TypeError, ValueError, OverflowError):
196
+ return None
197
+ if retry_at.tzinfo is None:
198
+ retry_at = retry_at.replace(tzinfo=timezone.utc)
199
+ seconds = (retry_at - datetime.now(timezone.utc)).total_seconds()
200
+
201
+ if not math.isfinite(seconds):
202
+ return None
203
+
204
+ return max(0.0, seconds)
205
+
206
+
180
207
  class PrefectHttpxAsyncClient(httpx.AsyncClient):
181
208
  """
182
209
  A Prefect wrapper for the async httpx client with support for retry-after headers
@@ -293,7 +320,9 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
293
320
  return response
294
321
 
295
322
  if "Retry-After" in response.headers:
296
- retry_seconds = float(response.headers["Retry-After"])
323
+ retry_seconds = _parse_retry_after(response.headers["Retry-After"])
324
+
325
+ retry_after_from_header = retry_seconds is not None
297
326
 
298
327
  # Use an exponential back-off if not set in a header
299
328
  if retry_seconds is None:
@@ -302,7 +331,7 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
302
331
  # Add jitter
303
332
  jitter_factor = PREFECT_CLIENT_RETRY_JITTER_FACTOR.value()
304
333
  if retry_seconds > 0 and jitter_factor > 0:
305
- if response is not None and "Retry-After" in response.headers:
334
+ if retry_after_from_header:
306
335
  # Always wait for _at least_ retry seconds if requested by the API
307
336
  retry_seconds = bounded_poisson_interval(
308
337
  retry_seconds, retry_seconds * (1 + jitter_factor)
@@ -563,7 +592,9 @@ class PrefectHttpxSyncClient(httpx.Client):
563
592
  return response
564
593
 
565
594
  if "Retry-After" in response.headers:
566
- retry_seconds = float(response.headers["Retry-After"])
595
+ retry_seconds = _parse_retry_after(response.headers["Retry-After"])
596
+
597
+ retry_after_from_header = retry_seconds is not None
567
598
 
568
599
  # Use an exponential back-off if not set in a header
569
600
  if retry_seconds is None:
@@ -572,7 +603,7 @@ class PrefectHttpxSyncClient(httpx.Client):
572
603
  # Add jitter
573
604
  jitter_factor = PREFECT_CLIENT_RETRY_JITTER_FACTOR.value()
574
605
  if retry_seconds > 0 and jitter_factor > 0:
575
- if response is not None and "Retry-After" in response.headers:
606
+ if retry_after_from_header:
576
607
  # Always wait for _at least_ retry seconds if requested by the API
577
608
  retry_seconds = bounded_poisson_interval(
578
609
  retry_seconds, retry_seconds * (1 + jitter_factor)
@@ -241,7 +241,14 @@ class Runner:
241
241
 
242
242
  if name and ("/" in name or "%" in name):
243
243
  raise ValueError("Runner name cannot contain '/' or '%'")
244
- self.name: str = Path(name).stem if name is not None else f"runner-{uuid4()}"
244
+ if name is None:
245
+ self.name: str = f"runner-{uuid4()}"
246
+ else:
247
+ # Only strip the suffix when a filename was actually passed; a `.` is
248
+ # legal in a runner name and `Path().stem` would otherwise treat
249
+ # everything after the last one as a file extension. Mirrors
250
+ # `RunnerDeployment.validate_name`.
251
+ self.name = Path(name).stem if name.endswith(".py") else name
245
252
  self._logger: "logging.Logger" = get_logger("runner")
246
253
 
247
254
  self.started: bool = False
@@ -444,8 +444,6 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
444
444
  Callable[["Task[P, Coroutine[Any, Any, R]]", TaskRun, State[R]], bool]
445
445
  ] = self.task.retry_condition_fn
446
446
 
447
- failure_type = "exception" if isinstance(exc_or_state, Exception) else "state"
448
-
449
447
  if not self.task_run:
450
448
  raise ValueError("Task run is not set")
451
449
  try:
@@ -453,9 +451,13 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
453
451
  f"Running `retry_condition_fn` check {retry_condition!r} for task"
454
452
  f" {self.task.name!r}"
455
453
  )
456
- state = Failed(
457
- data=exc_or_state,
458
- message=f"Task run encountered unexpected {failure_type}: {repr(exc_or_state)}",
454
+ state = (
455
+ exc_or_state
456
+ if isinstance(exc_or_state, State)
457
+ else Failed(
458
+ data=exc_or_state,
459
+ message=f"Task run encountered unexpected exception: {repr(exc_or_state)}",
460
+ )
459
461
  )
460
462
  if inspect.iscoroutinefunction(retry_condition):
461
463
  should_retry = run_coro_as_sync(
@@ -674,6 +676,10 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
674
676
  if isinstance(self.task.retry_delay_seconds, Sequence)
675
677
  else self.task.retry_delay_seconds
676
678
  )
679
+ if self.task.retry_jitter_factor and delay > 0:
680
+ delay = clamped_poisson_interval(
681
+ delay, clamping_factor=self.task.retry_jitter_factor
682
+ )
677
683
  new_state = AwaitingRetry(
678
684
  scheduled_time=prefect.types._datetime.now("UTC")
679
685
  + timedelta(seconds=delay)
@@ -1056,8 +1062,6 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1056
1062
  Callable[["Task[P, Coroutine[Any, Any, R]]", TaskRun, State[R]], bool]
1057
1063
  ] = self.task.retry_condition_fn
1058
1064
 
1059
- failure_type = "exception" if isinstance(exc_or_state, Exception) else "state"
1060
-
1061
1065
  if not self.task_run:
1062
1066
  raise ValueError("Task run is not set")
1063
1067
  try:
@@ -1065,9 +1069,13 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1065
1069
  f"Running `retry_condition_fn` check {retry_condition!r} for task"
1066
1070
  f" {self.task.name!r}"
1067
1071
  )
1068
- state = Failed(
1069
- data=exc_or_state,
1070
- message=f"Task run encountered unexpected {failure_type}: {repr(exc_or_state)}",
1072
+ state = (
1073
+ exc_or_state
1074
+ if isinstance(exc_or_state, State)
1075
+ else Failed(
1076
+ data=exc_or_state,
1077
+ message=f"Task run encountered unexpected exception: {repr(exc_or_state)}",
1078
+ )
1071
1079
  )
1072
1080
  if inspect.iscoroutinefunction(retry_condition):
1073
1081
  should_retry = await retry_condition(self.task, self.task_run, state)
@@ -1301,6 +1309,10 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1301
1309
  if isinstance(self.task.retry_delay_seconds, Sequence)
1302
1310
  else self.task.retry_delay_seconds
1303
1311
  )
1312
+ if self.task.retry_jitter_factor and delay > 0:
1313
+ delay = clamped_poisson_interval(
1314
+ delay, clamping_factor=self.task.retry_jitter_factor
1315
+ )
1304
1316
  new_state = AwaitingRetry(
1305
1317
  scheduled_time=prefect.types._datetime.now("UTC")
1306
1318
  + timedelta(seconds=delay)
@@ -792,6 +792,7 @@ class Task(Generic[P, R]):
792
792
  name=name or self.name,
793
793
  description=description or self.description,
794
794
  tags=tags or copy(self.tags),
795
+ version=self.version,
795
796
  cache_policy=cache_policy
796
797
  if cache_policy is not NotSet
797
798
  else self._user_cache_policy,
@@ -844,6 +845,8 @@ class Task(Generic[P, R]):
844
845
  on_completion=on_completion or self.on_completion_hooks,
845
846
  on_failure=on_failure or self.on_failure_hooks,
846
847
  on_running=on_running or self.on_running_hooks,
848
+ on_rollback=copy(self.on_rollback_hooks),
849
+ on_commit=copy(self.on_commit_hooks),
847
850
  retry_condition_fn=retry_condition_fn or self.retry_condition_fn,
848
851
  viz_return_value=viz_return_value or self.viz_return_value,
849
852
  asset_deps=asset_deps or self.asset_deps,
@@ -251,8 +251,11 @@ def process_properties(
251
251
  _fix_tuple_items(schema)
252
252
 
253
253
  if "properties" in schema:
254
- required_fields = schema.get("required", [])
255
- process_properties(schema["properties"], required_fields)
254
+ process_properties(
255
+ schema["properties"],
256
+ schema.get("required", []),
257
+ allow_none_with_default,
258
+ )
256
259
 
257
260
 
258
261
  def preprocess_schema(
@@ -401,8 +401,15 @@ async def resolve_block_document_references(
401
401
  value: Any = data
402
402
 
403
403
  if len(data) == 1 and "value" in data:
404
- # only resolve the value if the keypath is not already pointing to "value"
405
- if not (value_keypath and value_keypath[0].startswith("value")):
404
+ # only resolve the value if the keypath is not already pointing to "value";
405
+ # a key that merely starts with "value" (e.g. "values") is inside it
406
+ if not (
407
+ value_keypath
408
+ and (
409
+ value_keypath[0] == "value"
410
+ or value_keypath[0].startswith(("value.", "value["))
411
+ )
412
+ ):
406
413
  data = value = value["value"]
407
414
 
408
415
  if value_keypath:
@@ -1,5 +0,0 @@
1
- # Generated by versioningit
2
- __version__ = "3.8.8.dev2"
3
- __build_date__ = "2026-10-01 08:22:06.424502+00:00"
4
- __git_commit__ = "aa05fef1cff77741202fe9429c951351cbb7c892"
5
- __dirty__ = False