prefect-client 3.8.4.dev7__tar.gz → 3.8.5.dev2__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 (458) hide show
  1. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/PKG-INFO +2 -2
  2. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/pyproject.toml +1 -1
  3. prefect_client-3.8.5.dev2/src/prefect/_build_info.py +5 -0
  4. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/attempt_control.py +1 -1
  5. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/context.py +26 -0
  6. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/filters.py +11 -0
  7. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/worker.py +26 -3
  8. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/AGENTS.md +7 -7
  9. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_cancellation_manager.py +2 -2
  10. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_flow_run_executor.py +19 -5
  11. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_hook_runner.py +7 -1
  12. prefect_client-3.8.5.dev2/src/prefect/runner/_process_manager.py +446 -0
  13. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_starter_engine.py +23 -4
  14. prefect_client-3.8.5.dev2/src/prefect/runner/_workspace_hook_runner.py +80 -0
  15. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_workspace_resolver.py +8 -1
  16. prefect_client-3.8.5.dev2/src/prefect/runner/_workspace_runtime.py +53 -0
  17. prefect_client-3.8.5.dev2/src/prefect/runner/_workspace_runtime_bootstrap.py +200 -0
  18. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_workspace_starter.py +76 -146
  19. prefect_client-3.8.5.dev2/src/prefect/runner/_workspace_supervisor.py +212 -0
  20. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/automations.py +7 -1
  21. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/AGENTS.md +2 -2
  22. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/process.py +32 -46
  23. prefect_client-3.8.4.dev7/src/prefect/_build_info.py +0 -5
  24. prefect_client-3.8.4.dev7/src/prefect/runner/_process_manager.py +0 -264
  25. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/.gitignore +0 -0
  26. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/LICENSE +0 -0
  27. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/README.md +0 -0
  28. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/hatch_build.py +0 -0
  29. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/.prefectignore +0 -0
  30. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/AGENTS.md +0 -0
  31. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/__init__.py +0 -0
  32. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/__main__.py +0 -0
  33. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/__init__.py +0 -0
  34. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/_launchers.py +0 -0
  35. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/bundles/__init__.py +0 -0
  36. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/bundles/execute.py +0 -0
  37. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/plugins/__init__.py +0 -0
  38. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/plugins/apply.py +0 -0
  39. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  40. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/plugins/manager.py +0 -0
  41. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/plugins/spec.py +0 -0
  42. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/sla/__init__.py +0 -0
  43. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/sla/client.py +0 -0
  44. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_experimental/sla/objects.py +0 -0
  45. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_flow_run_suspension.py +0 -0
  46. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/__init__.py +0 -0
  47. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/_logging.py +0 -0
  48. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/__init__.py +0 -0
  49. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  50. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/client.py +0 -0
  51. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/device_id.py +0 -0
  52. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/emit.py +0 -0
  53. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/enabled.py +0 -0
  54. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/events.py +0 -0
  55. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/milestones.py +0 -0
  56. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/notice.py +0 -0
  57. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/analytics/service.py +0 -0
  58. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/ast_utils.py +0 -0
  59. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/buildx.py +0 -0
  60. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/__init__.py +0 -0
  61. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  62. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/backports.py +0 -0
  63. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/blocks.py +0 -0
  64. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  65. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  66. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/migration.py +0 -0
  67. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/compatibility/starlette.py +0 -0
  68. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/__init__.py +0 -0
  69. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/api.py +0 -0
  70. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/calls.py +0 -0
  71. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  72. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  73. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/inspection.py +0 -0
  74. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/primitives.py +0 -0
  75. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/services.py +0 -0
  76. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/threads.py +0 -0
  77. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/concurrency/waiters.py +0 -0
  78. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/control_listener.py +0 -0
  79. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/deprecated.py +0 -0
  80. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/engine.py +0 -0
  81. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/git.py +0 -0
  82. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  83. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/installation.py +0 -0
  84. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/integrations.py +0 -0
  85. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/launchers.py +0 -0
  86. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/lazy.py +0 -0
  87. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/metrics.py +0 -0
  88. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/observability.py +0 -0
  89. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/observers.py +0 -0
  90. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/__init__.py +0 -0
  91. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/apply.py +0 -0
  92. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/collections.py +0 -0
  93. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  94. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/manager.py +0 -0
  95. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/spec.py +0 -0
  96. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/plugins/startup.py +0 -0
  97. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/pydantic/__init__.py +0 -0
  98. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/pydantic/schemas.py +0 -0
  99. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  100. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  101. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  102. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/pytz.py +0 -0
  103. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/result_records.py +0 -0
  104. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/retries.py +0 -0
  105. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schema.py +0 -0
  106. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schemas/__init__.py +0 -0
  107. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schemas/_registry.py +0 -0
  108. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schemas/bases.py +0 -0
  109. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schemas/fields.py +0 -0
  110. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schemas/serializers.py +0 -0
  111. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/schemas/validators.py +0 -0
  112. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  113. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/states.py +0 -0
  114. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/testing.py +0 -0
  115. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/urls.py +0 -0
  116. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/uuid7.py +0 -0
  117. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/version_checking.py +0 -0
  118. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/versioning.py +0 -0
  119. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/waiters.py +0 -0
  120. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_internal/websockets.py +0 -0
  121. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/__init__.py +0 -0
  122. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/fetcher.py +0 -0
  123. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/generator.py +0 -0
  124. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/models.py +0 -0
  125. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/naming.py +0 -0
  126. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/renderer.py +0 -0
  127. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/schema_converter.py +0 -0
  128. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/templates/__init__.py +0 -0
  129. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  130. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/types.py +0 -0
  131. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_sdk/unions.py +0 -0
  132. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_vendor/croniter/__init__.py +0 -0
  133. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/_vendor/croniter/croniter.py +0 -0
  134. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/agent.py +0 -0
  135. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/analytics/__init__.py +0 -0
  136. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/artifacts.py +0 -0
  137. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/assets/__init__.py +0 -0
  138. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/assets/core.py +0 -0
  139. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/assets/materialize.py +0 -0
  140. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/automations.py +0 -0
  141. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/AGENTS.md +0 -0
  142. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/__init__.py +0 -0
  143. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/abstract.py +0 -0
  144. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/core.py +0 -0
  145. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/fields.py +0 -0
  146. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/notifications.py +0 -0
  147. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/redis.py +0 -0
  148. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/system.py +0 -0
  149. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/blocks/webhook.py +0 -0
  150. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/__init__.py +0 -0
  151. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/_file_collector.py +0 -0
  152. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/_ignore_filter.py +0 -0
  153. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/_path_resolver.py +0 -0
  154. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/_zip_builder.py +0 -0
  155. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/_zip_extractor.py +0 -0
  156. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/bundles/execute.py +0 -0
  157. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/cache_policies.py +0 -0
  158. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/AGENTS.md +0 -0
  159. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/__init__.py +0 -0
  160. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/attribution.py +0 -0
  161. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/base.py +0 -0
  162. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/cloud.py +0 -0
  163. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/collections.py +0 -0
  164. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/constants.py +0 -0
  165. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/__init__.py +0 -0
  166. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  167. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  168. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  169. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_automations/client.py +0 -0
  170. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  171. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  172. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  173. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  174. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  175. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  176. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  177. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  178. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  179. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  180. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  181. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_events/client.py +0 -0
  182. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  183. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  184. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  185. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_flows/client.py +0 -0
  186. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  187. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_logs/client.py +0 -0
  188. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  189. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_variables/client.py +0 -0
  190. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  191. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  192. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/base.py +0 -0
  193. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/orchestration/routes.py +0 -0
  194. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/__init__.py +0 -0
  195. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/actions.py +0 -0
  196. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/events.py +0 -0
  197. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/filters.py +0 -0
  198. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/objects.py +0 -0
  199. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/responses.py +0 -0
  200. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/schedules.py +0 -0
  201. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/sorting.py +0 -0
  202. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/schemas/worker_channel.py +0 -0
  203. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/subscriptions.py +0 -0
  204. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/types/__init__.py +0 -0
  205. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  206. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/client/utilities.py +0 -0
  207. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/AGENTS.md +0 -0
  208. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/__init__.py +0 -0
  209. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/_asyncio.py +0 -0
  210. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/_events.py +0 -0
  211. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/_leases.py +0 -0
  212. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/_sync.py +0 -0
  213. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/asyncio.py +0 -0
  214. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/context.py +0 -0
  215. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/services.py +0 -0
  216. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/sync.py +0 -0
  217. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/__init__.py +0 -0
  218. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  219. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/_events.py +0 -0
  220. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/asyncio.py +0 -0
  221. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/context.py +0 -0
  222. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/services.py +0 -0
  223. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/concurrency/v1/sync.py +0 -0
  224. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/AGENTS.md +0 -0
  225. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/__init__.py +0 -0
  226. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/base.py +0 -0
  227. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/deployments.py +0 -0
  228. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/flow_runs.py +0 -0
  229. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/runner.py +0 -0
  230. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/schedules.py +0 -0
  231. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/steps/__init__.py +0 -0
  232. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/steps/core.py +0 -0
  233. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/steps/pull.py +0 -0
  234. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/deployments/steps/utility.py +0 -0
  235. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/docker/__init__.py +0 -0
  236. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/docker/_buildx.py +0 -0
  237. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/docker/docker_image.py +0 -0
  238. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/engine.py +0 -0
  239. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/AGENTS.md +0 -0
  240. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/__init__.py +0 -0
  241. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/actions.py +0 -0
  242. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/clients.py +0 -0
  243. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/related.py +0 -0
  244. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/schemas/__init__.py +0 -0
  245. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/schemas/automations.py +0 -0
  246. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  247. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/schemas/events.py +0 -0
  248. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/schemas/labelling.py +0 -0
  249. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/subscribers.py +0 -0
  250. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/events/utilities.py +0 -0
  251. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/exceptions.py +0 -0
  252. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/filesystems.py +0 -0
  253. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/flow_engine.py +0 -0
  254. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/flow_runs.py +0 -0
  255. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/flows.py +0 -0
  256. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/futures.py +0 -0
  257. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/__init__.py +0 -0
  258. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/base.py +0 -0
  259. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  260. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  261. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  262. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  263. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  264. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  265. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/input/__init__.py +0 -0
  266. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/input/actions.py +0 -0
  267. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/input/run_input.py +0 -0
  268. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/locking/__init__.py +0 -0
  269. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/locking/_filelock.py +0 -0
  270. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/locking/filesystem.py +0 -0
  271. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/locking/memory.py +0 -0
  272. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/locking/protocol.py +0 -0
  273. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/AGENTS.md +0 -0
  274. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/__init__.py +0 -0
  275. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/clients.py +0 -0
  276. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/configuration.py +0 -0
  277. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/filters.py +0 -0
  278. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/formatters.py +0 -0
  279. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/handlers.py +0 -0
  280. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/highlighters.py +0 -0
  281. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/loggers.py +0 -0
  282. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/logging/logging.yml +0 -0
  283. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/main.py +0 -0
  284. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/plugins.py +0 -0
  285. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/py.typed +0 -0
  286. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/results.py +0 -0
  287. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/__init__.py +0 -0
  288. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_cancel_finalizer.py +0 -0
  289. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_control_channel.py +0 -0
  290. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_deployment_registry.py +0 -0
  291. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_event_emitter.py +0 -0
  292. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_flow_resolver.py +0 -0
  293. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_limit_manager.py +0 -0
  294. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_scheduled_run_poller.py +0 -0
  295. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_starter_bundle.py +0 -0
  296. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_starter_direct.py +0 -0
  297. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_state_proposer.py +0 -0
  298. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/_uv_command.py +0 -0
  299. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/runner.py +0 -0
  300. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/server.py +0 -0
  301. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runner/storage.py +0 -0
  302. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runtime/__init__.py +0 -0
  303. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runtime/deployment.py +0 -0
  304. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runtime/flow_run.py +0 -0
  305. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/runtime/task_run.py +0 -0
  306. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/schedules.py +0 -0
  307. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/serializers.py +0 -0
  308. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/__init__.py +0 -0
  309. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/_ui_static.py +0 -0
  310. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/admin.py +0 -0
  311. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/artifacts.py +0 -0
  312. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/background_workers.py +0 -0
  313. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/block_capabilities.py +0 -0
  314. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/block_documents.py +0 -0
  315. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/block_schemas.py +0 -0
  316. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/block_types.py +0 -0
  317. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/clients.py +0 -0
  318. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/collections.py +0 -0
  319. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  320. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/concurrency_limits.py +0 -0
  321. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  322. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/csrf_token.py +0 -0
  323. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/dependencies.py +0 -0
  324. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/deployments.py +0 -0
  325. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/events.py +0 -0
  326. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/flow_run_states.py +0 -0
  327. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/flow_runs.py +0 -0
  328. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/flows.py +0 -0
  329. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/logs.py +0 -0
  330. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/middleware.py +0 -0
  331. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/root.py +0 -0
  332. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/run_history.py +0 -0
  333. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/saved_searches.py +0 -0
  334. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/server.py +0 -0
  335. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  336. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/task_run_states.py +0 -0
  337. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/task_runs.py +0 -0
  338. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/task_workers.py +0 -0
  339. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/templates.py +0 -0
  340. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/ui/__init__.py +0 -0
  341. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/ui/flow_runs.py +0 -0
  342. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/ui/flows.py +0 -0
  343. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/ui/schemas.py +0 -0
  344. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/ui/task_runs.py +0 -0
  345. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/validation.py +0 -0
  346. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/variables.py +0 -0
  347. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/work_queues.py +0 -0
  348. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/server/api/workers.py +0 -0
  349. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/AGENTS.md +0 -0
  350. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/__init__.py +0 -0
  351. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/_types.py +0 -0
  352. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/base.py +0 -0
  353. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/constants.py +0 -0
  354. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/context.py +0 -0
  355. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/legacy.py +0 -0
  356. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/__init__.py +0 -0
  357. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/_defaults.py +0 -0
  358. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/api.py +0 -0
  359. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/cli.py +0 -0
  360. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/client.py +0 -0
  361. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/cloud.py +0 -0
  362. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/deployments.py +0 -0
  363. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/events.py +0 -0
  364. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/experiments.py +0 -0
  365. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/flows.py +0 -0
  366. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/internal.py +0 -0
  367. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/logging.py +0 -0
  368. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/plugins.py +0 -0
  369. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/results.py +0 -0
  370. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/root.py +0 -0
  371. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/runner.py +0 -0
  372. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/__init__.py +0 -0
  373. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/api.py +0 -0
  374. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/concurrency.py +0 -0
  375. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/database.py +0 -0
  376. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/deployments.py +0 -0
  377. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/docket.py +0 -0
  378. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/ephemeral.py +0 -0
  379. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/events.py +0 -0
  380. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  381. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/logs.py +0 -0
  382. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/root.py +0 -0
  383. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/services.py +0 -0
  384. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/tasks.py +0 -0
  385. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/ui.py +0 -0
  386. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/server/worker_channel.py +0 -0
  387. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/tasks.py +0 -0
  388. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/telemetry.py +0 -0
  389. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/testing.py +0 -0
  390. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/models/worker.py +0 -0
  391. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/profiles.py +0 -0
  392. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/profiles.toml +0 -0
  393. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/settings/sources.py +0 -0
  394. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/states.py +0 -0
  395. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/task_engine.py +0 -0
  396. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/task_runners.py +0 -0
  397. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/task_runs.py +0 -0
  398. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/task_worker.py +0 -0
  399. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/tasks.py +0 -0
  400. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/telemetry/__init__.py +0 -0
  401. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/telemetry/run_telemetry.py +0 -0
  402. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/transactions.py +0 -0
  403. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/types/__init__.py +0 -0
  404. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/types/_concurrency.py +0 -0
  405. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/types/_datetime.py +0 -0
  406. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/types/entrypoint.py +0 -0
  407. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/types/names.py +0 -0
  408. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/AGENTS.md +0 -0
  409. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/__init__.py +0 -0
  410. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/annotations.py +0 -0
  411. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  412. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  413. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/callables/AGENTS.md +0 -0
  414. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/callables/__init__.py +0 -0
  415. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/collections.py +0 -0
  416. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/compat.py +0 -0
  417. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/context.py +0 -0
  418. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/dispatch.py +0 -0
  419. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/dockerutils.py +0 -0
  420. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/engine/AGENTS.md +0 -0
  421. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/engine/__init__.py +0 -0
  422. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  423. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/filesystem/__init__.py +0 -0
  424. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/generics.py +0 -0
  425. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/hashing.py +0 -0
  426. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/importtools.py +0 -0
  427. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/math.py +0 -0
  428. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/names.py +0 -0
  429. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  430. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/processutils/__init__.py +0 -0
  431. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/pydantic.py +0 -0
  432. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/render_swagger.py +0 -0
  433. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  434. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  435. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  436. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/schema_tools/validation.py +0 -0
  437. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/services.py +0 -0
  438. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/slugify.py +0 -0
  439. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/templating/AGENTS.md +0 -0
  440. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/templating/__init__.py +0 -0
  441. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/text.py +0 -0
  442. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/timeout.py +0 -0
  443. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/urls.py +0 -0
  444. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/utilities/visualization.py +0 -0
  445. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/variables.py +0 -0
  446. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/__init__.py +0 -0
  447. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_cleanup.py +0 -0
  448. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_cleanup_handlers.py +0 -0
  449. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  450. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
  451. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_worker_channel/_state.py +0 -0
  452. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_worker_channel/_sync.py +0 -0
  453. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  454. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/base.py +0 -0
  455. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/block.py +0 -0
  456. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/cloud.py +0 -0
  457. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/src/prefect/workers/server.py +0 -0
  458. {prefect_client-3.8.4.dev7 → prefect_client-3.8.5.dev2}/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.4.dev7
