prefect-client 3.4.24.dev3__tar.gz → 3.4.24.dev4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/PKG-INFO +1 -1
  2. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/__init__.py +51 -0
  3. prefect_client-3.4.24.dev4/src/prefect/_build_info.py +5 -0
  4. prefect_client-3.4.24.dev4/src/prefect/_experimental/plugins/__init__.py +139 -0
  5. prefect_client-3.4.24.dev4/src/prefect/_experimental/plugins/apply.py +62 -0
  6. prefect_client-3.4.24.dev4/src/prefect/_experimental/plugins/diagnostics.py +25 -0
  7. prefect_client-3.4.24.dev4/src/prefect/_experimental/plugins/manager.py +133 -0
  8. prefect_client-3.4.24.dev4/src/prefect/_experimental/plugins/spec.py +85 -0
  9. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/cli/automations.py +30 -0
  10. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/input/run_input.py +4 -1
  11. prefect_client-3.4.24.dev4/src/prefect/settings/models/experiments.py +77 -0
  12. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/task_runners.py +120 -16
  13. prefect_client-3.4.24.dev3/src/prefect/_build_info.py +0 -5
  14. prefect_client-3.4.24.dev3/src/prefect/settings/models/experiments.py +0 -24
  15. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/.gitignore +0 -0
  16. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/LICENSE +0 -0
  17. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/README.md +0 -0
  18. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/pyproject.toml +0 -0
  19. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/.prefectignore +0 -0
  20. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/AGENTS.md +0 -0
  21. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/__main__.py +0 -0
  22. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_experimental/__init__.py +0 -0
  23. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
  24. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
  25. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
  26. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_experimental/sla/client.py +0 -0
  27. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
  28. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/__init__.py +0 -0
  29. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/_logging.py +0 -0
  30. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
  31. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  32. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
  33. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  34. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
  35. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/compatibility/starlette.py +0 -0
  36. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
  37. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
  38. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
  39. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  40. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  41. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
  42. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
  43. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/services.py +0 -0
  44. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
  45. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
  46. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/installation.py +0 -0
  47. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/integrations.py +0 -0
  48. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
  49. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
  50. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  51. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  52. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  53. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/pytz.py +0 -0
  54. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/retries.py +0 -0
  55. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
  56. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
  57. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
  58. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
  59. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/schemas/validators.py +0 -0
  60. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/uuid7.py +0 -0
  61. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_internal/websockets.py +0 -0
  62. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_result_records.py +0 -0
  63. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
  64. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
  65. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_versioning.py +0 -0
  66. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/_waiters.py +0 -0
  67. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/agent.py +0 -0
  68. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/artifacts.py +0 -0
  69. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/assets/__init__.py +0 -0
  70. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/assets/core.py +0 -0
  71. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/assets/materialize.py +0 -0
  72. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/automations.py +0 -0
  73. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/__init__.py +0 -0
  74. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/abstract.py +0 -0
  75. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/core.py +0 -0
  76. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/fields.py +0 -0
  77. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/notifications.py +0 -0
  78. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/redis.py +0 -0
  79. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/system.py +0 -0
  80. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/blocks/webhook.py +0 -0
  81. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/cache_policies.py +0 -0
  82. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/__init__.py +0 -0
  83. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/base.py +0 -0
  84. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/cloud.py +0 -0
  85. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/collections.py +0 -0
  86. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/constants.py +0 -0
  87. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
  88. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  89. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  90. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  91. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
  92. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  93. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  94. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  95. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  96. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  97. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  98. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  99. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  100. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  101. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  102. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  103. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  104. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  105. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
  106. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  107. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
  108. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  109. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
  110. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  111. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  112. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/base.py +0 -0
  113. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/orchestration/routes.py +0 -0
  114. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/__init__.py +0 -0
  115. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/actions.py +0 -0
  116. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/filters.py +0 -0
  117. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/objects.py +0 -0
  118. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/responses.py +0 -0
  119. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/schedules.py +0 -0
  120. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/schemas/sorting.py +0 -0
  121. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/subscriptions.py +0 -0
  122. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/types/__init__.py +0 -0
  123. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  124. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/client/utilities.py +0 -0
  125. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/__init__.py +0 -0
  126. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
  127. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/_events.py +0 -0
  128. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/_leases.py +0 -0
  129. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/asyncio.py +0 -0
  130. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/context.py +0 -0
  131. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/services.py +0 -0
  132. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/sync.py +0 -0
  133. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
  134. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  135. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
  136. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
  137. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/context.py +0 -0
  138. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/services.py +0 -0
  139. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
  140. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/context.py +0 -0
  141. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/__init__.py +0 -0
  142. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/base.py +0 -0
  143. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/deployments.py +0 -0
  144. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/flow_runs.py +0 -0
  145. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/runner.py +0 -0
  146. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/schedules.py +0 -0
  147. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
  148. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/steps/core.py +0 -0
  149. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/steps/pull.py +0 -0
  150. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/deployments/steps/utility.py +0 -0
  151. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/docker/__init__.py +0 -0
  152. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/docker/docker_image.py +0 -0
  153. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/engine.py +0 -0
  154. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/__init__.py +0 -0
  155. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/actions.py +0 -0
  156. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/cli/__init__.py +0 -0
  157. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/clients.py +0 -0
  158. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/filters.py +0 -0
  159. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/related.py +0 -0
  160. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/schemas/__init__.py +0 -0
  161. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/schemas/automations.py +0 -0
  162. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  163. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/schemas/events.py +0 -0
  164. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/schemas/labelling.py +0 -0
  165. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/subscribers.py +0 -0
  166. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/utilities.py +0 -0
  167. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/events/worker.py +0 -0
  168. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/exceptions.py +0 -0
  169. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/filesystems.py +0 -0
  170. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/flow_engine.py +0 -0
  171. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/flow_runs.py +0 -0
  172. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/flows.py +0 -0
  173. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/futures.py +0 -0
  174. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/__init__.py +0 -0
  175. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/base.py +0 -0
  176. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  177. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  178. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  179. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  180. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  181. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  182. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/input/__init__.py +0 -0
  183. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/input/actions.py +0 -0
  184. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/locking/__init__.py +0 -0
  185. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/locking/filesystem.py +0 -0
  186. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/locking/memory.py +0 -0
  187. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/locking/protocol.py +0 -0
  188. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/__init__.py +0 -0
  189. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/clients.py +0 -0
  190. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/configuration.py +0 -0
  191. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/filters.py +0 -0
  192. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/formatters.py +0 -0
  193. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/handlers.py +0 -0
  194. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/highlighters.py +0 -0
  195. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/loggers.py +0 -0
  196. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/logging/logging.yml +0 -0
  197. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/main.py +0 -0
  198. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/plugins.py +0 -0
  199. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/py.typed +0 -0
  200. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/results.py +0 -0
  201. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/__init__.py +0 -0
  202. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/_observers.py +0 -0
  203. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/runner.py +0 -0
  204. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/server.py +0 -0
  205. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/storage.py +0 -0
  206. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/submit.py +0 -0
  207. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runner/utils.py +0 -0
  208. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runtime/__init__.py +0 -0
  209. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runtime/deployment.py +0 -0
  210. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runtime/flow_run.py +0 -0
  211. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/runtime/task_run.py +0 -0
  212. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/schedules.py +0 -0
  213. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/serializers.py +0 -0
  214. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/__init__.py +0 -0
  215. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/admin.py +0 -0
  216. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/artifacts.py +0 -0
  217. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/automations.py +0 -0
  218. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
  219. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/block_documents.py +0 -0
  220. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/block_schemas.py +0 -0
  221. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/block_types.py +0 -0
  222. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/clients.py +0 -0
  223. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/collections.py +0 -0
  224. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  225. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
  226. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  227. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/csrf_token.py +0 -0
  228. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/dependencies.py +0 -0
  229. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/deployments.py +0 -0
  230. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/events.py +0 -0
  231. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
  232. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/flow_runs.py +0 -0
  233. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/flows.py +0 -0
  234. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/logs.py +0 -0
  235. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/middleware.py +0 -0
  236. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/root.py +0 -0
  237. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/run_history.py +0 -0
  238. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/saved_searches.py +0 -0
  239. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/server.py +0 -0
  240. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  241. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/task_run_states.py +0 -0
  242. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/task_runs.py +0 -0
  243. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/task_workers.py +0 -0
  244. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/templates.py +0 -0
  245. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
  246. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
  247. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/ui/flows.py +0 -0
  248. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/ui/schemas.py +0 -0
  249. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
  250. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/validation.py +0 -0
  251. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/variables.py +0 -0
  252. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/work_queues.py +0 -0
  253. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/server/api/workers.py +0 -0
  254. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/__init__.py +0 -0
  255. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/base.py +0 -0
  256. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/constants.py +0 -0
  257. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/context.py +0 -0
  258. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/legacy.py +0 -0
  259. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/__init__.py +0 -0
  260. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/_defaults.py +0 -0
  261. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/api.py +0 -0
  262. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/cli.py +0 -0
  263. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/client.py +0 -0
  264. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/cloud.py +0 -0
  265. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/deployments.py +0 -0
  266. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/flows.py +0 -0
  267. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/internal.py +0 -0
  268. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/logging.py +0 -0
  269. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/results.py +0 -0
  270. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/root.py +0 -0
  271. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/runner.py +0 -0
  272. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
  273. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/api.py +0 -0
  274. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/concurrency.py +0 -0
  275. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/database.py +0 -0
  276. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
  277. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
  278. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/events.py +0 -0
  279. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  280. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/logs.py +0 -0
  281. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/root.py +0 -0
  282. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/services.py +0 -0
  283. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
  284. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/server/ui.py +0 -0
  285. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/tasks.py +0 -0
  286. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/testing.py +0 -0
  287. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/models/worker.py +0 -0
  288. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/profiles.py +0 -0
  289. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/profiles.toml +0 -0
  290. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/settings/sources.py +0 -0
  291. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/states.py +0 -0
  292. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/task_engine.py +0 -0
  293. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/task_runs.py +0 -0
  294. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/task_worker.py +0 -0
  295. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/tasks.py +0 -0
  296. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/telemetry/__init__.py +0 -0
  297. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
  298. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/transactions.py +0 -0
  299. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/types/__init__.py +0 -0
  300. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/types/_concurrency.py +0 -0
  301. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/types/_datetime.py +0 -0
  302. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/types/_schema.py +0 -0
  303. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/types/entrypoint.py +0 -0
  304. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/types/names.py +0 -0
  305. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/__init__.py +0 -0
  306. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/_ast.py +0 -0
  307. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/_deprecated.py +0 -0
  308. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/_engine.py +0 -0
  309. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/_git.py +0 -0
  310. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/annotations.py +0 -0
  311. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/asyncutils.py +0 -0
  312. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/callables.py +0 -0
  313. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/collections.py +0 -0
  314. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/compat.py +0 -0
  315. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/context.py +0 -0
  316. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/dispatch.py +0 -0
  317. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/dockerutils.py +0 -0
  318. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/engine.py +0 -0
  319. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/filesystem.py +0 -0
  320. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/generics.py +0 -0
  321. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/hashing.py +0 -0
  322. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/importtools.py +0 -0
  323. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/math.py +0 -0
  324. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/names.py +0 -0
  325. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/processutils.py +0 -0
  326. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/pydantic.py +0 -0
  327. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/render_swagger.py +0 -0
  328. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  329. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  330. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/schema_tools/validation.py +0 -0
  331. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/services.py +0 -0
  332. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/slugify.py +0 -0
  333. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/templating.py +0 -0
  334. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/text.py +0 -0
  335. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/timeout.py +0 -0
  336. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/urls.py +0 -0
  337. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/utilities/visualization.py +0 -0
  338. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/variables.py +0 -0
  339. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/workers/__init__.py +0 -0
  340. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/workers/base.py +0 -0
  341. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/workers/block.py +0 -0
  342. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/workers/cloud.py +0 -0
  343. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/workers/process.py +0 -0
  344. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/src/prefect/workers/server.py +0 -0
  345. {prefect_client-3.4.24.dev3 → prefect_client-3.4.24.dev4}/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.4.24.dev3
