prefect-client 3.6.30.dev4__tar.gz → 3.7.1__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 (450) hide show
  1. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/PKG-INFO +1 -1
  2. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/AGENTS.md +4 -1
  3. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/__init__.py +4 -5
  4. prefect_client-3.7.1/src/prefect/_build_info.py +5 -0
  5. prefect_client-3.7.1/src/prefect/_experimental/_launchers.py +31 -0
  6. prefect_client-3.7.1/src/prefect/_experimental/bundles/__init__.py +68 -0
  7. prefect_client-3.7.1/src/prefect/_experimental/bundles/execute.py +46 -0
  8. prefect_client-3.7.1/src/prefect/_experimental/plugins/__init__.py +16 -0
  9. prefect_client-3.7.1/src/prefect/_experimental/plugins/apply.py +5 -0
  10. prefect_client-3.7.1/src/prefect/_experimental/plugins/diagnostics.py +7 -0
  11. prefect_client-3.7.1/src/prefect/_experimental/plugins/manager.py +7 -0
  12. prefect_client-3.7.1/src/prefect/_experimental/plugins/spec.py +7 -0
  13. prefect_client-3.7.1/src/prefect/_flow_run_suspension.py +136 -0
  14. prefect_client-3.7.1/src/prefect/_internal/compatibility/deprecated_paths.py +60 -0
  15. prefect_client-3.6.30.dev4/src/prefect/_experimental/_launchers.py → prefect_client-3.7.1/src/prefect/_internal/launchers.py +1 -1
  16. prefect_client-3.7.1/src/prefect/_internal/observers.py +494 -0
  17. prefect_client-3.7.1/src/prefect/_internal/plugins/__init__.py +7 -0
  18. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/apply.py +1 -1
  19. prefect_client-3.6.30.dev4/src/prefect/plugins.py → prefect_client-3.7.1/src/prefect/_internal/plugins/collections.py +5 -5
  20. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/diagnostics.py +1 -1
  21. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/manager.py +5 -2
  22. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/spec.py +7 -3
  23. prefect_client-3.6.30.dev4/src/prefect/_experimental/plugins/__init__.py → prefect_client-3.7.1/src/prefect/_internal/plugins/startup.py +16 -29
  24. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/core.py +21 -3
  25. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/__init__.py +18 -3
  26. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_file_collector.py +2 -2
  27. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/execute.py +6 -5
  28. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/AGENTS.md +2 -1
  29. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/__init__.py +1 -1
  30. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/actions.py +2 -2
  31. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/objects.py +1 -1
  32. prefect_client-3.7.1/src/prefect/client/schemas/worker_channel.py +590 -0
  33. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/AGENTS.md +2 -2
  34. prefect_client-3.7.1/src/prefect/concurrency/_leases.py +230 -0
  35. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/context.py +9 -1
  36. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/base.py +1 -1
  37. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/flow_runs.py +3 -3
  38. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/runner.py +1 -1
  39. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/docker/__init__.py +1 -1
  40. prefect_client-3.7.1/src/prefect/docker/_buildx.py +18 -0
  41. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/docker/docker_image.py +2 -2
  42. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/engine.py +1 -1
  43. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/AGENTS.md +2 -0
  44. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/clients.py +1 -1
  45. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/flow_engine.py +150 -51
  46. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/flow_runs.py +5 -0
  47. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/flows.py +9 -26
  48. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/futures.py +22 -1
  49. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/AGENTS.md +1 -0
  50. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/clients.py +1 -1
  51. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/loggers.py +12 -1
  52. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/main.py +1 -1
  53. prefect_client-3.7.1/src/prefect/plugins.py +76 -0
  54. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/results.py +1 -1
  55. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/AGENTS.md +3 -3
  56. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_cancellation_manager.py +21 -10
  57. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_deployment_registry.py +10 -1
  58. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_flow_run_executor.py +2 -2
  59. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_hook_runner.py +1 -1
  60. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_scheduled_run_poller.py +4 -7
  61. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_starter_bundle.py +3 -3
  62. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_starter_direct.py +5 -1
  63. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_starter_engine.py +8 -0
  64. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_workspace_starter.py +3 -0
  65. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/runner.py +49 -22
  66. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_documents.py +9 -3
  67. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/flow_runs.py +27 -15
  68. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/server.py +7 -1
  69. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/AGENTS.md +1 -0
  70. prefect_client-3.7.1/src/prefect/settings/models/experiments.py +88 -0
  71. prefect_client-3.7.1/src/prefect/settings/models/plugins.py +191 -0
  72. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/root.py +58 -0
  73. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/states.py +3 -3
  74. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_engine.py +15 -4
  75. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_runners.py +3 -0
  76. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/tasks.py +9 -2
  77. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/transactions.py +1 -1
  78. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/_datetime.py +30 -1
  79. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/AGENTS.md +0 -8
  80. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/engine/AGENTS.md +1 -1
  81. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/processutils/AGENTS.md +1 -1
  82. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/processutils/__init__.py +12 -1
  83. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/pydantic.py +1 -1
  84. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/AGENTS.md +1 -1
  85. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/templating/AGENTS.md +1 -0
  86. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/AGENTS.md +6 -0
  87. prefect_client-3.7.1/src/prefect/workers/_cleanup.py +660 -0
  88. prefect_client-3.7.1/src/prefect/workers/_cleanup_handlers.py +142 -0
  89. prefect_client-3.7.1/src/prefect/workers/_worker_channel/__init__.py +27 -0
  90. prefect_client-3.7.1/src/prefect/workers/_worker_channel/_protocol.py +399 -0
  91. prefect_client-3.7.1/src/prefect/workers/_worker_channel/_state.py +187 -0
  92. prefect_client-3.7.1/src/prefect/workers/_worker_channel/_sync.py +360 -0
  93. prefect_client-3.7.1/src/prefect/workers/_worker_channel/_transport.py +250 -0
  94. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/base.py +186 -175
  95. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/process.py +1 -1
  96. prefect_client-3.6.30.dev4/src/prefect/_build_info.py +0 -5
  97. prefect_client-3.6.30.dev4/src/prefect/_observers.py +0 -245
  98. prefect_client-3.6.30.dev4/src/prefect/concurrency/_leases.py +0 -190
  99. prefect_client-3.6.30.dev4/src/prefect/settings/models/experiments.py +0 -77
  100. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/.gitignore +0 -0
  101. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/LICENSE +0 -0
  102. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/README.md +0 -0
  103. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/hatch_build.py +0 -0
  104. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/pyproject.toml +0 -0
  105. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/.prefectignore +0 -0
  106. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/__main__.py +0 -0
  107. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/__init__.py +0 -0
  108. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/sla/__init__.py +0 -0
  109. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/sla/client.py +0 -0
  110. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/sla/objects.py +0 -0
  111. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/__init__.py +0 -0
  112. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/_logging.py +0 -0
  113. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/__init__.py +0 -0
  114. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  115. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/client.py +0 -0
  116. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/device_id.py +0 -0
  117. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/emit.py +0 -0
  118. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/enabled.py +0 -0
  119. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/events.py +0 -0
  120. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/milestones.py +0 -0
  121. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/notice.py +0 -0
  122. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/service.py +0 -0
  123. /prefect_client-3.6.30.dev4/src/prefect/utilities/_ast.py → /prefect_client-3.7.1/src/prefect/_internal/ast_utils.py +0 -0
  124. /prefect_client-3.6.30.dev4/src/prefect/docker/_buildx.py → /prefect_client-3.7.1/src/prefect/_internal/buildx.py +0 -0
  125. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/__init__.py +0 -0
  126. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  127. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/backports.py +0 -0
  128. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/blocks.py +0 -0
  129. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  130. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/migration.py +0 -0
  131. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/starlette.py +0 -0
  132. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/__init__.py +0 -0
  133. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/api.py +0 -0
  134. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/calls.py +0 -0
  135. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  136. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  137. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/inspection.py +0 -0
  138. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/primitives.py +0 -0
  139. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/services.py +0 -0
  140. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/threads.py +0 -0
  141. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/waiters.py +0 -0
  142. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/control_listener.py +0 -0
  143. /prefect_client-3.6.30.dev4/src/prefect/utilities/_deprecated.py → /prefect_client-3.7.1/src/prefect/_internal/deprecated.py +0 -0
  144. /prefect_client-3.6.30.dev4/src/prefect/utilities/_engine.py → /prefect_client-3.7.1/src/prefect/_internal/engine.py +0 -0
  145. /prefect_client-3.6.30.dev4/src/prefect/utilities/_git.py → /prefect_client-3.7.1/src/prefect/_internal/git.py +0 -0
  146. /prefect_client-3.6.30.dev4/src/prefect/utilities/_infrastructure_exit_codes.py → /prefect_client-3.7.1/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  147. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/installation.py +0 -0
  148. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/integrations.py +0 -0
  149. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/lazy.py +0 -0
  150. /prefect_client-3.6.30.dev4/src/prefect/telemetry/_metrics.py → /prefect_client-3.7.1/src/prefect/_internal/metrics.py +0 -0
  151. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/observability.py +0 -0
  152. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/__init__.py +0 -0
  153. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/schemas.py +0 -0
  154. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  155. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  156. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  157. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pytz.py +0 -0
  158. /prefect_client-3.6.30.dev4/src/prefect/_result_records.py → /prefect_client-3.7.1/src/prefect/_internal/result_records.py +0 -0
  159. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/retries.py +0 -0
  160. /prefect_client-3.6.30.dev4/src/prefect/types/_schema.py → /prefect_client-3.7.1/src/prefect/_internal/schema.py +0 -0
  161. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/__init__.py +0 -0
  162. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/bases.py +0 -0
  163. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/fields.py +0 -0
  164. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/serializers.py +0 -0
  165. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/validators.py +0 -0
  166. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  167. /prefect_client-3.6.30.dev4/src/prefect/_states.py → /prefect_client-3.7.1/src/prefect/_internal/states.py +0 -0
  168. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/testing.py +0 -0
  169. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/urls.py +0 -0
  170. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/uuid7.py +0 -0
  171. /prefect_client-3.6.30.dev4/src/prefect/client/_version_checking.py → /prefect_client-3.7.1/src/prefect/_internal/version_checking.py +0 -0
  172. /prefect_client-3.6.30.dev4/src/prefect/_versioning.py → /prefect_client-3.7.1/src/prefect/_internal/versioning.py +0 -0
  173. /prefect_client-3.6.30.dev4/src/prefect/_waiters.py → /prefect_client-3.7.1/src/prefect/_internal/waiters.py +0 -0
  174. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/websockets.py +0 -0
  175. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/__init__.py +0 -0
  176. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/fetcher.py +0 -0
  177. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/generator.py +0 -0
  178. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/models.py +0 -0
  179. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/naming.py +0 -0
  180. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/renderer.py +0 -0
  181. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/schema_converter.py +0 -0
  182. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/templates/__init__.py +0 -0
  183. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  184. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/types.py +0 -0
  185. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/unions.py +0 -0
  186. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_vendor/croniter/__init__.py +0 -0
  187. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_vendor/croniter/croniter.py +0 -0
  188. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/agent.py +0 -0
  189. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/analytics/__init__.py +0 -0
  190. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/artifacts.py +0 -0
  191. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/assets/__init__.py +0 -0
  192. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/assets/core.py +0 -0
  193. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/assets/materialize.py +0 -0
  194. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/automations.py +0 -0
  195. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/AGENTS.md +0 -0
  196. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/__init__.py +0 -0
  197. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/abstract.py +0 -0
  198. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/fields.py +0 -0
  199. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/notifications.py +0 -0
  200. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/redis.py +0 -0
  201. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/system.py +0 -0
  202. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/webhook.py +0 -0
  203. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_ignore_filter.py +0 -0
  204. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_path_resolver.py +0 -0
  205. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_zip_builder.py +0 -0
  206. {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_zip_extractor.py +0 -0
  207. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/cache_policies.py +0 -0
  208. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/__init__.py +0 -0
  209. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/attribution.py +0 -0
  210. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/base.py +0 -0
  211. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/cloud.py +0 -0
  212. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/collections.py +0 -0
  213. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/constants.py +0 -0
  214. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  215. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  216. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  217. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_automations/client.py +0 -0
  218. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  219. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  220. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  221. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  222. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  223. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  224. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  225. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  226. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  227. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  228. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  229. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_events/client.py +0 -0
  230. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  231. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  232. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  233. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flows/client.py +0 -0
  234. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  235. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_logs/client.py +0 -0
  236. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  237. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_variables/client.py +0 -0
  238. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  239. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  240. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/base.py +0 -0
  241. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/routes.py +0 -0
  242. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/__init__.py +0 -0
  243. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/events.py +0 -0
  244. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/filters.py +0 -0
  245. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/responses.py +0 -0
  246. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/schedules.py +0 -0
  247. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/sorting.py +0 -0
  248. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/subscriptions.py +0 -0
  249. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/types/__init__.py +0 -0
  250. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  251. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/utilities.py +0 -0
  252. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/__init__.py +0 -0
  253. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/_asyncio.py +0 -0
  254. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/_events.py +0 -0
  255. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/_sync.py +0 -0
  256. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/asyncio.py +0 -0
  257. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/context.py +0 -0
  258. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/services.py +0 -0
  259. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/sync.py +0 -0
  260. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/__init__.py +0 -0
  261. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  262. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/_events.py +0 -0
  263. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/asyncio.py +0 -0
  264. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/context.py +0 -0
  265. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/services.py +0 -0
  266. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/sync.py +0 -0
  267. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/AGENTS.md +0 -0
  268. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/__init__.py +0 -0
  269. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/deployments.py +0 -0
  270. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/schedules.py +0 -0
  271. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/__init__.py +0 -0
  272. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/core.py +0 -0
  273. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/pull.py +0 -0
  274. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/utility.py +0 -0
  275. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/__init__.py +0 -0
  276. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/actions.py +0 -0
  277. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/filters.py +0 -0
  278. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/related.py +0 -0
  279. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/__init__.py +0 -0
  280. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/automations.py +0 -0
  281. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  282. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/events.py +0 -0
  283. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/labelling.py +0 -0
  284. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/subscribers.py +0 -0
  285. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/utilities.py +0 -0
  286. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/worker.py +0 -0
  287. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/exceptions.py +0 -0
  288. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/filesystems.py +0 -0
  289. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/__init__.py +0 -0
  290. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/base.py +0 -0
  291. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  292. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  293. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  294. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  295. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  296. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  297. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/input/__init__.py +0 -0
  298. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/input/actions.py +0 -0
  299. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/input/run_input.py +0 -0
  300. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/__init__.py +0 -0
  301. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/_filelock.py +0 -0
  302. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/filesystem.py +0 -0
  303. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/memory.py +0 -0
  304. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/protocol.py +0 -0
  305. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/__init__.py +0 -0
  306. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/configuration.py +0 -0
  307. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/filters.py +0 -0
  308. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/formatters.py +0 -0
  309. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/handlers.py +0 -0
  310. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/highlighters.py +0 -0
  311. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/logging.yml +0 -0
  312. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/py.typed +0 -0
  313. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/__init__.py +0 -0
  314. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_cancel_finalizer.py +0 -0
  315. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_control_channel.py +0 -0
  316. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_event_emitter.py +0 -0
  317. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_flow_resolver.py +0 -0
  318. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_limit_manager.py +0 -0
  319. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_process_manager.py +0 -0
  320. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_state_proposer.py +0 -0
  321. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_workspace_resolver.py +0 -0
  322. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/server.py +0 -0
  323. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/storage.py +0 -0
  324. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/__init__.py +0 -0
  325. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/deployment.py +0 -0
  326. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/flow_run.py +0 -0
  327. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/task_run.py +0 -0
  328. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/schedules.py +0 -0
  329. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/serializers.py +0 -0
  330. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/__init__.py +0 -0
  331. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/admin.py +0 -0
  332. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/artifacts.py +0 -0
  333. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/automations.py +0 -0
  334. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/background_workers.py +0 -0
  335. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_capabilities.py +0 -0
  336. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_schemas.py +0 -0
  337. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_types.py +0 -0
  338. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/clients.py +0 -0
  339. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/collections.py +0 -0
  340. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  341. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/concurrency_limits.py +0 -0
  342. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  343. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/csrf_token.py +0 -0
  344. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/dependencies.py +0 -0
  345. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/deployments.py +0 -0
  346. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/events.py +0 -0
  347. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/flow_run_states.py +0 -0
  348. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/flows.py +0 -0
  349. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/logs.py +0 -0
  350. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/middleware.py +0 -0
  351. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/root.py +0 -0
  352. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/run_history.py +0 -0
  353. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/saved_searches.py +0 -0
  354. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  355. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/task_run_states.py +0 -0
  356. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/task_runs.py +0 -0
  357. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/task_workers.py +0 -0
  358. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/templates.py +0 -0
  359. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/__init__.py +0 -0
  360. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/flow_runs.py +0 -0
  361. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/flows.py +0 -0
  362. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/schemas.py +0 -0
  363. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/task_runs.py +0 -0
  364. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/validation.py +0 -0
  365. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/variables.py +0 -0
  366. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/work_queues.py +0 -0
  367. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/workers.py +0 -0
  368. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/__init__.py +0 -0
  369. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/base.py +0 -0
  370. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/constants.py +0 -0
  371. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/context.py +0 -0
  372. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/legacy.py +0 -0
  373. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/__init__.py +0 -0
  374. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/_defaults.py +0 -0
  375. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/api.py +0 -0
  376. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/cli.py +0 -0
  377. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/client.py +0 -0
  378. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/cloud.py +0 -0
  379. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/deployments.py +0 -0
  380. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/events.py +0 -0
  381. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/flows.py +0 -0
  382. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/internal.py +0 -0
  383. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/logging.py +0 -0
  384. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/results.py +0 -0
  385. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/runner.py +0 -0
  386. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/__init__.py +0 -0
  387. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/api.py +0 -0
  388. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/concurrency.py +0 -0
  389. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/database.py +0 -0
  390. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/deployments.py +0 -0
  391. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/docket.py +0 -0
  392. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/ephemeral.py +0 -0
  393. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/events.py +0 -0
  394. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  395. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/logs.py +0 -0
  396. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/root.py +0 -0
  397. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/services.py +0 -0
  398. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/tasks.py +0 -0
  399. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/ui.py +0 -0
  400. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/tasks.py +0 -0
  401. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/telemetry.py +0 -0
  402. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/testing.py +0 -0
  403. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/worker.py +0 -0
  404. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/profiles.py +0 -0
  405. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/profiles.toml +0 -0
  406. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/sources.py +0 -0
  407. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_runs.py +0 -0
  408. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_worker.py +0 -0
  409. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/telemetry/__init__.py +0 -0
  410. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/telemetry/run_telemetry.py +0 -0
  411. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/__init__.py +0 -0
  412. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/_concurrency.py +0 -0
  413. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/entrypoint.py +0 -0
  414. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/names.py +0 -0
  415. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/__init__.py +0 -0
  416. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/annotations.py +0 -0
  417. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  418. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  419. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/callables/AGENTS.md +0 -0
  420. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/callables/__init__.py +0 -0
  421. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/collections.py +0 -0
  422. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/compat.py +0 -0
  423. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/context.py +0 -0
  424. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/dispatch.py +0 -0
  425. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/dockerutils.py +0 -0
  426. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/engine/__init__.py +0 -0
  427. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  428. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/filesystem/__init__.py +0 -0
  429. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/generics.py +0 -0
  430. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/hashing.py +0 -0
  431. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/importtools.py +0 -0
  432. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/math.py +0 -0
  433. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/names.py +0 -0
  434. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/render_swagger.py +0 -0
  435. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  436. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  437. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/validation.py +0 -0
  438. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/services.py +0 -0
  439. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/slugify.py +0 -0
  440. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/templating/__init__.py +0 -0
  441. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/text.py +0 -0
  442. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/timeout.py +0 -0
  443. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/urls.py +0 -0
  444. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/visualization.py +0 -0
  445. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/variables.py +0 -0
  446. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/__init__.py +0 -0
  447. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/block.py +0 -0
  448. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/cloud.py +0 -0
  449. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/server.py +0 -0
  450. {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/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.6.30.dev4
3
+ Version: 3.7.1
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
@@ -23,7 +23,7 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
23
23
  - **Engine ordering matters.** The engines apply features (retries, caching, result persistence, transactions) in a specific order. Changing the order or forgetting a feature in one engine path is the most common source of breakage.
24
24
  - **Set run metadata before state transitions.** Any run attribute that event subscribers observe at the moment of a state transition (e.g., custom `flow_run_name`) must be persisted to the server *before* `set_state()` is called for that transition. Metadata set after the call appears stale to subscribers of that state event.
25
25
  - **Sync and async must stay in sync.** Both `flow_engine.py` and `task_engine.py` have sync and async paths. Any behavior change must be applied to both.
26
- - **Use `whenever` compat helpers for all datetime conversions on Python 3.13+.** `types/_datetime.py` provides `now()`, `_whenever_to_stdlib()`, `_whenever_zdt_from_py()`, and `_whenever_pdt_from_py()` to abstract over API differences between whenever 0.7.x–0.9.x and ≥ 0.10.0. The `_WHENEVER_NEW_API` flag (True when whenever ≥ 0.10.0) guards version-specific code. Never call `DateTime.now()` or `pendulum.now()` directly — use `now()` from `types/_datetime.py` instead. Never call `ZonedDateTime.from_py_datetime()`, `PlainDateTime.from_py_datetime()`, or `.py_datetime()` directly — use the helpers instead. Violations will silently break on whichever whenever version the helpers weren't written for.
26
+ - **Use `whenever` compat helpers for all datetime conversions on Python 3.13+.** `types/_datetime.py` provides `now()`, `_whenever_to_stdlib()`, `_whenever_zdt_from_py()`, and `_whenever_pdt_from_py()` to abstract over API differences between whenever 0.7.x–0.9.x and ≥ 0.10.0. The `_WHENEVER_NEW_API` flag (True when whenever ≥ 0.10.0) guards version-specific code. Never call `DateTime.now()` or `pendulum.now()` directly — use `now()` from `types/_datetime.py` instead. Avoid no-argument `datetime.datetime.now()` because it returns a tz-naive datetime that raises `TypeError` when compared to the tz-aware datetimes produced by `now()`. Explicitly timezone-aware stdlib calls such as `datetime.now(ZoneInfo("UTC"))` are allowed when needed to preserve timezone information. Never call `ZonedDateTime.from_py_datetime()`, `PlainDateTime.from_py_datetime()`, or `.py_datetime()` directly — use the helpers instead. Violations will silently break on whichever whenever version the helpers weren't written for.
27
27
  - **Flow and task engines advance state differently.** The flow engine makes blocking API calls to the server to propose and advance states. The task engine emits `prefect.task_run.*` events (delivered via WebSockets) but advances state locally through `set_state` calls with polling/backoff — do not assume the two engines work the same way.
28
28
  - **Flow state transitions go through the server.** The flow engine proposes states to the server, which accepts or rejects them via orchestration rules. The task engine, by contrast, manages state transitions locally via `set_state` and emits `prefect.task_run.*` events — it does not propose states to the server.
29
29
  - **`ProcessPoolTaskRunner` requires picklable data across subprocess boundaries.** `PrefectFuture` objects are not picklable and cannot be passed to worker subprocesses. Any `wait_for` futures must be waited on in the parent process and converted to `State` objects before submission. The subprocess task engine handles `State` objects via `resolve_to_final_result`, which raises `UpstreamTaskError` for non-completed upstreams.
@@ -31,6 +31,7 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
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
33
  - **`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
+ - **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.
34
35
 
35
36
  ## Logging
36
37
 
@@ -58,6 +59,8 @@ Use `get_logger()` from `prefect.logging` instead of raw `logging.getLogger()`
58
59
  - `utilities/` → Cross-cutting helpers: async utils, schema hydration, callables introspection, and more (see utilities/AGENTS.md)
59
60
  - `blocks/` → Server-persisted configuration objects for external service credentials and settings (see blocks/AGENTS.md)
60
61
  - `workers/` → Work-pool-based execution layer: polls for flow runs, dispatches to infrastructure (see workers/AGENTS.md)
62
+ - `bundles/` → Flow bundling for remote execution (`create_bundle_for_flow_run`, cloudpickle+gzip); used by workers when dispatching `InfrastructureBoundFlow` runs; `execute_bundle_from_file` is lazy-loaded via `__getattr__` to avoid `runpy` warnings when invoked as `python -m prefect.bundles.execute`
63
+ - `plugins.py` → Stable public surface for startup hooks and `prefect.collections` entrypoint loading; pluggy symbols are lazy-loaded so `prefect-client` builds (which don't ship pluggy) can still import `load_prefect_collections` without error
61
64
  - `docker/` → `DockerImage` class for building and pushing Docker images during deployment
62
65
  - `telemetry/` → OS-level resource metric collection and run telemetry
63
66
  - `testing/` → Test utilities shipped with the SDK: `prefect_test_harness`, assertion helpers, and reusable fixtures (see testing/AGENTS.md)
@@ -78,25 +78,24 @@ del _build_info, pathlib
78
78
 
79
79
  def _initialize_plugins() -> None:
80
80
  """
81
- Initialize the experimental plugin system if enabled.
81
+ Initialize the plugin system if enabled.
82
82
 
83
83
  This runs automatically when Prefect is imported and plugins are enabled
84
- via experiments.plugins.enabled setting. Errors are logged but don't prevent
84
+ via the `plugins.enabled` setting. Errors are logged but don't prevent
85
85
  Prefect from loading.
86
86
  """
87
87
  try:
88
88
  # Import here to avoid circular imports and defer cost until needed
89
89
  from prefect.settings import get_current_settings
90
90
 
91
- if not get_current_settings().experiments.plugins.enabled:
91
+ if not get_current_settings().plugins.enabled:
92
92
  return
93
93
 
94
94
  import anyio
95
95
 
96
- from prefect._experimental.plugins import run_startup_hooks
97
- from prefect._experimental.plugins.spec import HookContext
98
96
  from prefect.context import refresh_global_settings_context
99
97
  from prefect.logging import get_logger
98
+ from prefect.plugins import HookContext, run_startup_hooks
100
99
  from prefect.settings import get_current_settings
101
100
 
102
101
  ctx = HookContext(
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.7.1"
3
+ __build_date__ = "2026-05-16 02:18:55.839608+00:00"
4
+ __git_commit__ = "e914068ebe6fb04552cfd9d68bf6ac12563bb4f1"
5
+ __dirty__ = False
@@ -0,0 +1,31 @@
1
+ """
2
+ Compatibility shim for the legacy `prefect._experimental._launchers` path.
3
+
4
+ The launcher utilities graduated to GA at `prefect._internal.launchers` when the
5
+ infrastructure decorators feature became stable. This module re-exports
6
+ the public symbols from the new location and emits a
7
+ `DeprecationWarning` so consumers know to migrate.
8
+ """
9
+
10
+ import warnings
11
+
12
+ from prefect._internal.launchers import (
13
+ get_launcher_for_side,
14
+ normalize_launcher,
15
+ resolve_bundle_step_with_launcher,
16
+ validate_bundle_step_launcher,
17
+ )
18
+
19
+ warnings.warn(
20
+ "`prefect._experimental._launchers` has moved to `prefect._internal.launchers`. "
21
+ "The old import path will be removed in a future release.",
22
+ DeprecationWarning,
23
+ stacklevel=2,
24
+ )
25
+
26
+ __all__ = [
27
+ "get_launcher_for_side",
28
+ "normalize_launcher",
29
+ "resolve_bundle_step_with_launcher",
30
+ "validate_bundle_step_launcher",
31
+ ]
@@ -0,0 +1,68 @@
1
+ """
2
+ Compatibility shim for the legacy `prefect._experimental.bundles` path.
3
+
4
+ The bundle implementation graduated to GA at `prefect.bundles` when the
5
+ infrastructure decorators feature became stable. This package keeps the
6
+ old import path importable (and `python -m`-runnable for the legacy
7
+ `...bundles.execute` entrypoint), but emits a `DeprecationWarning` so
8
+ consumers know to migrate to `prefect.bundles`.
9
+ """
10
+
11
+ import warnings
12
+ from typing import Any
13
+
14
+ from prefect.bundles import (
15
+ BundleCreationResult,
16
+ BundleLauncher,
17
+ BundleLauncherOverride,
18
+ BundleLauncherSide,
19
+ SerializedBundle,
20
+ aupload_bundle_to_storage,
21
+ convert_step_to_command,
22
+ create_bundle_for_flow_run,
23
+ execute_bundle_in_subprocess,
24
+ extract_flow_from_bundle,
25
+ upload_bundle_to_storage,
26
+ )
27
+ from prefect.bundles import _pin_prefect_in_bundle_step_requires # noqa: F401
28
+
29
+ warnings.warn(
30
+ "`prefect._experimental.bundles` has moved to `prefect.bundles`. "
31
+ "The old import path will be removed in a future release.",
32
+ DeprecationWarning,
33
+ stacklevel=2,
34
+ )
35
+
36
+ __all__ = [
37
+ "BundleCreationResult",
38
+ "BundleLauncher",
39
+ "BundleLauncherOverride",
40
+ "BundleLauncherSide",
41
+ "SerializedBundle",
42
+ "aupload_bundle_to_storage",
43
+ "convert_step_to_command",
44
+ "create_bundle_for_flow_run",
45
+ "execute_bundle_from_file",
46
+ "execute_bundle_in_subprocess",
47
+ "extract_flow_from_bundle",
48
+ "upload_bundle_to_storage",
49
+ ]
50
+
51
+
52
+ def __getattr__(name: str) -> Any:
53
+ """Lazy-load `execute_bundle_from_file` from the `.execute` submodule
54
+ so importing this package does not pre-populate
55
+ `sys.modules["prefect._experimental.bundles.execute"]`. That would
56
+ make `python -m prefect._experimental.bundles.execute` emit a
57
+ `runpy` `RuntimeWarning` and hard-fail under
58
+ `PYTHONWARNINGS=error`. Accessing the legacy `.execute` submodule
59
+ by attribute (rather than importing it eagerly) still works because
60
+ Python binds it on the package after a separate `from . import
61
+ execute` (the legacy execute shim is reachable via plain
62
+ `import prefect._experimental.bundles.execute`).
63
+ """
64
+ if name == "execute_bundle_from_file":
65
+ from prefect.bundles.execute import execute_bundle_from_file
66
+
67
+ return execute_bundle_from_file
68
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -0,0 +1,46 @@
1
+ """
2
+ Compatibility shim for the legacy `prefect._experimental.bundles.execute`
3
+ entrypoint.
4
+
5
+ Existing work pool storage configurations may have stored the command
6
+ `python -m prefect._experimental.bundles.execute --key ...` before the
7
+ bundle implementation graduated to GA. This module re-exports the new
8
+ `prefect.bundles.execute` symbols and forwards `python -m` execution to
9
+ the new entrypoint, while emitting a `DeprecationWarning` so users know
10
+ to migrate to `prefect.bundles.execute`.
11
+ """
12
+
13
+ import warnings
14
+ from typing import Any
15
+
16
+ warnings.warn(
17
+ "`prefect._experimental.bundles.execute` has moved to "
18
+ "`prefect.bundles.execute`. The old import path will be removed in a "
19
+ "future release.",
20
+ DeprecationWarning,
21
+ stacklevel=2,
22
+ )
23
+
24
+ __all__ = ["execute_bundle", "execute_bundle_from_file"] # noqa: F822
25
+
26
+
27
+ def __getattr__(name: str) -> Any:
28
+ """Lazy-load symbols from `prefect.bundles.execute` so that running
29
+ `python -m prefect._experimental.bundles.execute` does not put
30
+ `prefect.bundles.execute` in `sys.modules` before the
31
+ `runpy.run_module` forward below executes — that would trigger a
32
+ runpy `RuntimeWarning` (and hard-fail under `PYTHONWARNINGS=error`).
33
+ """
34
+ if name in {"execute_bundle", "execute_bundle_from_file"}:
35
+ from prefect.bundles.execute import execute_bundle, execute_bundle_from_file
36
+
37
+ if name == "execute_bundle":
38
+ return execute_bundle
39
+ return execute_bundle_from_file
40
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
41
+
42
+
43
+ if __name__ == "__main__":
44
+ import runpy
45
+
46
+ runpy.run_module("prefect.bundles.execute", run_name="__main__")
@@ -0,0 +1,16 @@
1
+ """
2
+ Deprecated. Use `prefect.plugins` instead.
3
+
4
+ The plugin system has graduated from experimental to general availability.
5
+ Imports from this path continue to work but emit a `DeprecationWarning`.
6
+ """
7
+
8
+ from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
9
+
10
+ # Names are lazily resolved by `__getattr__` below; ruff's F822 (undefined
11
+ # name in __all__) doesn't fit this deprecation-shim pattern.
12
+ # fmt: off
13
+ __all__ = ("run_startup_hooks", "HookContext", "SetupResult", "HookSpec", "SetupSummary", "PREFECT_PLUGIN_API_VERSION", "register_hook") # noqa: F822
14
+ # fmt: on
15
+
16
+ __getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
@@ -0,0 +1,5 @@
1
+ """Deprecated. The contents of this module were never public API."""
2
+
3
+ from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
4
+
5
+ __getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", ())
@@ -0,0 +1,7 @@
1
+ """Deprecated. Use `prefect.plugins` instead."""
2
+
3
+ from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
4
+
5
+ __all__ = ("SetupSummary",) # noqa: F822 - lazily resolved by `__getattr__`
6
+
7
+ __getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
@@ -0,0 +1,7 @@
1
+ """Deprecated. Use `prefect.plugins` instead."""
2
+
3
+ from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
4
+
5
+ __all__ = ("register_hook",) # noqa: F822 - lazily resolved by `__getattr__`
6
+
7
+ __getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
@@ -0,0 +1,7 @@
1
+ """Deprecated. Use `prefect.plugins` instead."""
2
+
3
+ from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
4
+
5
+ __all__ = ("HookContext", "SetupResult", "HookSpec", "PREFECT_PLUGIN_API_VERSION") # noqa: F822 - names lazily resolved by `__getattr__`
6
+
7
+ __getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
@@ -0,0 +1,136 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ import contextvars
5
+ import threading
6
+ from contextlib import contextmanager
7
+ from typing import Generator
8
+ from uuid import UUID
9
+
10
+ from prefect.client.schemas.objects import State
11
+ from prefect.exceptions import Pause
12
+ from prefect.logging.loggers import get_logger
13
+
14
+
15
+ class FlowRunSuspensionRequest:
16
+ """
17
+ Mutable in-process suspension request shared by flow, child flow, and task contexts.
18
+
19
+ The stored state is the server-accepted `Suspended` state that should be raised
20
+ through Prefect's existing `Pause` control-flow path at the next orchestration
21
+ boundary.
22
+ """
23
+
24
+ def __init__(self) -> None:
25
+ self._suspended_state: State | None = None
26
+ self._lock = threading.Lock()
27
+
28
+ def mark_requested(self, state: State) -> None:
29
+ with self._lock:
30
+ self._suspended_state = state
31
+
32
+ def get_state(self) -> State | None:
33
+ with self._lock:
34
+ return self._suspended_state
35
+
36
+ def is_requested(self) -> bool:
37
+ return self.get_state() is not None
38
+
39
+ def raise_if_requested(self) -> None:
40
+ if state := self.get_state():
41
+ raise Pause(state=state)
42
+
43
+
44
+ def is_suspended_flow_run_state(state: State | None) -> bool:
45
+ return bool(state and state.is_paused() and state.name == "Suspended")
46
+
47
+
48
+ _active_flow_run_suspension_requests: dict[UUID, FlowRunSuspensionRequest] = {}
49
+ _active_flow_run_suspension_requests_lock = threading.Lock()
50
+
51
+
52
+ @contextmanager
53
+ def register_flow_run_suspension_request(
54
+ flow_run_id: UUID,
55
+ suspension_request: FlowRunSuspensionRequest,
56
+ ) -> Generator[None, None, None]:
57
+ with _active_flow_run_suspension_requests_lock:
58
+ _active_flow_run_suspension_requests[flow_run_id] = suspension_request
59
+
60
+ try:
61
+ yield
62
+ finally:
63
+ with _active_flow_run_suspension_requests_lock:
64
+ if (
65
+ _active_flow_run_suspension_requests.get(flow_run_id)
66
+ is suspension_request
67
+ ):
68
+ _active_flow_run_suspension_requests.pop(flow_run_id, None)
69
+
70
+
71
+ def mark_flow_run_suspension_requested(flow_run_id: UUID, state: State) -> bool:
72
+ with _active_flow_run_suspension_requests_lock:
73
+ suspension_request = _active_flow_run_suspension_requests.get(flow_run_id)
74
+
75
+ if suspension_request is None:
76
+ return False
77
+
78
+ suspension_request.mark_requested(state)
79
+ return True
80
+
81
+
82
+ def raise_if_flow_run_suspension_requested() -> None:
83
+ from prefect.context import FlowRunContext
84
+
85
+ if flow_run_context := FlowRunContext.get():
86
+ flow_run_context.flow_run_suspension_request.raise_if_requested()
87
+
88
+
89
+ @contextmanager
90
+ def observe_flow_run_suspension(
91
+ flow_run_id: UUID,
92
+ suspension_request: FlowRunSuspensionRequest,
93
+ polling_interval: float = 10,
94
+ ) -> Generator[None, None, None]:
95
+ from prefect._internal.observers import FlowRunSuspendingObserver
96
+
97
+ logger = get_logger("flow_run_suspension")
98
+ stop_event = threading.Event()
99
+ ready_event = threading.Event()
100
+
101
+ def mark_suspended(flow_run_id: UUID, state: State) -> None:
102
+ if not mark_flow_run_suspension_requested(flow_run_id, state):
103
+ suspension_request.mark_requested(state)
104
+
105
+ async def run_observer() -> None:
106
+ async with FlowRunSuspendingObserver(
107
+ on_suspended=mark_suspended,
108
+ polling_interval=polling_interval,
109
+ ) as observer:
110
+ await observer.watch_flow_run_id(flow_run_id)
111
+ ready_event.set()
112
+ while not stop_event.is_set():
113
+ await asyncio.sleep(0.2)
114
+
115
+ context = contextvars.copy_context()
116
+
117
+ def observer_thread() -> None:
118
+ try:
119
+ context.run(lambda: asyncio.run(run_observer()))
120
+ except Exception:
121
+ logger.debug(
122
+ "Flow run suspension observer exited with an exception",
123
+ exc_info=True,
124
+ )
125
+ finally:
126
+ ready_event.set()
127
+
128
+ thread = threading.Thread(target=observer_thread, daemon=True)
129
+ thread.start()
130
+ ready_event.wait()
131
+
132
+ try:
133
+ yield
134
+ finally:
135
+ stop_event.set()
136
+ thread.join(timeout=2)
@@ -0,0 +1,60 @@
1
+ """
2
+ Generic helper for keeping a deprecated module path working as a re-export
3
+ of a new location, emitting a DeprecationWarning per attribute access.
4
+
5
+ Independent of any specific Prefect version migration. Intended for cases
6
+ where a feature graduates between lifecycle stages (e.g., experimental to
7
+ GA) and we want the old import path to continue working with a clear hand
8
+ off message, but without coupling to the v2->v3 module migration helpers
9
+ in `prefect._internal.compatibility.migration`.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import importlib
15
+ import warnings
16
+ from typing import Any, Callable, Iterable
17
+
18
+
19
+ def deprecated_module_attrs(
20
+ old_module: str,
21
+ new_module: str,
22
+ names: Iterable[str],
23
+ ) -> Callable[[str], Any]:
24
+ """
25
+ Build a `__getattr__` for a deprecated module that re-exports public
26
+ symbols from a new location. Each access emits a DeprecationWarning
27
+ pointing the user at the new path.
28
+
29
+ Symbols not in `names` raise `AttributeError` (rather than being
30
+ silently re-exported) — this keeps the public surface explicit and
31
+ avoids leaking implementation details that the new location does not
32
+ intend to expose.
33
+
34
+ Usage at the bottom of the deprecated module:
35
+
36
+ from prefect._internal.compatibility.deprecated_paths import (
37
+ deprecated_module_attrs,
38
+ )
39
+
40
+ __getattr__ = deprecated_module_attrs(
41
+ __name__,
42
+ "prefect.plugins",
43
+ ("register_hook", "HookContext"),
44
+ )
45
+ """
46
+ name_set = frozenset(names)
47
+
48
+ def __getattr__(name: str) -> Any:
49
+ if name in name_set:
50
+ warnings.warn(
51
+ f"`{old_module}.{name}` has moved to `{new_module}.{name}`. "
52
+ f"Update your imports; the old path will be removed in a "
53
+ f"future release.",
54
+ DeprecationWarning,
55
+ stacklevel=2,
56
+ )
57
+ return getattr(importlib.import_module(new_module), name)
58
+ raise AttributeError(f"module {old_module!r} has no attribute {name!r}")
59
+
60
+ return __getattr__
@@ -4,7 +4,7 @@ from copy import deepcopy
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
6
  if TYPE_CHECKING:
7
- from prefect._experimental.bundles import (
7
+ from prefect.bundles import (
8
8
  BundleLauncher,
9
9
  BundleLauncherOverride,
10
10
  BundleLauncherSide,