3
+ Version: 3.8.5.dev2
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
@@ -64,7 +64,7 @@ Requires-Dist: uvicorn!=0.29.0,>=0.14.0
64
64
  Requires-Dist: websockets<17.0,>=15.0.1
65
65
  Requires-Dist: whenever<0.11.0,>=0.7.3; python_version >= '3.13'
66
66
  Provides-Extra: notifications
67
- Requires-Dist: apprise<2.0.0,>=1.1.0; extra == 'notifications'
67
+ Requires-Dist: apprise<2.0.0,>=1.13.0; extra == 'notifications'
68
68
  Description-Content-Type: text/markdown
69
69
 
70
70
  <p align="center"><img src="https://github.com/PrefectHQ/prefect/assets/3407835/c654cbc6-63e8-4ada-a92a-efd2f8f24b85" width=1000></p>
@@ -74,7 +74,7 @@ Documentation = "https://docs.prefect.io"
74
74
  Source = "https://github.com/PrefectHQ/prefect"
75
75
  Tracker = "https://github.com/PrefectHQ/prefect/issues"
76
76
  [project.optional-dependencies]
77
- notifications = ["apprise>=1.1.0, <2.0.0"]
77
+ notifications = ["apprise>=1.13.0, <2.0.0"]
78
78
 
