prefect-client 3.7.2.dev1__tar.gz → 3.7.2.dev3__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 (447) hide show
  1. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/PKG-INFO +1 -1
  2. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/AGENTS.md +1 -0
  3. prefect_client-3.7.2.dev3/src/prefect/_build_info.py +5 -0
  4. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/automations.py +2 -0
  5. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/notifications.py +18 -2
  6. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/__init__.py +16 -1
  7. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/_zip_builder.py +32 -25
  8. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/__init__.py +2 -0
  9. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/actions.py +7 -0
  10. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_scheduled_run_poller.py +1 -3
  11. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/clients.py +3 -0
  12. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/workers.py +412 -14
  13. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/templating/__init__.py +25 -4
  14. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_worker_channel/_protocol.py +4 -0
  15. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_worker_channel/_sync.py +31 -11
  16. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/base.py +1 -3
  17. prefect_client-3.7.2.dev1/src/prefect/_build_info.py +0 -5
  18. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/.gitignore +0 -0
  19. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/LICENSE +0 -0
  20. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/README.md +0 -0
  21. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/hatch_build.py +0 -0
  22. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/pyproject.toml +0 -0
  23. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/.prefectignore +0 -0
  24. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/__init__.py +0 -0
  25. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/__main__.py +0 -0
  26. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/__init__.py +0 -0
  27. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/_launchers.py +0 -0
  28. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
  29. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
  30. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/plugins/__init__.py +0 -0
  31. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/plugins/apply.py +0 -0
  32. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  33. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/plugins/manager.py +0 -0
  34. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/plugins/spec.py +0 -0
  35. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
  36. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/sla/client.py +0 -0
  37. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
  38. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_flow_run_suspension.py +0 -0
  39. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/__init__.py +0 -0
  40. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/_logging.py +0 -0
  41. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/__init__.py +0 -0
  42. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  43. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/client.py +0 -0
  44. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/device_id.py +0 -0
  45. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/emit.py +0 -0
  46. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/enabled.py +0 -0
  47. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/events.py +0 -0
  48. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/milestones.py +0 -0
  49. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/notice.py +0 -0
  50. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/analytics/service.py +0 -0
  51. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/ast_utils.py +0 -0
  52. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/buildx.py +0 -0
  53. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
  54. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  55. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/backports.py +0 -0
  56. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/blocks.py +0 -0
  57. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  58. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  59. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
  60. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/compatibility/starlette.py +0 -0
  61. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
  62. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
  63. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
  64. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  65. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  66. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
  67. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
  68. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
  69. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
  70. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
  71. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/control_listener.py +0 -0
  72. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/deprecated.py +0 -0
  73. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/engine.py +0 -0
  74. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/git.py +0 -0
  75. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  76. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/installation.py +0 -0
  77. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/integrations.py +0 -0
  78. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/launchers.py +0 -0
  79. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/lazy.py +0 -0
  80. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/metrics.py +0 -0
  81. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/observability.py +0 -0
  82. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/observers.py +0 -0
  83. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/__init__.py +0 -0
  84. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/apply.py +0 -0
  85. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/collections.py +0 -0
  86. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  87. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/manager.py +0 -0
  88. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/spec.py +0 -0
  89. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/plugins/startup.py +0 -0
  90. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
  91. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
  92. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  93. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  94. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  95. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/pytz.py +0 -0
  96. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/result_records.py +0 -0
  97. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/retries.py +0 -0
  98. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/schema.py +0 -0
  99. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
  100. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
  101. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
  102. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
  103. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/schemas/validators.py +0 -0
  104. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  105. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/states.py +0 -0
  106. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/testing.py +0 -0
  107. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/urls.py +0 -0
  108. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/uuid7.py +0 -0
  109. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/version_checking.py +0 -0
  110. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/versioning.py +0 -0
  111. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/waiters.py +0 -0
  112. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_internal/websockets.py +0 -0
  113. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/__init__.py +0 -0
  114. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/fetcher.py +0 -0
  115. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/generator.py +0 -0
  116. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/models.py +0 -0
  117. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/naming.py +0 -0
  118. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/renderer.py +0 -0
  119. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/schema_converter.py +0 -0
  120. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/templates/__init__.py +0 -0
  121. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  122. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/types.py +0 -0
  123. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_sdk/unions.py +0 -0
  124. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
  125. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
  126. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/agent.py +0 -0
  127. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/analytics/__init__.py +0 -0
  128. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/artifacts.py +0 -0
  129. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/assets/__init__.py +0 -0
  130. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/assets/core.py +0 -0
  131. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/assets/materialize.py +0 -0
  132. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/AGENTS.md +0 -0
  133. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/__init__.py +0 -0
  134. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/abstract.py +0 -0
  135. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/core.py +0 -0
  136. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/fields.py +0 -0
  137. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/redis.py +0 -0
  138. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/system.py +0 -0
  139. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/blocks/webhook.py +0 -0
  140. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/_file_collector.py +0 -0
  141. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/_ignore_filter.py +0 -0
  142. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/_path_resolver.py +0 -0
  143. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/_zip_extractor.py +0 -0
  144. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/bundles/execute.py +0 -0
  145. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/cache_policies.py +0 -0
  146. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/AGENTS.md +0 -0
  147. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/__init__.py +0 -0
  148. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/attribution.py +0 -0
  149. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/base.py +0 -0
  150. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/cloud.py +0 -0
  151. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/collections.py +0 -0
  152. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/constants.py +0 -0
  153. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/__init__.py +0 -0
  154. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  155. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  156. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  157. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
  158. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  159. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  160. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  161. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  162. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  163. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  164. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  165. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  166. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  167. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  168. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  169. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_events/client.py +0 -0
  170. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  171. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  172. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  173. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
  174. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  175. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
  176. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  177. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
  178. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  179. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  180. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/base.py +0 -0
  181. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/orchestration/routes.py +0 -0
  182. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/__init__.py +0 -0
  183. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/actions.py +0 -0
  184. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/events.py +0 -0
  185. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/filters.py +0 -0
  186. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/objects.py +0 -0
  187. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/responses.py +0 -0
  188. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/schedules.py +0 -0
  189. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/sorting.py +0 -0
  190. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/schemas/worker_channel.py +0 -0
  191. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/subscriptions.py +0 -0
  192. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/types/__init__.py +0 -0
  193. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  194. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/client/utilities.py +0 -0
  195. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/AGENTS.md +0 -0
  196. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/__init__.py +0 -0
  197. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
  198. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/_events.py +0 -0
  199. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/_leases.py +0 -0
  200. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/_sync.py +0 -0
  201. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/asyncio.py +0 -0
  202. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/context.py +0 -0
  203. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/services.py +0 -0
  204. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/sync.py +0 -0
  205. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
  206. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  207. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
  208. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
  209. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/context.py +0 -0
  210. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/services.py +0 -0
  211. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
  212. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/context.py +0 -0
  213. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/AGENTS.md +0 -0
  214. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/__init__.py +0 -0
  215. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/base.py +0 -0
  216. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/deployments.py +0 -0
  217. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/flow_runs.py +0 -0
  218. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/runner.py +0 -0
  219. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/schedules.py +0 -0
  220. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
  221. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/steps/core.py +0 -0
  222. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/steps/pull.py +0 -0
  223. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/deployments/steps/utility.py +0 -0
  224. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/docker/__init__.py +0 -0
  225. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/docker/_buildx.py +0 -0
  226. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/docker/docker_image.py +0 -0
  227. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/engine.py +0 -0
  228. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/AGENTS.md +0 -0
  229. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/clients.py +0 -0
  230. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/filters.py +0 -0
  231. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/related.py +0 -0
  232. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/schemas/__init__.py +0 -0
  233. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/schemas/automations.py +0 -0
  234. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  235. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/schemas/events.py +0 -0
  236. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/schemas/labelling.py +0 -0
  237. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/subscribers.py +0 -0
  238. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/utilities.py +0 -0
  239. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/events/worker.py +0 -0
  240. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/exceptions.py +0 -0
  241. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/filesystems.py +0 -0
  242. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/flow_engine.py +0 -0
  243. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/flow_runs.py +0 -0
  244. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/flows.py +0 -0
  245. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/futures.py +0 -0
  246. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/__init__.py +0 -0
  247. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/base.py +0 -0
  248. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  249. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  250. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  251. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  252. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  253. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  254. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/input/__init__.py +0 -0
  255. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/input/actions.py +0 -0
  256. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/input/run_input.py +0 -0
  257. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/locking/__init__.py +0 -0
  258. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/locking/_filelock.py +0 -0
  259. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/locking/filesystem.py +0 -0
  260. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/locking/memory.py +0 -0
  261. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/locking/protocol.py +0 -0
  262. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/AGENTS.md +0 -0
  263. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/__init__.py +0 -0
  264. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/clients.py +0 -0
  265. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/configuration.py +0 -0
  266. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/filters.py +0 -0
  267. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/formatters.py +0 -0
  268. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/handlers.py +0 -0
  269. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/highlighters.py +0 -0
  270. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/loggers.py +0 -0
  271. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/logging/logging.yml +0 -0
  272. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/main.py +0 -0
  273. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/plugins.py +0 -0
  274. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/py.typed +0 -0
  275. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/results.py +0 -0
  276. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/AGENTS.md +0 -0
  277. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/__init__.py +0 -0
  278. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_cancel_finalizer.py +0 -0
  279. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_cancellation_manager.py +0 -0
  280. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_control_channel.py +0 -0
  281. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_deployment_registry.py +0 -0
  282. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_event_emitter.py +0 -0
  283. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_flow_resolver.py +0 -0
  284. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_flow_run_executor.py +0 -0
  285. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_hook_runner.py +0 -0
  286. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_limit_manager.py +0 -0
  287. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_process_manager.py +0 -0
  288. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_starter_bundle.py +0 -0
  289. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_starter_direct.py +0 -0
  290. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_starter_engine.py +0 -0
  291. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_state_proposer.py +0 -0
  292. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_workspace_resolver.py +0 -0
  293. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/_workspace_starter.py +0 -0
  294. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/runner.py +0 -0
  295. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/server.py +0 -0
  296. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runner/storage.py +0 -0
  297. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runtime/__init__.py +0 -0
  298. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runtime/deployment.py +0 -0
  299. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runtime/flow_run.py +0 -0
  300. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/runtime/task_run.py +0 -0
  301. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/schedules.py +0 -0
  302. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/serializers.py +0 -0
  303. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/__init__.py +0 -0
  304. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/admin.py +0 -0
  305. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/artifacts.py +0 -0
  306. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/automations.py +0 -0
  307. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/background_workers.py +0 -0
  308. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
  309. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/block_documents.py +0 -0
  310. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/block_schemas.py +0 -0
  311. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/block_types.py +0 -0
  312. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/collections.py +0 -0
  313. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  314. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
  315. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  316. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/csrf_token.py +0 -0
  317. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/dependencies.py +0 -0
  318. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/deployments.py +0 -0
  319. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/events.py +0 -0
  320. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
  321. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/flow_runs.py +0 -0
  322. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/flows.py +0 -0
  323. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/logs.py +0 -0
  324. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/middleware.py +0 -0
  325. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/root.py +0 -0
  326. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/run_history.py +0 -0
  327. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/saved_searches.py +0 -0
  328. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/server.py +0 -0
  329. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  330. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/task_run_states.py +0 -0
  331. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/task_runs.py +0 -0
  332. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/task_workers.py +0 -0
  333. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/templates.py +0 -0
  334. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
  335. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
  336. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/ui/flows.py +0 -0
  337. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
  338. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
  339. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/validation.py +0 -0
  340. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/variables.py +0 -0
  341. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/server/api/work_queues.py +0 -0
  342. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/AGENTS.md +0 -0
  343. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/__init__.py +0 -0
  344. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/base.py +0 -0
  345. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/constants.py +0 -0
  346. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/context.py +0 -0
  347. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/legacy.py +0 -0
  348. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/__init__.py +0 -0
  349. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/_defaults.py +0 -0
  350. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/api.py +0 -0
  351. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/cli.py +0 -0
  352. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/client.py +0 -0
  353. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/cloud.py +0 -0
  354. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/deployments.py +0 -0
  355. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/events.py +0 -0
  356. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/experiments.py +0 -0
  357. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/flows.py +0 -0
  358. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/internal.py +0 -0
  359. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/logging.py +0 -0
  360. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/plugins.py +0 -0
  361. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/results.py +0 -0
  362. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/root.py +0 -0
  363. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/runner.py +0 -0
  364. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
  365. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/api.py +0 -0
  366. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/concurrency.py +0 -0
  367. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/database.py +0 -0
  368. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
  369. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/docket.py +0 -0
  370. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
  371. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/events.py +0 -0
  372. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  373. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/logs.py +0 -0
  374. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/root.py +0 -0
  375. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/services.py +0 -0
  376. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
  377. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/server/ui.py +0 -0
  378. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/tasks.py +0 -0
  379. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/telemetry.py +0 -0
  380. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/testing.py +0 -0
  381. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/models/worker.py +0 -0
  382. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/profiles.py +0 -0
  383. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/profiles.toml +0 -0
  384. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/settings/sources.py +0 -0
  385. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/states.py +0 -0
  386. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/task_engine.py +0 -0
  387. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/task_runners.py +0 -0
  388. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/task_runs.py +0 -0
  389. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/task_worker.py +0 -0
  390. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/tasks.py +0 -0
  391. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/telemetry/__init__.py +0 -0
  392. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
  393. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/transactions.py +0 -0
  394. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/types/__init__.py +0 -0
  395. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/types/_concurrency.py +0 -0
  396. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/types/_datetime.py +0 -0
  397. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/types/entrypoint.py +0 -0
  398. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/types/names.py +0 -0
  399. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/AGENTS.md +0 -0
  400. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/__init__.py +0 -0
  401. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/annotations.py +0 -0
  402. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  403. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  404. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/callables/AGENTS.md +0 -0
  405. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/callables/__init__.py +0 -0
  406. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/collections.py +0 -0
  407. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/compat.py +0 -0
  408. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/context.py +0 -0
  409. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/dispatch.py +0 -0
  410. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/dockerutils.py +0 -0
  411. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/engine/AGENTS.md +0 -0
  412. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/engine/__init__.py +0 -0
  413. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  414. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/filesystem/__init__.py +0 -0
  415. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/generics.py +0 -0
  416. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/hashing.py +0 -0
  417. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/importtools.py +0 -0
  418. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/math.py +0 -0
  419. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/names.py +0 -0
  420. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  421. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/processutils/__init__.py +0 -0
  422. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/pydantic.py +0 -0
  423. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/render_swagger.py +0 -0
  424. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  425. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  426. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  427. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
  428. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/services.py +0 -0
  429. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/slugify.py +0 -0
  430. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/templating/AGENTS.md +0 -0
  431. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/text.py +0 -0
  432. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/timeout.py +0 -0
  433. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/urls.py +0 -0
  434. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/utilities/visualization.py +0 -0
  435. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/variables.py +0 -0
  436. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/AGENTS.md +0 -0
  437. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/__init__.py +0 -0
  438. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_cleanup.py +0 -0
  439. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_cleanup_handlers.py +0 -0
  440. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  441. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_worker_channel/_state.py +0 -0
  442. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  443. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/block.py +0 -0
  444. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/cloud.py +0 -0
  445. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/process.py +0 -0
  446. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/server.py +0 -0
  447. {prefect_client-3.7.2.dev1 → prefect_client-3.7.2.dev3}/src/prefect/workers/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefect-client
