prefect-client 3.8.9.dev1__tar.gz → 3.8.9.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 (458) hide show
  1. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/PKG-INFO +1 -1
  2. prefect_client-3.8.9.dev3/src/prefect/_build_info.py +5 -0
  3. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/server_maintenance.py +12 -0
  4. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/base.py +6 -0
  5. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/AGENTS.md +4 -0
  6. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/server.py +7 -2
  7. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/storage.py +95 -32
  8. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/base.py +10 -7
  9. prefect_client-3.8.9.dev1/src/prefect/_build_info.py +0 -5
  10. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/.gitignore +0 -0
  11. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/LICENSE +0 -0
  12. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/README.md +0 -0
  13. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/hatch_build.py +0 -0
  14. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/pyproject.toml +0 -0
  15. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/.prefectignore +0 -0
  16. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/AGENTS.md +0 -0
  17. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/__init__.py +0 -0
  18. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/__main__.py +0 -0
  19. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/__init__.py +0 -0
  20. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/_launchers.py +0 -0
  21. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
  22. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
  23. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/plugins/__init__.py +0 -0
  24. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/plugins/apply.py +0 -0
  25. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  26. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/plugins/manager.py +0 -0
  27. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/plugins/spec.py +0 -0
  28. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
  29. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/sla/client.py +0 -0
  30. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
  31. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_flow_run_suspension.py +0 -0
  32. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/__init__.py +0 -0
  33. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/_logging.py +0 -0
  34. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/__init__.py +0 -0
  35. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  36. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/client.py +0 -0
  37. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/device_id.py +0 -0
  38. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/emit.py +0 -0
  39. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/enabled.py +0 -0
  40. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/events.py +0 -0
  41. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/milestones.py +0 -0
  42. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/notice.py +0 -0
  43. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/analytics/service.py +0 -0
  44. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/ast_utils.py +0 -0
  45. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/attempt_control.py +0 -0
  46. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/buildx.py +0 -0
  47. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
  48. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  49. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/backports.py +0 -0
  50. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/blocks.py +0 -0
  51. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  52. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  53. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
  54. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/compatibility/starlette.py +0 -0
  55. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
  56. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
  57. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
  58. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  59. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  60. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
  61. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
  62. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
  63. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
  64. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
  65. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/control_listener.py +0 -0
  66. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/deprecated.py +0 -0
  67. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/engine.py +0 -0
  68. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/git.py +0 -0
  69. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  70. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/installation.py +0 -0
  71. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/integrations.py +0 -0
  72. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/launchers.py +0 -0
  73. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/lazy.py +0 -0
  74. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/metrics.py +0 -0
  75. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/observability.py +0 -0
  76. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/observers.py +0 -0
  77. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/__init__.py +0 -0
  78. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/apply.py +0 -0
  79. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/collections.py +0 -0
  80. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  81. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/manager.py +0 -0
  82. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/spec.py +0 -0
  83. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/plugins/startup.py +0 -0
  84. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
  85. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
  86. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  87. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  88. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  89. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/pytz.py +0 -0
  90. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/result_records.py +0 -0
  91. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/retries.py +0 -0
  92. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schema.py +0 -0
  93. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
  94. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schemas/_registry.py +0 -0
  95. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
  96. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
  97. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
  98. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/schemas/validators.py +0 -0
  99. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  100. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/states.py +0 -0
  101. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/testing.py +0 -0
  102. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/urls.py +0 -0
  103. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/uuid7.py +0 -0
  104. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/version_checking.py +0 -0
  105. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/versioning.py +0 -0
  106. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/waiters.py +0 -0
  107. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_internal/websockets.py +0 -0
  108. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/__init__.py +0 -0
  109. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/fetcher.py +0 -0
  110. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/generator.py +0 -0
  111. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/models.py +0 -0
  112. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/naming.py +0 -0
  113. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/renderer.py +0 -0
  114. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/schema_converter.py +0 -0
  115. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/templates/__init__.py +0 -0
  116. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  117. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/types.py +0 -0
  118. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_sdk/unions.py +0 -0
  119. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
  120. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
  121. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/agent.py +0 -0
  122. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/analytics/__init__.py +0 -0
  123. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/artifacts.py +0 -0
  124. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/assets/__init__.py +0 -0
  125. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/assets/core.py +0 -0
  126. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/assets/materialize.py +0 -0
  127. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/automations.py +0 -0
  128. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/AGENTS.md +0 -0
  129. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/__init__.py +0 -0
  130. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/abstract.py +0 -0
  131. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/core.py +0 -0
  132. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/fields.py +0 -0
  133. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/notifications.py +0 -0
  134. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/redis.py +0 -0
  135. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/system.py +0 -0
  136. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/blocks/webhook.py +0 -0
  137. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/__init__.py +0 -0
  138. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/_file_collector.py +0 -0
  139. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/_ignore_filter.py +0 -0
  140. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/_path_resolver.py +0 -0
  141. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/_zip_builder.py +0 -0
  142. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/_zip_extractor.py +0 -0
  143. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/bundles/execute.py +0 -0
  144. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/cache_policies.py +0 -0
  145. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/AGENTS.md +0 -0
  146. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/__init__.py +0 -0
  147. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/attribution.py +0 -0
  148. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/base.py +0 -0
  149. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/cloud.py +0 -0
  150. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/collections.py +0 -0
  151. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/constants.py +0 -0
  152. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/__init__.py +0 -0
  153. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  154. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  155. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  156. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
  157. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  158. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  159. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  160. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  161. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  162. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  163. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  164. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  165. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  166. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  167. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  168. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_events/client.py +0 -0
  169. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  170. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  171. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  172. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
  173. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  174. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
  175. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  176. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
  177. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  178. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  179. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/base.py +0 -0
  180. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/orchestration/routes.py +0 -0
  181. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/__init__.py +0 -0
  182. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/actions.py +0 -0
  183. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/events.py +0 -0
  184. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/filters.py +0 -0
  185. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/objects.py +0 -0
  186. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/responses.py +0 -0
  187. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/schedules.py +0 -0
  188. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/sorting.py +0 -0
  189. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/schemas/worker_channel.py +0 -0
  190. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/subscriptions.py +0 -0
  191. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/types/__init__.py +0 -0
  192. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  193. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/client/utilities.py +0 -0
  194. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/AGENTS.md +0 -0
  195. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/__init__.py +0 -0
  196. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
  197. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/_events.py +0 -0
  198. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/_leases.py +0 -0
  199. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/_sync.py +0 -0
  200. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/asyncio.py +0 -0
  201. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/context.py +0 -0
  202. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/services.py +0 -0
  203. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/sync.py +0 -0
  204. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
  205. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  206. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
  207. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
  208. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/context.py +0 -0
  209. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/services.py +0 -0
  210. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
  211. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/context.py +0 -0
  212. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/AGENTS.md +0 -0
  213. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/__init__.py +0 -0
  214. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/deployments.py +0 -0
  215. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/flow_runs.py +0 -0
  216. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/runner.py +0 -0
  217. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/schedules.py +0 -0
  218. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
  219. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/steps/core.py +0 -0
  220. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/steps/pull.py +0 -0
  221. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/deployments/steps/utility.py +0 -0
  222. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/docker/__init__.py +0 -0
  223. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/docker/_buildx.py +0 -0
  224. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/docker/docker_image.py +0 -0
  225. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/engine.py +0 -0
  226. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/AGENTS.md +0 -0
  227. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/__init__.py +0 -0
  228. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/actions.py +0 -0
  229. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/clients.py +0 -0
  230. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/filters.py +0 -0
  231. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/related.py +0 -0
  232. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/schemas/__init__.py +0 -0
  233. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/schemas/automations.py +0 -0
  234. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  235. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/schemas/events.py +0 -0
  236. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/schemas/labelling.py +0 -0
  237. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/subscribers.py +0 -0
  238. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/utilities.py +0 -0
  239. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/events/worker.py +0 -0
  240. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/exceptions.py +0 -0
  241. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/filesystems.py +0 -0
  242. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/flow_engine.py +0 -0
  243. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/flow_runs.py +0 -0
  244. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/flows.py +0 -0
  245. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/futures.py +0 -0
  246. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/__init__.py +0 -0
  247. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/base.py +0 -0
  248. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  249. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  250. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  251. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  252. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  253. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  254. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/input/__init__.py +0 -0
  255. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/input/actions.py +0 -0
  256. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/input/run_input.py +0 -0
  257. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/locking/__init__.py +0 -0
  258. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/locking/_filelock.py +0 -0
  259. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/locking/filesystem.py +0 -0
  260. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/locking/memory.py +0 -0
  261. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/locking/protocol.py +0 -0
  262. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/AGENTS.md +0 -0
  263. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/__init__.py +0 -0
  264. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/clients.py +0 -0
  265. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/configuration.py +0 -0
  266. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/filters.py +0 -0
  267. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/formatters.py +0 -0
  268. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/handlers.py +0 -0
  269. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/highlighters.py +0 -0
  270. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/loggers.py +0 -0
  271. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/logging/logging.yml +0 -0
  272. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/main.py +0 -0
  273. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/plugins.py +0 -0
  274. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/py.typed +0 -0
  275. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/results.py +0 -0
  276. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/__init__.py +0 -0
  277. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_cancel_finalizer.py +0 -0
  278. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_cancellation_manager.py +0 -0
  279. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_control_channel.py +0 -0
  280. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_deployment_registry.py +0 -0
  281. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_event_emitter.py +0 -0
  282. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_flow_resolver.py +0 -0
  283. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_flow_run_executor.py +0 -0
  284. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_hook_runner.py +0 -0
  285. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_limit_manager.py +0 -0
  286. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_process_manager.py +0 -0
  287. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_scheduled_run_poller.py +0 -0
  288. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_starter_bundle.py +0 -0
  289. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_starter_direct.py +0 -0
  290. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_starter_engine.py +0 -0
  291. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_state_proposer.py +0 -0
  292. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_uv_command.py +0 -0
  293. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_workspace_hook_runner.py +0 -0
  294. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_workspace_resolver.py +0 -0
  295. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_workspace_runtime.py +0 -0
  296. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
  297. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_workspace_starter.py +0 -0
  298. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/_workspace_supervisor.py +0 -0
  299. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runner/runner.py +0 -0
  300. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runtime/__init__.py +0 -0
  301. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runtime/deployment.py +0 -0
  302. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runtime/flow_run.py +0 -0
  303. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/runtime/task_run.py +0 -0
  304. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/schedules.py +0 -0
  305. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/serializers.py +0 -0
  306. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/__init__.py +0 -0
  307. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/_ui_static.py +0 -0
  308. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/admin.py +0 -0
  309. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/artifacts.py +0 -0
  310. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/automations.py +0 -0
  311. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/background_workers.py +0 -0
  312. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
  313. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/block_documents.py +0 -0
  314. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/block_schemas.py +0 -0
  315. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/block_types.py +0 -0
  316. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/clients.py +0 -0
  317. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/collections.py +0 -0
  318. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  319. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
  320. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  321. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/csrf_token.py +0 -0
  322. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/dependencies.py +0 -0
  323. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/deployments.py +0 -0
  324. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/events.py +0 -0
  325. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
  326. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/flow_runs.py +0 -0
  327. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/flows.py +0 -0
  328. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/logs.py +0 -0
  329. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/middleware.py +0 -0
  330. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/root.py +0 -0
  331. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/run_history.py +0 -0
  332. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/saved_searches.py +0 -0
  333. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/server.py +0 -0
  334. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  335. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/task_run_states.py +0 -0
  336. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/task_runs.py +0 -0
  337. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/task_workers.py +0 -0
  338. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/templates.py +0 -0
  339. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
  340. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
  341. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/ui/flows.py +0 -0
  342. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
  343. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
  344. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/validation.py +0 -0
  345. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/variables.py +0 -0
  346. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/work_queues.py +0 -0
  347. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/server/api/workers.py +0 -0
  348. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/AGENTS.md +0 -0
  349. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/__init__.py +0 -0
  350. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/_types.py +0 -0
  351. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/base.py +0 -0
  352. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/constants.py +0 -0
  353. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/context.py +0 -0
  354. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/legacy.py +0 -0
  355. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/__init__.py +0 -0
  356. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/_defaults.py +0 -0
  357. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/api.py +0 -0
  358. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/cli.py +0 -0
  359. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/client.py +0 -0
  360. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/cloud.py +0 -0
  361. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/deployments.py +0 -0
  362. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/events.py +0 -0
  363. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/experiments.py +0 -0
  364. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/flows.py +0 -0
  365. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/internal.py +0 -0
  366. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/logging.py +0 -0
  367. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/plugins.py +0 -0
  368. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/results.py +0 -0
  369. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/root.py +0 -0
  370. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/runner.py +0 -0
  371. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
  372. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/api.py +0 -0
  373. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/concurrency.py +0 -0
  374. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/database.py +0 -0
  375. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
  376. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/docket.py +0 -0
  377. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
  378. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/events.py +0 -0
  379. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  380. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/logs.py +0 -0
  381. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/root.py +0 -0
  382. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/services.py +0 -0
  383. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
  384. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/ui.py +0 -0
  385. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/server/worker_channel.py +0 -0
  386. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/tasks.py +0 -0
  387. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/telemetry.py +0 -0
  388. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/testing.py +0 -0
  389. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/models/worker.py +0 -0
  390. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/profiles.py +0 -0
  391. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/profiles.toml +0 -0
  392. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/settings/sources.py +0 -0
  393. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/states.py +0 -0
  394. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/task_engine.py +0 -0
  395. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/task_runners.py +0 -0
  396. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/task_runs.py +0 -0
  397. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/task_worker.py +0 -0
  398. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/tasks.py +0 -0
  399. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/telemetry/__init__.py +0 -0
  400. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
  401. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/transactions.py +0 -0
  402. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/types/__init__.py +0 -0
  403. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/types/_concurrency.py +0 -0
  404. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/types/_datetime.py +0 -0
  405. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/types/entrypoint.py +0 -0
  406. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/types/names.py +0 -0
  407. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/AGENTS.md +0 -0
  408. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/__init__.py +0 -0
  409. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/annotations.py +0 -0
  410. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  411. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  412. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/callables/AGENTS.md +0 -0
  413. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/callables/__init__.py +0 -0
  414. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/collections.py +0 -0
  415. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/compat.py +0 -0
  416. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/context.py +0 -0
  417. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/dispatch.py +0 -0
  418. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/dockerutils.py +0 -0
  419. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/engine/AGENTS.md +0 -0
  420. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/engine/__init__.py +0 -0
  421. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  422. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/filesystem/__init__.py +0 -0
  423. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/generics.py +0 -0
  424. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/hashing.py +0 -0
  425. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/importtools.py +0 -0
  426. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/math.py +0 -0
  427. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/names.py +0 -0
  428. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  429. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/processutils/__init__.py +0 -0
  430. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/pydantic.py +0 -0
  431. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/render_swagger.py +0 -0
  432. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  433. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  434. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  435. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
  436. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/services.py +0 -0
  437. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/slugify.py +0 -0
  438. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/templating/AGENTS.md +0 -0
  439. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/templating/__init__.py +0 -0
  440. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/text.py +0 -0
  441. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/timeout.py +0 -0
  442. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/urls.py +0 -0
  443. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/utilities/visualization.py +0 -0
  444. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/variables.py +0 -0
  445. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/AGENTS.md +0 -0
  446. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/__init__.py +0 -0
  447. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_cleanup.py +0 -0
  448. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_cleanup_handlers.py +0 -0
  449. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  450. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
  451. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_worker_channel/_state.py +0 -0
  452. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_worker_channel/_sync.py +0 -0
  453. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  454. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/block.py +0 -0
  455. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/cloud.py +0 -0
  456. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/process.py +0 -0
  457. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/src/prefect/workers/server.py +0 -0
  458. {prefect_client-3.8.9.dev1 → prefect_client-3.8.9.dev3}/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.9.dev1