79
79
 
80
80
  [tool.hatch.version]
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.8.5.dev2"
3
+ __build_date__ = "2026-08-28 11:57:42.214978+00:00"
4
+ __git_commit__ = "239f9c68b7cbeb7fa9d6995b62a03ff124b5b16b"
5
+ __dirty__ = False
@@ -48,7 +48,7 @@ class EngineOutcomeReceipt:
48
48
  state_name: str | None = None
49
49
 
50
50
  def __post_init__(self) -> None:
51
- if not isinstance(self.disposition, EngineDisposition):
51
+ if not isinstance(self.disposition, EngineDisposition): # pyright: ignore[reportUnnecessaryIsInstance]
52
52
  raise TypeError("Receipt disposition must be an EngineDisposition")
53
53
  state_fields = (self.state_id, self.state_type, self.state_name)
54
54
  if self.disposition is EngineDisposition.STATE_REPORTED:
@@ -914,6 +914,32 @@ def get_settings_context() -> SettingsContext:
914
914
  return settings_ctx
915
915
 
916
916
 
917
+ @contextmanager
918
+ def _temporary_global_settings_context(
919
+ settings_context: "SettingsContext",
920
+ ) -> Generator[None, None, None]:
921
+ """
922
+ Temporarily replace the process-global settings context.
923
+
924
+ `SettingsContext.get` returns the process-global settings context when the
925
+ current `contextvars` context does not contain one. Replacing the global
926
+ context makes the given settings visible to contexts that were copied before
927
+ the settings were applied, such as the context that
928
+ `unittest.IsolatedAsyncioTestCase` copies when it is constructed. Contexts
929
+ that contain their own settings context are not affected.
930
+
931
+ This is an internal utility for `prefect.testing.utilities.prefect_test_harness`.
932
+ """
933
+ global GLOBAL_SETTINGS_CONTEXT
934
+
935
+ prior_global_settings_context = GLOBAL_SETTINGS_CONTEXT
936
+ GLOBAL_SETTINGS_CONTEXT = settings_context
937
+ try:
938
+ yield
939
+ finally:
940
+ GLOBAL_SETTINGS_CONTEXT = prior_global_settings_context
941
+
942
+
917
943
  @contextmanager