3
- Version: 3.7.2.dev1
3
+ Version: 3.7.2.dev3
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
@@ -30,6 +30,7 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
30
30
  - **`ProcessPoolTaskRunner` instances may be deserialized without `__init__` running.** When a runner is pickled and restored in a subprocess, `__init__` is not called, so instance attributes set there may be absent. Access any such attribute via `getattr(self, "_attr", default)` rather than `self._attr` directly — both in the property getter and in `duplicate()`. The `subprocess_message_processor_factories` property demonstrates the required pattern.
31
31
  - **`ThreadPoolTaskRunner` is cloudpickled when a flow run is dispatched to a subprocess.** `threading.Lock` and other non-picklable thread primitives must be dropped in `__getstate__` and rebuilt in `__setstate__`. Any new instance state added to this class must be evaluated for picklability.
32
32
  - **Nested task submissions on a bounded `ThreadPoolTaskRunner` can deadlock.** When a worker task submits children and blocks on `.result()` while all `max_workers` threads are busy, the pool starves. `_warn_if_nested_submit_would_deadlock` detects this and emits a one-time warning — preserve this detection when changing pool management.
33
+ - **Result storage resolves through three tiers, potentially making an API call.** `get_default_result_storage()` checks: (1) `PREFECT_DEFAULT_RESULT_STORAGE_BLOCK` setting, (2) server-configured default block (API call to the server's Configuration store), (3) local storage path. The API call is silently suppressed on any HTTP error. Engines use `_get_default_persist_result()` — not `should_persist_result()` — at context setup time to auto-enable persistence when a server default block is configured. Do not swap `_get_default_persist_result()` back to `should_persist_result()` in engine initialization paths; `should_persist_result()` does not consult the server default.
33
34
  - **`ResultRecordMetadata` tolerates unknown serializer types.** When loading persisted metadata, an unrecognized serializer `type` is converted to an `UnknownSerializer` placeholder rather than raising `ValidationError`. This allows inspecting result metadata when the serializer implementation is unavailable in the current environment. However, known serializer types with invalid fields still raise `ValidationError`. `UnknownSerializer.dumps()` and `UnknownSerializer.loads()` raise `RuntimeError` — the tolerance is for inspection only, not actual serialization/deserialization.
34
35
  - **Flow-run suspension is enforced at orchestration boundaries.** Suspension is delivered via `FlowRunSuspensionRequest` and raised with `raise_if_flow_run_suspension_requested()`. When changing engines, futures, task runners, or generator execution, check before returning control to flow user code or proposing a flow state that could leave `Suspended`; keep sync/async paths aligned and avoid per-boundary API reads.
35
36
 
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.7.2.dev3"
3
+ __build_date__ = "2026-05-20 09:16:00.764815+00:00"
4
+ __git_commit__ = "30ca141845030af77328e2ebe495e200db2fc679"
5
+ __dirty__ = False
@@ -11,6 +11,7 @@ from prefect.events.actions import (
11
11
  CancelFlowRun,
12
12
  ChangeFlowRunState,
13
13
  DeclareIncident,
14
+ DeleteFlowRun,
14
15
  DoNothing,
15
16
  PauseAutomation,
16
17
  PauseDeployment,
@@ -61,6 +62,7 @@ __all__ = [
61
62
  "PauseDeployment",
62
63
  "ResumeDeployment",
63
64
  "CancelFlowRun",
65
+ "DeleteFlowRun",
64
66
  "ChangeFlowRunState",
65
67
  "PauseWorkQueue",
66
68
  "ResumeWorkQueue",
@@ -57,7 +57,15 @@ class AbstractAppriseNotificationBlock(NotificationBlock, ABC):
57
57
  body: str,
58
58
  subject: str | None = None,
59
59
  ) -> None:
60
- with LogEavesdropper("apprise", level=logging.DEBUG) as eavesdropper:
60
+ apprise_logger = logging.getLogger("apprise")
61
+ root_logger = logging.getLogger()
62
+
63
+ if apprise_logger.level == logging.NOTSET:
64
+ log_level = root_logger.getEffectiveLevel()
65
+ else:
66
+ log_level = max(apprise_logger.level, root_logger.getEffectiveLevel())
67
+
68
+ with LogEavesdropper("apprise", level=log_level) as eavesdropper:
61
69
  result = await self._apprise_client.async_notify( # pyright: ignore[reportUnknownMemberType] incomplete type hints in apprise
62
70
  body=body,
63
71
  title=subject or "",
@@ -72,7 +80,15 @@ class AbstractAppriseNotificationBlock(NotificationBlock, ABC):
72
80
  body: str,
73
81
  subject: str | None = None,
74
82
  ) -> None:
75
- with LogEavesdropper("apprise", level=logging.DEBUG) as eavesdropper:
83
+ apprise_logger = logging.getLogger("apprise")
84
+ root_logger = logging.getLogger()
85
+
86
+ if apprise_logger.level == logging.NOTSET:
87
+ log_level = root_logger.getEffectiveLevel()
88
+ else:
89
+ log_level = max(apprise_logger.level, root_logger.getEffectiveLevel())
90
+
91
+ with LogEavesdropper("apprise", level=log_level) as eavesdropper:
76
92
  result = self._apprise_client.notify( # pyright: ignore[reportUnknownMemberType] incomplete type hints in apprise
77
93
  body=body,
78
94
  title=subject or "",
@@ -593,8 +593,23 @@ def execute_bundle_in_subprocess(
593
593
 
594
594
  # Install dependencies if necessary
595
595
  if dependencies := bundle.get("dependencies"):
596
+ dep_lines = [line.strip() for line in dependencies.split("\n") if line.strip()]
597
+ validated_deps: list[str] = []
598
+ for dep_line in dep_lines:
599
+ if dep_line.startswith("-"):
600
+ raise ValueError(
601
+ f"Invalid dependency (command-line flags are not allowed): {dep_line!r}"
602
+ )
603
+ try:
604
+ Requirement(dep_line)
605
+ except InvalidRequirement as e:
606
+ raise ValueError(
607
+ f"Invalid PEP 508 dependency specifier: {dep_line!r}"
608
+ ) from e
609
+ validated_deps.append(dep_line)
610
+
596
611
  subprocess.check_call(
597
- [_get_uv_path(), "pip", "install", *dependencies.split("\n")],
612
+ [_get_uv_path(), "pip", "install", *validated_deps],
598
613
  # Copy the current environment to ensure we install into the correct venv
599
614
  env=os.environ,
600
615
  )
@@ -11,6 +11,7 @@ from __future__ import annotations
11
11
  import hashlib
12
12
  import logging
13
13
  import shutil
14
+ import struct
14
15
  import tempfile
15
16
  import zipfile
16
17
  from dataclasses import dataclass
@@ -32,7 +33,8 @@ class ZipResult:
32
33
 
33
34
  Attributes:
34
35
  zip_path: Path to the temporary zip file.
35
- sha256_hash: Lowercase hex digest of the zip content.
36
+ sha256_hash: SHA256 hex digest of the canonical bundled file contents
37
+ (paths, modes, and bytes), not the raw zip archive bytes.
36
38
  storage_key: Content-addressed storage key in format "files/{hash}.zip".
37
39
  size_bytes: Size of the zip file in bytes.
38
40
  """
@@ -95,16 +97,40 @@ class ZipBuilder:
95
97
  self._temp_dir = tempfile.mkdtemp(prefix="prefect-zip-")
96
98
  zip_path = Path(self._temp_dir) / "files.zip"
97
99
 
98
- # Build the zip with DEFLATED compression
100
+ # Build the zip and compute the content hash in a single pass so
101
+ # that every file is read exactly once, avoiding race conditions
102
+ # where a source file could change between the zip write and the
103
+ # hash computation.
104
+ hasher = hashlib.sha256()
105
+ hasher.update(b"prefect-bundle-files-v1\0")
106
+
99
107
  with zipfile.ZipFile(zip_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
100
108
  for file_path in sorted_files:
101
- # Compute relative path with forward slashes
102
109
  rel_path = file_path.relative_to(self.base_dir)
103
110
  arcname = str(rel_path).replace("\\", "/")
104
- zf.write(file_path, arcname)
105
111
 
106
- # Compute SHA256 hash using chunked reading
107
- sha256_hash = self._compute_hash(zip_path)
112
+ file_stat = file_path.stat()
113
+
114
+ arcname_bytes = arcname.encode("utf-8")
115
+ hasher.update(struct.pack(">I", len(arcname_bytes)))
116
+ hasher.update(arcname_bytes)
117
+ hasher.update(struct.pack(">I", file_stat.st_mode & 0xFFFF))
118
+ hasher.update(struct.pack(">Q", file_stat.st_size))
119
+
120
+ zip_info = zipfile.ZipInfo.from_file(file_path, arcname)
121
+ zip_info.compress_type = zipfile.ZIP_DEFLATED
122
+ with (
123
+ file_path.open("rb") as src,
124
+ zf.open(zip_info, "w") as dest,
125
+ ):
126
+ while True:
127
+ chunk = src.read(HASH_CHUNK_SIZE)
128
+ if not chunk:
129
+ break
130
+ dest.write(chunk)
131
+ hasher.update(chunk)
132
+
133
+ sha256_hash = hasher.hexdigest()
108
134
 
109
135
  # Get file size
110
136
  size_bytes = zip_path.stat().st_size
@@ -123,25 +149,6 @@ class ZipBuilder:
123
149
  size_bytes=size_bytes,
124
150
  )
125
151
 
126
- def _compute_hash(self, zip_path: Path) -> str:
127
- """
128
- Compute SHA256 hash of a file using chunked reading.
129
-
130
- Args:
131
- zip_path: Path to the file to hash.
132
-
133
- Returns:
134
- Lowercase hex digest of the SHA256 hash.
135
- """
136
- hasher = hashlib.sha256()
137
- with open(zip_path, "rb") as f:
138
- while True:
139
- chunk = f.read(HASH_CHUNK_SIZE)
140
- if not chunk:
141
- break
142
- hasher.update(chunk)
143
- return hasher.hexdigest()
144
-
145
152
  def _emit_size_warning(
146
153
  self, zip_path: Path, files: list[Path], size_bytes: int
147
154
  ) -> None:
@@ -31,6 +31,7 @@ from .actions import (
31
31
  ResumeDeployment,
32
32
  ChangeFlowRunState,
33
33
  CancelFlowRun,
34
+ DeleteFlowRun,
34
35
  SuspendFlowRun,
35
36
  CallWebhook,
36
37
  SendNotification,
@@ -78,6 +79,7 @@ __all__ = [
78
79
  "ResumeDeployment",
79
80
  "ChangeFlowRunState",
80
81
  "CancelFlowRun",
82
+ "DeleteFlowRun",
81
83
  "SuspendFlowRun",
82
84
  "CallWebhook",
83
85
  "SendNotification",
@@ -126,6 +126,12 @@ class CancelFlowRun(Action):
126
126
  type: Literal["cancel-flow-run"] = "cancel-flow-run"
127
127
 
128
128
 
129
+ class DeleteFlowRun(Action):
130
+ """Deletes a flow run associated with the trigger"""
131
+
132
+ type: Literal["delete-flow-run"] = "delete-flow-run"
133
+
134
+
129
135
  class ResumeFlowRun(Action):
130
136
  """Resumes a flow run associated with the trigger"""
131
137
 
@@ -294,6 +300,7 @@ ActionTypes: TypeAlias = Union[
294
300
  ResumeDeployment,
295
301
  ResumeFlowRun,
296
302
  CancelFlowRun,
303
+ DeleteFlowRun,
297
304
  ChangeFlowRunState,
298
305
  PauseWorkQueue,
299
306
  ResumeWorkQueue,
@@ -126,7 +126,6 @@ class ScheduledRunPoller:
126
126
  ),
127
127
  )
128
128
 
129
- submitted_ids: set[UUID] = set()
130
129
  for flow_run in submittable_flow_runs:
131
130
  if flow_run.id in self._submitting_flow_run_ids:
132
131
  continue
@@ -135,13 +134,12 @@ class ScheduledRunPoller:
135
134
  except anyio.WouldBlock:
136
135
  break # sorted: no earlier run fits
137
136
  self._submitting_flow_run_ids.add(flow_run.id)
138
- submitted_ids.add(flow_run.id)
139
137
  task_group.start_soon(self._submit_run, flow_run, task_group, slot_token)
140
138
 
141
139
  skipped_count = sum(
142
140
  1
143
141
  for r in submittable_flow_runs
144
- if r.id not in self._submitting_flow_run_ids and r.id not in submitted_ids
142
+ if r.id not in self._submitting_flow_run_ids
145
143
  )
146
144
  if skipped_count > 0:
147
145
  self._logger.info("%d scheduled runs skipped (at capacity)", skipped_count)
@@ -93,6 +93,9 @@ class OrchestrationClient(BaseClient):
93
93
  async def read_flow_run_raw(self, flow_run_id: UUID) -> Response:
94
94
  return await self._http_client.get(f"/flow_runs/{flow_run_id}")
95
95
 
96
+ async def delete_flow_run(self, flow_run_id: UUID) -> Response:
97
+ return await self._http_client.delete(f"/flow_runs/{flow_run_id}")
98
+
96
99
  async def read_task_run_raw(self, task_run_id: UUID) -> Response:
97
100
  return await self._http_client.get(f"/task_runs/{task_run_id}")
98
101