3
+ Version: 3.8.9.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
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.8.9.dev3"
3
+ __build_date__ = "2026-10-13 08:25:07.499701+00:00"
4
+ __git_commit__ = "302beb37eb79cd6ba37fcaa9fa002c4429b45702"
5
+ __dirty__ = False
@@ -39,6 +39,18 @@ def maintenance_backoff_ends_at() -> datetime.datetime | None:
39
39
  return _backoff_ends_at
40
40
 
41
41
 
42
+ def polling_window_start(last_polled: datetime.datetime) -> datetime.datetime:
43
+ """
44
+ When the polling window of a process that last polled at `last_polled`
45
+ starts: the later of `last_polled` and the end of the latest maintenance
46
+ back-off, since a poll cannot complete while it waits out maintenance.
47
+ """
48
+ backoff_ends_at = maintenance_backoff_ends_at()
49
+ if backoff_ends_at is not None and backoff_ends_at > last_polled:
50
+ return backoff_ends_at
51
+ return last_polled
52
+
53
+
42
54
  def reset_maintenance_backoff() -> None:
43
55
  """Forget any recorded maintenance back-off (for tests)."""
44
56
  global _backoff_ends_at
@@ -47,6 +47,12 @@ def create_default_prefect_yaml(
47
47
 
48
48
  import prefect
49
49
 
50
+ if name is None:
51
+ name = path.resolve().name
52
+
53
+ if contents is None:
54
+ contents = {}
55
+
50
56
  contents["prefect-version"] = prefect.__version__
51
57
  contents["name"] = name
52
58
 
@@ -47,6 +47,10 @@ Thin facade over single-responsibility extracted classes. New behavior belongs i
47
47
 
48
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
+ ## Webserver Health Check
51
+
52
+ The health check must not count a maintenance wait as a missed poll. Requests answered with `Prefect-Maintenance: true` retry indefinitely, so a poll can block for an entire Cloud maintenance window. `perform_health_check()` in `server.py` measures from `polling_window_start()` (`prefect._internal.server_maintenance`), the same rule the worker health check uses. `last_polled` is `None` until the first poll completes, so the health check measures from its own creation until then.
53
+
50
54
  ## EventEmitter WebSocket Degradation
51
55
 
52
56
  `EventEmitter.__aenter__` catches connection failures and silently swaps the failed client for a `NullEventsClient` — events are non-critical telemetry (the runner emits only `prefect.runner.cancelled-flow-run`), so the flow run must not crash when the events WebSocket is unreachable. Two failure classes are caught (`_NONFATAL_CONNECTION_EXCEPTIONS`): permanent rejections (`websockets.exceptions.InvalidStatus`, i.e. HTTP 4xx — e.g. a client ≤3.6.13 connecting to a server ≥3.6.14 with `PREFECT_SERVER_API_AUTH_STRING` configured) and transient failures (`RETRYABLE_EXCEPTIONS` from `events/clients.py`: `ConnectionClosed`, `TimeoutError`, `OSError`) that outlive the events client's own reconnection attempts. A `WARNING` is logged. If `__aenter__` raises, `__aexit__` is **not** called on the original client (it was never successfully entered); the replacement `NullEventsClient` is entered instead.
@@ -8,6 +8,7 @@ from fastapi import APIRouter, FastAPI, status
8
8
  from fastapi.responses import JSONResponse
9
9
  from typing_extensions import Literal
10
10
 
11
+ from prefect._internal.server_maintenance import polling_window_start
11
12
  from prefect.logging import get_logger
12
13
  from prefect.settings import (
13
14
  PREFECT_RUNNER_POLL_FREQUENCY,
@@ -46,9 +47,13 @@ def perform_health_check(
46
47
  * PREFECT_RUNNER_POLL_FREQUENCY.value()
47
48
  )
48
49
 
50
+ # Until the first poll completes, measure from when the health check
51
+ # started: startup and the first poll may be waiting out API maintenance.
52
+ started_at = now_fn("UTC")
53
+
49
54
  def _health_check():
50
- now = now_fn("UTC")
51
- poll_delay = (now - runner.last_polled).total_seconds()
55
+ last_polled = runner.last_polled or started_at
56
+ poll_delay = (now_fn("UTC") - polling_window_start(last_polled)).total_seconds()
52
57
 
53
58
  if TYPE_CHECKING:
54
59
  assert delay_threshold is not None
@@ -375,20 +375,40 @@ class GitRepository:
375
375
  except Exception:
376
376
  return False
377
377
 
378
+ async def _has_commit(self) -> bool:
379
+ """
380
+ Check if the commit SHA resolves to a commit in the local repository.
381
+ """
382
+ try:
383
+ await run_process(
384
+ ["git", "cat-file", "-e", f"{self._commit_sha}^{{commit}}"],
385
+ cwd=self.destination,
386
+ )
387
+ except Exception:
388
+ return False
389
+ return True
390
+
378
391
  async def is_current_commit(self) -> bool:
379
392
  """
380
- Check if the current commit is the same as the commit SHA
393
+ Check if `HEAD` is the commit referenced by the commit SHA.
394
+
395
+ Returns `False` if the commit SHA does not resolve to a commit in the
396
+ local repository.
381
397
  """
382
398
  if not self._commit_sha:
383
399
  raise ValueError("No commit SHA provided")
384
400
  try:
385
- result = await run_process(
386
- ["git", "rev-parse", self._commit_sha],
401
+ head = await run_process(
402
+ ["git", "rev-parse", "HEAD"],
403
+ cwd=self.destination,
404
+ )
405
+ target = await run_process(
406
+ ["git", "rev-parse", "--verify", f"{self._commit_sha}^{{commit}}"],
387
407
  cwd=self.destination,
388
408
  )
389
- return result.stdout.decode().strip() == self._commit_sha
390
409
  except Exception:
391
410
  return False
411
+ return head.stdout.decode().strip() == target.stdout.decode().strip()
392
412
 
393
413
  async def pull_code(self) -> None:
394
414
  """
@@ -454,31 +474,28 @@ class GitRepository:
454
474
 
455
475
  # If the commit is already checked out, skip the pull
456
476
  if self._commit_sha and await self.is_current_commit():
477
+ await self._update_submodules()
457
478
  return
458
479
 
459
- # If checking out a specific commit, fetch the latest changes and unshallow the repository if necessary
480
+ # If checking out a specific commit, fetch it unless it is already
481
+ # available locally, unshallowing the repository if necessary
460
482
  elif self._commit_sha:
461
- if await self.is_shallow_clone():
462
- cmd += ["fetch", "origin", "--unshallow"]
463
- else:
464
- cmd += ["fetch", "origin", self._commit_sha]
465
- try:
466
- await run_process(cmd, cwd=self.destination)
467
- self._logger.debug("Successfully fetched latest changes")
468
- except subprocess.CalledProcessError as exc:
469
- self._logger.error(
470
- f"Failed to fetch latest changes with exit code {exc}"
471
- )
472
- _rmtree_including_read_only(self.destination)
473
- await self._clone_repo()
474
-
475
- await run_process(
476
- ["git", "checkout", self._commit_sha],
477
- cwd=self.destination,
478
- )
479
- self._logger.debug(
480
- f"Successfully checked out commit {self._commit_sha}"
481
- )
483
+ if not await self._has_commit():
484
+ if await self.is_shallow_clone():
485
+ cmd += ["fetch", "origin", "--unshallow", self._commit_sha]
486
+ else:
487
+ cmd += ["fetch", "origin", self._commit_sha]
488
+ try:
489
+ await run_process(cmd, cwd=self.destination)
490
+ self._logger.debug("Successfully fetched latest changes")
491
+ except subprocess.CalledProcessError as exc:
492
+ self._logger.error(
493
+ f"Failed to fetch latest changes with exit code {exc}"
494
+ )
495
+ _rmtree_including_read_only(self.destination)
496
+ await self._clone_repo()
497
+
498
+ await self._checkout_commit(self._commit_sha)
482
499
 
483
500
  # Otherwise, pull the latest changes from the branch
484
501
  else:
@@ -501,6 +518,57 @@ class GitRepository:
501
518
  else:
502
519
  await self._clone_repo()
503
520
 
521
+ async def _checkout_commit(self, commit_sha: str) -> None:
522
+ """
523
+ Checks out the commit SHA, updating submodules if they are included.
524
+ """
525
+ await run_process(
526
+ ["git", "checkout", commit_sha],
527
+ cwd=self.destination,
528
+ )
529
+ await self._update_submodules()
530
+ self._logger.debug(f"Successfully checked out commit {commit_sha}")
531
+
532
+ async def _update_submodules(self) -> None:
533
+ """
534
+ Updates submodules to the revisions recorded in `HEAD` if they are included.
535
+ """
536
+ if not self._include_submodules:
537
+ return
538
+ try:
539
+ await run_process(
540
+ [
541
+ "git",
542
+ *self._git_config,
543
+ "submodule",
544
+ "update",
545
+ "--init",
546
+ "--recursive",
547
+ ],
548
+ cwd=self.destination,
549
+ )
550
+ except subprocess.CalledProcessError as exc:
551
+ # Hide the command used to avoid leaking credentials from the git config
552
+ parsed_url = urlparse(self._url)
553
+ exc_chain = (
554
+ None
555
+ if self._credentials or parsed_url.password or parsed_url.username
556
+ else exc
557
+ )
558
+ sanitized_stderr = strip_auth_from_urls_in_text(
559
+ _decode_stderr(exc),
560
+ extra_secrets=_url_auth_secrets(
561
+ self._url, self._repository_url_with_credentials
562
+ ),
563
+ ).strip()
564
+ error_message = (
565
+ f"Failed to update submodules with exit code {exc.returncode}."
566
+ )
567
+ if sanitized_stderr:
568
+ tail = " | ".join(sanitized_stderr.splitlines()[-3:])
569
+ error_message += f" git stderr: {tail}"
570
+ raise RuntimeError(error_message) from exc_chain
571
+
504
572
  async def _clone_repo(self):
505
573
  """
506
574
  Clones the repository into the local destination.
@@ -583,12 +651,7 @@ class GitRepository:
583
651
  ["git", "fetch", "origin", self._commit_sha],
584
652
  cwd=self.destination,
585
653
  )
586
- # Checkout the specific commit
587
- await run_process(
588
- ["git", "checkout", self._commit_sha],
589
- cwd=self.destination,
590
- )
591
- self._logger.debug(f"Successfully checked out commit {self._commit_sha}")
654
+ await self._checkout_commit(self._commit_sha)
592
655
 
593
656
  # Once repository is cloned and the repo is in sparse-checkout mode then grow the working directory
594
657
  if self._directories:
@@ -38,7 +38,7 @@ from prefect._internal.infrastructure_exit_codes import get_infrastructure_exit_
38
38
  from prefect._internal.launchers import resolve_bundle_step_with_launcher
39
39
  from prefect._internal.observers import FlowRunCancellingObserver
40
40
  from prefect._internal.schemas.validators import return_v_or_none
41
- from prefect._internal.server_maintenance import maintenance_backoff_ends_at
41
+ from prefect._internal.server_maintenance import polling_window_start
42
42
  from prefect.client.orchestration import PrefectClient, get_client
43
43
  from prefect.client.schemas.objects import Flow as APIFlow
44
44
  from prefect.client.schemas.objects import (
@@ -137,13 +137,8 @@ def _is_within_polling_window(
137
137
  it sends, so the window counts from the later of `last_polled_time` and the
138
138
  end of the latest maintenance back-off.
139
139
  """
140
- window_start = last_polled_time
141
- backoff_ends_at = maintenance_backoff_ends_at()
142
- if backoff_ends_at is not None and backoff_ends_at > window_start:
143
- window_start = backoff_ends_at
144
-
145
140
  seconds_since_window_start = (
146
- prefect.types._datetime.now("UTC") - window_start
141
+ prefect.types._datetime.now("UTC") - polling_window_start(last_polled_time)
147
142
  ).total_seconds()
148
143
  return seconds_since_window_start <= query_interval_seconds * 30
149
144
 
@@ -1548,6 +1543,14 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
1548
1543
  " in progress."
1549
1544
  )
1550
1545
  break
1546
+ except RuntimeError as exc:
1547
+ if "already holding" not in str(exc):
1548
+ raise
1549
+ self._logger.warning(
1550
+ f"Duplicate submission of flow run '{flow_run.id}' detected. Worker"
1551
+ " will not re-submit flow run."
1552
+ )
1553
+ continue
1551
1554
  else:
1552
1555
  run_logger = self.get_flow_run_logger(flow_run)
1553
1556
  run_logger.info(
@@ -1,5 +0,0 @@
1
- # Generated by versioningit
2
- __version__ = "3.8.9.dev1"
3
- __build_date__ = "2026-10-07 08:22:05.387495+00:00"
4
- __git_commit__ = "6c7fefcb8729546e9a7b5b63e310669370348106"
5
- __dirty__ = False