918
944
  def tags(*new_tags: str) -> Generator[set[str], None, None]:
919
945
  """
@@ -14,6 +14,14 @@ from prefect.utilities.collections import AutoEnum
14
14
  from .schemas.events import Event, Resource, ResourceSpecification
15
15
 
16
16
 
17
+ class AutomationFilterId(PrefectBaseModel):
18
+ """Filter by `Automation.id`."""
19
+
20
+ any_: Optional[list[UUID]] = Field(
21
+ default=None, description="A list of automation ids to include"
22
+ )
23
+
24
+
17
25
  class AutomationFilterCreated(PrefectBaseModel):
18
26
  """Filter by `Automation.created`."""
19
27
 
@@ -52,6 +60,9 @@ class AutomationFilterTags(PrefectBaseModel):
52
60
 
53
61
 
54
62
  class AutomationFilter(PrefectBaseModel):
63
+ id: Optional[AutomationFilterId] = Field(
64
+ default=None, description="Filter criteria for `Automation.id`"
65
+ )
55
66
  name: Optional[AutomationFilterName] = Field(
56
67
  default=None, description="Filter criteria for `Automation.name`"
57
68
  )
@@ -6,10 +6,12 @@ from uuid import UUID
6
6
  from typing_extensions import Self
7
7
 
8
8
  from prefect._internal.concurrency.services import QueueService
9
+ from prefect.logging import get_logger
9
10
  from prefect.settings import (
10
11
  PREFECT_API_KEY,
11
12
  PREFECT_API_URL,
12
13
  PREFECT_CLOUD_API_URL,
14
+ get_current_settings,
13
15
  )
14
16
  from prefect.utilities.context import temporary_context
15
17
 
@@ -23,8 +25,12 @@ from .related import related_resources_from_run_context
23
25
  from .schemas.events import Event
24
26
 
25
27
  if TYPE_CHECKING:
28
+ import logging
29
+
26
30
  from prefect.client.orchestration import PrefectClient
27
31
 
32
+ logger: "logging.Logger" = get_logger(__name__)
33
+
28
34
 
29
35
  class ProcessPoolForwardingEventsClient(EventsClient):
30
36
  """An events client that forwards events to a parent process queue."""
@@ -69,8 +75,6 @@ class EventsWorker(QueueService[Event]):
69
75
  def __init__(
70
76
  self, client_type: Type[EventsClient], client_options: Tuple[Tuple[str, Any]]
71
77
  ):
72
- from prefect.settings import get_current_settings
73
-
74
78
  self._max_queue_size = get_current_settings().events.worker_max_queue_size
75
79
  super().__init__(client_type, client_options)
76
80
  self.client_type = client_type
@@ -113,10 +117,29 @@ class EventsWorker(QueueService[Event]):
113
117
  return
114
118
 
115
119
  exclude = {resource.id for resource in event.involved_resources}
116
- event.related += await related_resources_from_run_context(
120
+ related = await related_resources_from_run_context(
117
121
  client=self._orchestration_client, exclude=exclude
118
122
  )
119
123
 
124
+ # The event was validated when it was created, before these resources were
125
+ # known, so only attach as many as keep the event within the same maximum that
126
+ # the Event schema validates. Otherwise the event is no longer valid to send.
127
+ maximum = get_current_settings().server.events.maximum_related_resources
128
+ room = max(maximum - len(event.related), 0)
129
+ if len(related) > room:
130
+ logger.warning(
131
+ "Attaching only %s of the %s related resources from the run context "
132
+ "to event %s, which already has %s of a maximum %s related resources",
133
+ room,
134
+ len(related),
135
+ event.id,
136
+ len(event.related),
137
+ maximum,
138
+ )
139
+ related = related[:room]
140
+
141
+ event.related += related
142
+
120
143
  @classmethod
121
144
  def set_client_override(
122
145
  cls, client_type: Optional[Type[EventsClient]], **client_kwargs: Any
@@ -23,7 +23,7 @@ Thin facade over single-responsibility extracted classes. New behavior belongs i
23
23
  | FlowRunExecutorContext | _flow_run_executor.py | Async context manager for one-shot execution outside Runner (workers, CLI, bundles) |
24
24
  | DirectSubprocessStarter | _starter_direct.py | Runs Flow object via run_flow_in_subprocess |
25
25
  | EngineCommandStarter | _starter_engine.py | Spawns `python -m prefect.engine` subprocess |
26
- | WorkspaceResolvingEngineCommandStarter | _workspace_starter.py | Resolves workspace (pull steps) via `_workspace_resolver` subprocess then delegates to EngineCommandStarter; used by `prefect flow-run execute` |
26
+ | WorkspaceResolvingEngineCommandStarter | _workspace_starter.py | Starts a managed supervisor that prepares the workspace, launches the selected engine command, and records the prepared runtime for hooks |
27
27
  | BundleExecutionStarter | _starter_bundle.py | Executes serialized bundle in SpawnProcess |
28
28
 
29
29
  ## Key Contracts
@@ -45,7 +45,7 @@ Thin facade over single-responsibility extracted classes. New behavior belongs i
45
45
  - `execute_bundle()` -- deprecated (Mar 2026); use `execute_bundle()` from `prefect.bundles.execute`
46
46
  - `reschedule_current_flow_runs()` -- deprecated (Mar 2026); SIGTERM rescheduling is now handled inline by the CLI execute path
47
47
 
48
- These will be removed once internal callers are migrated. Direct ProcessWorker flow runs already use `FlowRunExecutorContext` with `EngineCommandStarter`; only its ad hoc bundle path still calls deprecated `Runner.execute_bundle()`. Keep lifecycle behavior in the extracted classes and do not route direct worker execution back through Runner.
48
+ These will be removed once internal callers are migrated. Direct ProcessWorker flow runs already use `FlowRunExecutorContext`; generated commands use `WorkspaceResolvingEngineCommandStarter`, while explicitly configured commands use `EngineCommandStarter`. Only the ad hoc bundle path still calls deprecated `Runner.execute_bundle()`. Keep lifecycle behavior in the extracted classes and do not route direct worker execution back through Runner.
49
49
 
50
50
  ## EventEmitter WebSocket Degradation
51
51
 
@@ -108,7 +108,7 @@ The cancelling precheck (step 1a) still runs unconditionally even when `propose_
108
108
 
109
109
  ## ProcessWorker Execution Paths
110
110
 
111
- Direct ProcessWorker runs use `FlowRunExecutorContext` with `EngineCommandStarter` and `propose_submitting=False`. The executor owns process tracking, cancellation, Attempt Control Session evidence, crash inference, and normalized infrastructure status. Ad hoc ProcessWorker submissions still call deprecated `Runner.execute_bundle()` and remain a migration target.
111
+ Direct ProcessWorker runs use `FlowRunExecutorContext` with `propose_submitting=False`. Generated commands use `WorkspaceResolvingEngineCommandStarter` so command selection follows workspace preparation; explicitly configured commands use `EngineCommandStarter` and retain their own pull-step semantics. The executor owns process tracking, cancellation, Attempt Control Session evidence, crash inference, and normalized infrastructure status. Ad hoc ProcessWorker submissions still call deprecated `Runner.execute_bundle()` and remain a migration target.
112
112
 
113
113
  ## BlockStorageAdapter Pull Behavior
114
114
 
@@ -133,19 +133,19 @@ These validations exist to prevent git argument injection. Do not bypass them wh
133
133
 
134
134
  ## Workspace Resolver Subprocess
135
135
 
136
- `_workspace_resolver.py` prepares a flow run workspace in an isolated subprocess (storage pull, pull steps, CWD/env/sys.path capture). Runs as `python -m prefect.runner._workspace_resolver`.
136
+ `_workspace_resolver.py` prepares a flow run workspace inside the managed workspace supervisor (storage pull, pull steps, and CWD/environment/sys.path capture).
137
137
 
138
138
  **Stdout is reserved for the JSON `PreparedWorkspaceResult` payload only.** Pull step output (including inherited stdout from child processes) is redirected to stderr. Parse `process.stdout` for the result, `process.stderr` for diagnostics. Violating this breaks callers silently.
139
139
 
140
- **Caller-facing API:** Use `WorkspaceResolvingEngineCommandStarter` (`_workspace_starter.py`) rather than calling the resolver directly. It wraps the subprocess call, memoizes the resolved workspace (one subprocess call per starter instance), and provides `resolve_flow()` that loads the flow inside the resolved workspace context. Pass `starter.resolve_flow` as the `resolve_flow` argument to `FlowRunExecutorContext.create_executor()` using a separate lambda bypasses the workspace context and will fail to find the flow.
140
+ **Caller-facing API:** Use `WorkspaceResolvingEngineCommandStarter` (`_workspace_starter.py`) rather than calling the resolver directly when the caller owns workspace preparation. Pass `starter.hook_runner` as the `hook_runner` argument to `FlowRunExecutorContext.create_executor()`. The hook runner reads the prepared runtime manifest and loads hooks in a subprocess using the same command prefix, working directory, and environment as the engine. Treat explicitly configured commands as opaque; ProcessWorker launches them with `EngineCommandStarter` so their existing pull behavior is not duplicated.
141
141
 
142
- **Env/sys.path isolation:** `_prepared_workspace_context` mutates `os.environ` and `sys.path` in the caller process but does NOT change `os.getcwd()`. The parent working directory is preserved.
142
+ **Environment isolation:** Workspace preparation, engine execution, and hook loading stay in child processes. Do not install a prepared workspace's environment, CWD, or `sys.path` in the long-lived runner process.
143
143
 
144
144
  **Local path in-place execution:** When no pull steps are configured and the entrypoint file exists at `deployment.path` but not in the workspace root, `prepare_workspace` sets `working_directory` to the local path — not under `workspace_root`. The workspace directory is still created but is not the execution root. This is the "image-baked" pattern: code lives at a fixed local path (e.g., inside a container), not in object storage.
145
145
 
146
146
  **Pull-step directory fallback:** When pull steps run but none produces a `directory` output or changes CWD, `_ensure_entrypoint_in_workspace` copies storage into the workspace root as a fallback. This handles setup-only pull steps (e.g., `run_shell_script` for environment prep) that do not control the working directory themselves.
147
147
 
148
- **Automatic dependency installation:** By default, `WorkspaceResolvingEngineCommandStarter` does not install dependencies before starting a flow run. When no explicit command is passed and `PREFECT_RUNNER_AUTO_INSTALL_DEPENDENCIES` is true, it auto-selects `uv run --no-default-groups --project <project_root> -m prefect.flow_engine` — but only when all three conditions hold: `pyproject.toml` exists at `project_root`, the `project.dependencies` list includes `prefect`, and `uv` is found via the workspace's `PATH` env var (not the system PATH). If the setting is false or any condition fails, the command falls back to `None`. Explicit commands always take precedence.
148
+ **Automatic dependency installation:** By default, `WorkspaceResolvingEngineCommandStarter` does not install dependencies before starting a flow run. When no explicit command is passed and `PREFECT_RUNNER_AUTO_INSTALL_DEPENDENCIES` is true, it auto-selects `uv run --no-default-groups --project <project_root>` with the worker-supplied workspace bootstrap — but only when all three conditions hold: `pyproject.toml` exists at `project_root`, the `project.dependencies` list includes `prefect`, and `uv` is found via the workspace's `PATH` env var (not the system PATH). The bootstrap uses the prepared entrypoint with `prefect.flow_engine` when that module exposes its executable `_main`; older selected runtimes fall back to `prefect.engine` with `PREFECT__FLOW_ENTRYPOINT`, preserving the prepared workspace. If the setting is false or any condition fails, the command falls back to `None`. Explicit commands always take precedence.
149
149
 
150
150
  ## Reference
151
151
 
@@ -19,7 +19,7 @@ if TYPE_CHECKING:
19
19
  from prefect.client.schemas.objects import FlowRun
20
20
  from prefect.runner._control_channel import ControlChannel
21
21
  from prefect.runner._event_emitter import EventEmitter
22
- from prefect.runner._hook_runner import HookRunner
22
+ from prefect.runner._hook_runner import FlowRunHookRunner
23
23
  from prefect.runner._process_manager import ProcessManager
24
24
  from prefect.runner._state_proposer import StateProposer
25
25
 
@@ -42,7 +42,7 @@ class CancellationManager:
42
42
  self,
43
43
  *,
44
44
  process_manager: ProcessManager,
45
- hook_runner: HookRunner,
45
+ hook_runner: FlowRunHookRunner,
46
46
  state_proposer: StateProposer,
47
47
  event_emitter: EventEmitter,
48
48
  client: PrefectClient,
@@ -18,7 +18,7 @@ from prefect.logging import get_logger
18
18
  from prefect.runner._cancellation_manager import CancellationManager
19
19
  from prefect.runner._control_channel import ControlChannel
20
20
  from prefect.runner._event_emitter import EventEmitter
21
- from prefect.runner._hook_runner import HookRunner
21
+ from prefect.runner._hook_runner import FlowRunHookRunner, HookRunner
22
22
  from prefect.runner._process_manager import ProcessHandle, ProcessManager
23
23
  from prefect.runner._state_proposer import StateProposer
24
24
  from prefect.settings.context import get_current_settings
@@ -94,7 +94,7 @@ class FlowRunExecutor:
94
94
  starter: ProcessStarter,
95
95
  process_manager: ProcessManager,
96
96
  state_proposer: StateProposer,
97
- hook_runner: HookRunner,
97
+ hook_runner: FlowRunHookRunner,
98
98
  get_attempt_conclusion: Callable[[UUID], AttemptConclusion | None],
99
99
  propose_submitting: bool = True,
100
100
  ) -> None:
@@ -267,6 +267,7 @@ class FlowRunExecutorContext:
267
267
  async def __aenter__(self) -> FlowRunExecutorContext:
268
268
  self._stack = AsyncExitStack()
269
269
  await self._stack.__aenter__()
270
+ self._after_exit_callbacks: list[Callable[[], object]] = []
270
271
  self._logger = get_logger("runner.executor_context")
271
272
 
272
273
  # Step 1: client
@@ -339,7 +340,15 @@ class FlowRunExecutorContext:
339
340
  exc_value: BaseException | None,
340
341
  traceback: TracebackType | None,
341
342
  ) -> bool | None:
342
- return await self._stack.__aexit__(exc_type, exc_value, traceback)
343
+ try:
344
+ return await self._stack.__aexit__(exc_type, exc_value, traceback)
345
+ finally:
346
+ for callback in reversed(self._after_exit_callbacks):
347
+ callback()
348
+
349
+ def call_after_exit(self, callback: Callable[[], object]) -> None:
350
+ """Keep attempt resources alive until cancellation work has drained."""
351
+ self._after_exit_callbacks.append(callback)
343
352
 
344
353
  def _handle_cancellation_observer_failure(self, flow_run_ids: set) -> None:
345
354
  """Handle failure of both cancellation observer mechanisms.