3
+ Version: 3.4.24.dev4
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -65,6 +65,57 @@ __ui_static_path__: pathlib.Path = __module_path__ / "server" / "ui"
65
65
 
66
66
  del _build_info, pathlib
67
67
 
68
+
69
+ def _initialize_plugins() -> None:
70
+ """
71
+ Initialize the experimental plugin system if enabled.
72
+
73
+ This runs automatically when Prefect is imported and plugins are enabled
74
+ via experiments.plugins.enabled setting. Errors are logged but don't prevent
75
+ Prefect from loading.
76
+ """
77
+ try:
78
+ # Import here to avoid circular imports and defer cost until needed
79
+ from prefect.settings import get_current_settings
80
+
81
+ if not get_current_settings().experiments.plugins.enabled:
82
+ return
83
+
84
+ import anyio
85
+
86
+ from prefect._experimental.plugins import run_startup_hooks
87
+ from prefect._experimental.plugins.spec import HookContext
88
+ from prefect.logging import get_logger
89
+ from prefect.settings import get_current_settings
90
+
91
+ ctx = HookContext(
92
+ prefect_version=__version__,
93
+ api_url=get_current_settings().api.url,
94
+ logger_factory=get_logger,
95
+ )
96
+
97
+ # Run plugin hooks synchronously during import
98
+ anyio.run(run_startup_hooks, ctx)
99
+ except SystemExit:
100
+ # Re-raise SystemExit from strict mode
101
+ raise
102
+ except Exception as e:
103
+ # Log but don't crash on plugin errors
104
+ try:
105
+ from prefect.logging import get_logger
106
+
107
+ logger = get_logger("prefect.plugins")
108
+ logger.exception("Failed to initialize plugins: %s", e)
109
+ except Exception:
110
+ # If even logging fails, print to stderr and continue
111
+ import sys
112
+
113
+ print(f"Failed to initialize plugins: {e}", file=sys.stderr)
114
+
115
+
116
+ # Initialize plugins on import if enabled
117
+ _initialize_plugins()
118
+
68
119
  _public_api: dict[str, tuple[Optional[str], str]] = {
69
120
  "allow_failure": (__spec__.parent, ".main"),
70
121
  "aserve": (__spec__.parent, ".main"),
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.4.24.dev4"
3
+ __build_date__ = "2025-10-15 08:09:24.517909+00:00"
4
+ __git_commit__ = "4d7bea0be73f046c90a05a964312a8e86261e17d"
5
+ __dirty__ = False
@@ -0,0 +1,139 @@
1
+ """
2
+ Experimental plugin system for Prefect.
3
+
4
+ This module provides a startup hook system that allows third-party packages
5
+ to run initialization code before Prefect CLI commands, workers, or agents
6
+ start their main work.
7
+
8
+ **Note: This is an experimental API and is subject to change.**
9
+ """
10
+
11
+ from __future__ import annotations
12
+ from typing import Any
13
+
14
+ import anyio
15
+
16
+ from prefect._experimental.plugins.apply import apply_setup_result, summarize_env
17
+ from prefect._experimental.plugins.diagnostics import SetupSummary
18
+ from prefect._experimental.plugins.manager import (
19
+ build_manager,
20
+ call_async_hook,
21
+ load_entry_point_plugins,
22
+ register_hook,
23
+ )
24
+ from prefect._experimental.plugins.spec import (
25
+ PREFECT_PLUGIN_API_VERSION,
26
+ HookContext,
27
+ HookSpec,
28
+ SetupResult,
29
+ )
30
+ from prefect.settings import get_current_settings
31
+
32
+ __all__ = [
33
+ "run_startup_hooks",
34
+ "HookContext",
35
+ "SetupResult",
36
+ "HookSpec",
37
+ "SetupSummary",
38
+ "PREFECT_PLUGIN_API_VERSION",
39
+ "register_hook",
40
+ ]
41
+
42
+
43
+ async def run_startup_hooks(ctx: HookContext) -> list[SetupSummary]:
44
+ """
45
+ Run all registered plugin startup hooks.
46
+
47
+ This is the main entry point for the plugin system. It:
48
+ 1. Checks if plugins are enabled via configuration
49
+ 2. Discovers and loads plugins from entry points
50
+ 3. Calls setup_environment hooks (respecting timeouts)
51
+ 4. Applies environment changes from successful hooks
52
+ 5. Returns diagnostic summaries
53
+
54
+ Args:
55
+ ctx: Context object with Prefect version, API URL, and logger factory
56
+
57
+ Returns:
58
+ List of SetupSummary objects describing what each plugin did
59
+
60
+ Raises:
61
+ SystemExit: In strict mode, if a required plugin fails
62
+ """
63
+ logger = ctx.logger_factory("prefect.plugins")
64
+ settings = get_current_settings().experiments.plugins
65
+
66
+ if not settings.enabled:
67
+ logger.debug("Experimental plugins not enabled")
68
+ return []
69
+
70
+ logger.debug("Initializing experimental plugin system")
71
+ pm = build_manager(HookSpec)
72
+ allow = settings.allow
73
+ deny = settings.deny
74
+ load_entry_point_plugins(pm, allow=allow, deny=deny, logger=logger)
75
+
76
+ summaries: list[SetupSummary] = []
77
+
78
+ if settings.safe_mode:
79
+ logger.info("Safe mode enabled - plugins loaded but hooks not called")
80
+ return summaries
81
+
82
+ # Call all hooks with timeout
83
+ timeout = settings.setup_timeout_seconds
84
+ results: list[tuple[str, Any, Exception | None]] = []
85
+
86
+ try:
87
+ with anyio.move_on_after(timeout) as cancel_scope:
88
+ results = await call_async_hook(pm, "setup_environment", ctx=ctx)
89
+
90
+ if cancel_scope.cancel_called:
91
+ logger.warning("Plugin setup timed out after %.1fs", timeout)
92
+ except Exception as e:
93
+ logger.exception("Unexpected error during plugin setup: %s", e)
94
+
95
+ # Process results
96
+ for name, res, err in results:
97
+ if err:
98
+ logger.error("Plugin %s failed: %s", name, err)
99
+ summaries.append(
100
+ SetupSummary(plugin=name, env_preview={}, note=None, error=str(err))
101
+ )
102
+ continue
103
+
104
+ if res is None:
105
+ logger.debug("Plugin %s returned no changes", name)
106
+ summaries.append(
107
+ SetupSummary(plugin=name, env_preview={}, note=None, error=None)
108
+ )
109
+ continue
110
+
111
+ try:
112
+ apply_setup_result(res, logger)
113
+ summaries.append(
114
+ SetupSummary(
115
+ name,
116
+ summarize_env(dict(res.env)),
117
+ res.note,
118
+ error=None,
119
+ )
120
+ )
121
+ logger.debug("Plugin %s completed successfully", name)
122
+ except Exception as e:
123
+ logger.exception("Failed to apply result from plugin %s", name)
124
+ summaries.append(SetupSummary(name, {}, None, None, error=str(e)))
125
+
126
+ # Strict failure policy
127
+ if settings.strict:
128
+ for name, res, err in results:
129
+ if err:
130
+ raise SystemExit(f"[plugins] required plugin '{name}' failed: {err}")
131
+ if res and getattr(res, "required", False) and not res.env:
132
+ raise SystemExit(
133
+ f"[plugins] required plugin '{name}' returned SetupResult with "
134
+ f"required=True but empty env. If no changes are needed, return "
135
+ f"None instead of SetupResult."
136
+ )
137
+
138
+ logger.info("Plugin system initialization complete (%d plugins)", len(summaries))
139
+ return summaries
@@ -0,0 +1,62 @@
1
+ """
2
+ Safe application of plugin setup results with secret redaction.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ import logging
8
+ import os
9
+
10
+ from prefect._experimental.plugins.spec import SetupResult
11
+
12
+ REDACT_KEYS = ("SECRET", "TOKEN", "PASSWORD", "KEY")
13
+
14
+
15
+ def redact(key: str, value: str) -> str:
16
+ """
17
+ Redact sensitive values based on key name heuristics.
18
+
19
+ Args:
20
+ key: Environment variable name
21
+ value: Environment variable value
22
+
23
+ Returns:
24
+ Redacted value if the key appears sensitive, otherwise truncated value
25
+ """
26
+ k = key.upper()
27
+ if any(tag in k for tag in REDACT_KEYS):
28
+ return "••••••"
29
+ return value if len(value) <= 64 else value[:20] + "…"
30
+
31
+
32
+ def apply_setup_result(result: SetupResult, logger: logging.Logger) -> None:
33
+ """
34
+ Apply environment changes to the current process.
35
+
36
+ This function never logs secrets - all values are redacted based on key name
37
+ heuristics.
38
+
39
+ Args:
40
+ result: The SetupResult containing environment variables to set
41
+ logger: Logger to use for informational messages
42
+ """
43
+ for k, v in (result.env or {}).items():
44
+ os.environ[str(k)] = str(v)
45
+ note = result.note or ""
46
+ logger.info(
47
+ "plugin env applied%s",
48
+ f" — {note}" if note else "",
49
+ )
50
+
51
+
52
+ def summarize_env(env: dict[str, str]) -> dict[str, str]:
53
+ """
54
+ Create a safe summary of environment variables with redacted values.
55
+
56
+ Args:
57
+ env: Dictionary of environment variables
58
+
59
+ Returns:
60
+ Dictionary with same keys but redacted values
61
+ """
62
+ return {k: redact(k, v) for k, v in env.items()}
@@ -0,0 +1,25 @@
1
+ """
2
+ Diagnostic data structures for plugin system.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from dataclasses import dataclass
8
+
9
+
10
+ @dataclass
11
+ class SetupSummary:
12
+ """
13
+ Summary of a plugin's setup_environment execution.
14
+
15
+ Attributes:
16
+ plugin: Name of the plugin
17
+ env_preview: Preview of environment variables set (with redacted values)
18
+ note: Human-readable note from the plugin, if any
19
+ error: Error message if the plugin failed, or None if successful
20
+ """
21
+
22
+ plugin: str
23
+ env_preview: dict[str, str]
24
+ note: str | None
25
+ error: str | None
@@ -0,0 +1,133 @@
1
+ """
2
+ Plugin manager using pluggy with async bridge.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ import importlib.metadata as md
8
+ import inspect
9
+ import logging
10
+ import sys
11
+ from typing import Any
12
+
13
+ import pluggy
14
+ from packaging.specifiers import InvalidSpecifier, SpecifierSet
15
+
16
+ from prefect._experimental.plugins.spec import PREFECT_PLUGIN_API_VERSION
17
+
18
+ PM_PROJECT_NAME = "prefect-experimental"
19
+ ENTRYPOINTS_GROUP = "prefect.plugins"
20
+
21
+ register_hook = pluggy.HookimplMarker(PM_PROJECT_NAME)
22
+
23
+
24
+ def build_manager(hookspecs: type) -> pluggy.PluginManager:
25
+ """
26
+ Create a pluggy PluginManager and register hook specifications.
27
+
28
+ Args:
29
+ hookspecs: The hook specification class/protocol
30
+
31
+ Returns:
32
+ Configured PluginManager instance
33
+ """
34
+ pm = pluggy.PluginManager(PM_PROJECT_NAME)
35
+ pm.add_hookspecs(hookspecs)
36
+ return pm
37
+
38
+
39
+ def load_entry_point_plugins(
40
+ pm: pluggy.PluginManager,
41
+ *,
42
+ allow: set[str] | None,
43
+ deny: set[str] | None,
44
+ logger: logging.Logger,
45
+ ) -> None:
46
+ """
47
+ Discover and load plugins from entry points.
48
+
49
+ Args:
50
+ pm: The PluginManager to register plugins with
51
+ allow: If set, only load plugins with names in this set
52
+ deny: If set, skip plugins with names in this set
53
+ logger: Logger for reporting load failures
54
+ """
55
+ # Python 3.10+ supports group parameter, 3.9 requires dict access
56
+ if sys.version_info >= (3, 10):
57
+ entry_points_list = md.entry_points(group=ENTRYPOINTS_GROUP)
58
+ else:
59
+ # Python 3.9 returns a dict-like object
60
+ entry_points_list = md.entry_points().get(ENTRYPOINTS_GROUP, [])
61
+
62
+ for ep in entry_points_list:
63
+ if allow and ep.name not in allow:
64
+ logger.debug("Skipping plugin %s (not in allow list)", ep.name)
65
+ continue
66
+ if deny and ep.name in deny:
67
+ logger.debug("Skipping plugin %s (in deny list)", ep.name)
68
+ continue
69
+ try:
70
+ plugin = ep.load()
71
+ # Version fence (best effort)
72
+ requires = getattr(plugin, "PREFECT_PLUGIN_API_REQUIRES", ">=0.1,<1")
73
+
74
+ # Validate plugin API version requirement
75
+ try:
76
+ spec = SpecifierSet(requires)
77
+ if PREFECT_PLUGIN_API_VERSION not in spec:
78
+ logger.warning(
79
+ "Skipping plugin %s: requires API version %s, current version is %s",
80
+ ep.name,
81
+ requires,
82
+ PREFECT_PLUGIN_API_VERSION,
83
+ )
84
+ continue
85
+ except InvalidSpecifier:
86
+ logger.debug(
87
+ "Plugin %s has invalid version specifier %r, ignoring version check",
88
+ ep.name,
89
+ requires,
90
+ )
91
+
92
+ pm.register(plugin, name=ep.name)
93
+ logger.debug(
94
+ "Loaded plugin %s (requires API %s, current %s)",
95
+ ep.name,
96
+ requires,
97
+ PREFECT_PLUGIN_API_VERSION,
98
+ )
99
+ except Exception:
100
+ logger.exception("Failed to load plugin %s", ep.name)
101
+
102
+
103
+ async def call_async_hook(
104
+ pm: pluggy.PluginManager, hook_name: str, **kwargs: Any
105
+ ) -> list[tuple[str, Any, Exception | None]]:
106
+ """
107
+ Call a hook that may return coroutines.
108
+
109
+ This function handles both sync and async hook implementations, gathering
110
+ results and exceptions per plugin.
111
+
112
+ Args:
113
+ pm: The PluginManager
114
+ hook_name: Name of the hook to call
115
+ **kwargs: Arguments to pass to the hook
116
+
117
+ Returns:
118
+ List of tuples: (plugin_name, result, exception)
119
+ - If successful: (name, result, None)
120
+ - If failed: (name, None, exception)
121
+ """
122
+ hook = getattr(pm.hook, hook_name)
123
+ results: list[tuple[str, Any, Exception | None]] = []
124
+ for impl in hook.get_hookimpls():
125
+ fn = impl.function
126
+ try:
127
+ res = fn(**kwargs)
128
+ if inspect.iscoroutine(res):
129
+ res = await res
130
+ results.append((impl.plugin_name, res, None))
131
+ except Exception as exc:
132
+ results.append((impl.plugin_name, None, exc))
133
+ return results
@@ -0,0 +1,85 @@
1
+ """
2
+ Experimental plugin API specification.
3
+
4
+ This module defines the hook specification and data structures for Prefect's
5
+ experimental plugin system.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import logging
11
+ from dataclasses import dataclass
12
+ from typing import Callable, Mapping, Optional
13
+
14
+ import pluggy
15
+
16
+ # Bump this when breaking the hook contract
17
+ PREFECT_PLUGIN_API_VERSION = "0.1"
18
+
19
+ hookspec = pluggy.HookspecMarker("prefect-experimental")
20
+
21
+
22
+ @dataclass
23
+ class HookContext:
24
+ """
25
+ Context provided to plugin hooks at startup.
26
+
27
+ Attributes:
28
+ prefect_version: The version of Prefect running
29
+ api_url: The configured Prefect API URL, if any
30
+ logger_factory: Factory function to create a stdlib logger for the plugin
31
+ """
32
+
33
+ prefect_version: str
34
+ api_url: str | None
35
+ # Logger factory returns a stdlib logger; plugins should use this.
36
+ logger_factory: Callable[[str], logging.Logger]
37
+ # Future: async Prefect client getter, settings snapshot, etc.
38
+
39
+
40
+ @dataclass
41
+ class SetupResult:
42
+ """
43
+ Result returned by a plugin's setup_environment hook.
44
+
45
+ Attributes:
46
+ env: Environment variables to set (e.g., AWS_* variables)
47
+ note: Short, non-secret human-readable hint about what was configured
48
+ required: If True and hook fails, abort in strict mode
49
+ """
50
+
51
+ env: Mapping[str, str] # e.g. AWS_* variables
52
+ note: Optional[str] = None # short, non-secret human hint
53
+ required: bool = False # if True and hook fails -> abort (in strict mode)
54
+
55
+
56
+ class HookSpec:
57
+ """
58
+ Plugin hook specification.
59
+
60
+ Plugins should implement the methods defined here to provide startup hooks.
61
+ """
62
+
63
+ @hookspec
64
+ def setup_environment(self, *, ctx: HookContext) -> Optional[SetupResult]:
65
+ """
66
+ Prepare process environment for Prefect and its children.
67
+
68
+ This hook is called before Prefect CLI commands, workers, or agents
69
+ start their main work. It allows plugins to configure environment
70
+ variables, authenticate with external services, or perform other
71
+ setup tasks.
72
+
73
+ Args:
74
+ ctx: Context object with Prefect version, API URL, and logger factory
75
+
76
+ Returns:
77
+ SetupResult with environment variables to set, or None to indicate
78
+ no changes are needed.
79
+
80
+ Important:
81
+ - Must not print secrets or write sensitive data to disk by default
82
+ - Should be idempotent
83
+ - May be async or sync
84
+ - Exceptions are caught and logged unless required=True in strict mode
85
+ """
@@ -2,6 +2,7 @@
2
2
  Command line interface for working with automations.
3
3
  """
4
4
 
5
+ import asyncio
5
6
  import functools
6
7
  from pathlib import Path
7
8
  from typing import Any, Callable, Optional, Type
@@ -301,6 +302,7 @@ async def pause(
301
302
  async def delete(
302
303
  name: Optional[str] = typer.Argument(None, help="An automation's name"),
303
304
  id: Optional[str] = typer.Option(None, "--id", help="An automation's id"),
305
+ _all: bool = typer.Option(False, "--all", help="Delete all automations"),
304
306
  ):
305
307
  """Delete an automation.
306
308
 
@@ -311,9 +313,37 @@ async def delete(
311
313
  Examples:
312
314
  `$ prefect automation delete "my-automation"`
313
315
  `$ prefect automation delete --id "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"`
316
+ `$ prefect automation delete --all`
314
317
  """
315
318
 
316
319
  async with get_client() as client:
320
+ if _all:
321
+ if name is not None or id is not None:
322
+ exit_with_error(
323
+ "Cannot provide an automation name or id when deleting all automations."
324
+ )
325
+ automations = await client.read_automations()
326
+ if len(automations) == 0:
327
+ exit_with_success("No automations found.")
328
+ if is_interactive() and not typer.confirm(
329
+ f"Are you sure you want to delete all {len(automations)} automations?",
330
+ default=False,
331
+ ):
332
+ exit_with_error("Deletion aborted.")
333
+
334
+ semaphore = asyncio.Semaphore(10)
335
+
336
+ async def limited_delete(automation_id):
337
+ async with semaphore:
338
+ await client.delete_automation(automation_id)
339
+
340
+ await asyncio.gather(
341
+ *[limited_delete(automation.id) for automation in automations]
342
+ )
343
+
344
+ plural = "" if len(automations) == 1 else "s"
345
+ exit_with_success(f"Deleted {len(automations)} automation{plural}.")
346
+
317
347
  if not id and not name:
318
348
  exit_with_error("Please provide either a name or an id.")
319
349
 
@@ -249,7 +249,10 @@ class BaseRunInput(pydantic.BaseModel):
249
249
  """
250
250
  fields: Dict[str, Any] = {}
251
251
  for key, value in kwargs.items():
252
- fields[key] = (type(value), value)
252
+ original_field = cls.model_fields.get(key)
253
+ # Use the original field annotation if it exists, otherwise infer from value
254
+ field_type = original_field.annotation if original_field else type(value)
255
+ fields[key] = (field_type, value)
253
256
  model = pydantic.create_model(cls.__name__, **fields, __base__=cls)
254
257
 
255
258
  if description is not None:
@@ -0,0 +1,77 @@
1
+ from __future__ import annotations
2
+
3
+ from functools import partial
4
+ from typing import Annotated, ClassVar, Union
5
+
6
+ from pydantic import AliasChoices, AliasPath, BeforeValidator, Field
7
+ from pydantic_settings import SettingsConfigDict
8
+
9
+ from prefect.settings.base import PrefectBaseSettings, build_settings_config
10
+ from prefect.types import validate_set_T_from_delim_string
11
+
12
+
13
+ class PluginsSettings(PrefectBaseSettings):
14
+ """
15
+ Settings for configuring the experimental plugin system
16
+ """
17
+
18
+ model_config: ClassVar[SettingsConfigDict] = build_settings_config(
19
+ ("experiments", "plugins")
20
+ )
21
+
22
+ enabled: bool = Field(
23
+ default=False,
24
+ description="Enable the experimental plugin system.",
25
+ )
26
+
27
+ allow: Annotated[
28
+ Union[set[str], None],
29
+ BeforeValidator(partial(validate_set_T_from_delim_string, type_=str)),
30
+ ] = Field(
31
+ default=None,
32
+ description="Comma-separated list of plugin names to allow. If set, only these plugins will be loaded.",
33
+ )
34
+
35
+ deny: Annotated[
36
+ Union[set[str], None],
37
+ BeforeValidator(partial(validate_set_T_from_delim_string, type_=str)),
38
+ ] = Field(
39
+ default=None,
40
+ description="Comma-separated list of plugin names to deny. These plugins will not be loaded.",
41
+ )
42
+
43
+ setup_timeout_seconds: float = Field(
44
+ default=20.0,
45
+ description="Maximum time in seconds for all plugins to complete their setup hooks.",
46
+ )
47
+
48
+ strict: bool = Field(
49
+ default=False,
50
+ description="If True, exit if a required plugin fails during setup.",
51
+ )
52
+
53
+ safe_mode: bool = Field(
54
+ default=False,
55
+ description="If True, load plugins but do not execute their hooks. Useful for testing.",
56
+ )
57
+
58
+
59
+ class ExperimentsSettings(PrefectBaseSettings):
60
+ """
61
+ Settings for configuring experimental features
62
+ """
63
+
64
+ model_config: ClassVar[SettingsConfigDict] = build_settings_config(("experiments",))
65
+
66
+ warn: bool = Field(
67
+ default=True,
68
+ description="If `True`, warn on usage of experimental features.",
69
+ validation_alias=AliasChoices(
70
+ AliasPath("warn"), "prefect_experiments_warn", "prefect_experimental_warn"
71
+ ),
72
+ )
73
+
74
+ plugins: PluginsSettings = Field(
75
+ default_factory=PluginsSettings,
76
+ description="Settings for the experimental plugin system",
77
+ )