@@ -369,10 +378,15 @@ class FlowRunExecutorContext:
369
378
  self,
370
379
  flow_run: FlowRun,
371
380
  starter: ProcessStarter,
372
- resolve_flow: Callable[[FlowRun], Awaitable[Flow[Any, Any]]],
381
+ resolve_flow: Callable[[FlowRun], Awaitable[Flow[Any, Any]]] | None = None,
373
382
  propose_submitting: bool = True,
383
+ hook_runner: FlowRunHookRunner | None = None,
374
384
  ) -> FlowRunExecutor:
375
- hook_runner = HookRunner(resolve_flow=resolve_flow)
385
+ if (resolve_flow is None) == (hook_runner is None):
386
+ raise ValueError("Provide exactly one of resolve_flow or hook_runner.")
387
+ if hook_runner is None:
388
+ assert resolve_flow is not None
389
+ hook_runner = HookRunner(resolve_flow=resolve_flow)
376
390
  # Wire the real resolver into CancellationManager for on_cancellation hooks
377
391
  self._cancellation_manager._hook_runner = hook_runner
378
392
  return FlowRunExecutor(
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import TYPE_CHECKING, Any, Awaitable, Callable
3
+ from typing import TYPE_CHECKING, Any, Awaitable, Callable, Protocol
4
4
 
5
5
  from prefect._internal.concurrency.api import create_call, from_async
6
6
  from prefect._internal.engine import get_hook_name
@@ -13,6 +13,12 @@ if TYPE_CHECKING:
13
13
  from prefect.states import State
14
14
 
15
15
 
16
+ class FlowRunHookRunner(Protocol):
17
+ async def run_cancellation_hooks(self, flow_run: FlowRun, state: State) -> None: ...
18
+
19
+ async def run_crashed_hooks(self, flow_run: FlowRun, state: State) -> None: ...
20
+
21
+
16
22
  async def _run_hooks(
17
23
  hooks: list[Any],
18
24
  flow_run: FlowRun,