prefect-client 3.3.8.dev2__tar.gz → 3.3.8.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/PKG-INFO +1 -1
  2. prefect_client-3.3.8.dev3/src/prefect/_build_info.py +5 -0
  3. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/schemas/validators.py +0 -19
  4. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/__init__.py +0 -149
  5. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/routes.py +0 -3
  6. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/actions.py +1 -47
  7. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/filters.py +0 -20
  8. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/objects.py +1 -50
  9. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/steps/pull.py +6 -0
  10. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runner/storage.py +110 -20
  11. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/__init__.py +0 -1
  12. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/server.py +0 -1
  13. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/services.py +0 -24
  14. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/task_engine.py +35 -17
  15. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/task_runners.py +6 -0
  16. prefect_client-3.3.8.dev2/src/prefect/_build_info.py +0 -5
  17. prefect_client-3.3.8.dev2/src/prefect/server/api/flow_run_notification_policies.py +0 -122
  18. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/.gitignore +0 -0
  19. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/LICENSE +0 -0
  20. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/README.md +0 -0
  21. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/pyproject.toml +0 -0
  22. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/.prefectignore +0 -0
  23. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/__init__.py +0 -0
  24. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/__main__.py +0 -0
  25. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/__init__.py +0 -0
  26. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
  27. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
  28. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/lineage.py +0 -0
  29. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
  30. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/sla/client.py +0 -0
  31. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
  32. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/__init__.py +0 -0
  33. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/_logging.py +0 -0
  34. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
  35. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  36. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  37. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
  38. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
  39. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
  40. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
  41. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  42. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  43. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
  44. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
  45. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
  46. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
  47. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
  48. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/integrations.py +0 -0
  49. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
  50. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
  51. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  52. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  53. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  54. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/pytz.py +0 -0
  55. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/retries.py +0 -0
  56. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
  57. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
  58. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
  59. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
  60. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_result_records.py +0 -0
  61. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
  62. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
  63. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_versioning.py +0 -0
  64. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/_waiters.py +0 -0
  65. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/agent.py +0 -0
  66. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/artifacts.py +0 -0
  67. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/automations.py +0 -0
  68. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/__init__.py +0 -0
  69. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/abstract.py +0 -0
  70. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/core.py +0 -0
  71. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/fields.py +0 -0
  72. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/notifications.py +0 -0
  73. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/redis.py +0 -0
  74. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/system.py +0 -0
  75. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/blocks/webhook.py +0 -0
  76. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/cache_policies.py +0 -0
  77. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/__init__.py +0 -0
  78. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/base.py +0 -0
  79. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/cloud.py +0 -0
  80. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/collections.py +0 -0
  81. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/constants.py +0 -0
  82. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  83. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  84. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  85. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
  86. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  87. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  88. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  89. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  90. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  91. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  92. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  93. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  94. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  95. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  96. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  97. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  98. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  99. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
  100. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  101. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
  102. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  103. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
  104. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  105. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  106. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/orchestration/base.py +0 -0
  107. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/__init__.py +0 -0
  108. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/responses.py +0 -0
  109. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/schedules.py +0 -0
  110. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/schemas/sorting.py +0 -0
  111. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/subscriptions.py +0 -0
  112. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/types/__init__.py +0 -0
  113. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  114. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/client/utilities.py +0 -0
  115. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/__init__.py +0 -0
  116. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
  117. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/_events.py +0 -0
  118. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/asyncio.py +0 -0
  119. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/context.py +0 -0
  120. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/services.py +0 -0
  121. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/sync.py +0 -0
  122. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
  123. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  124. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
  125. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
  126. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/context.py +0 -0
  127. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/services.py +0 -0
  128. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
  129. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/context.py +0 -0
  130. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/__init__.py +0 -0
  131. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/base.py +0 -0
  132. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/deployments.py +0 -0
  133. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/flow_runs.py +0 -0
  134. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/runner.py +0 -0
  135. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/schedules.py +0 -0
  136. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
  137. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/steps/core.py +0 -0
  138. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/deployments/steps/utility.py +0 -0
  139. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/docker/__init__.py +0 -0
  140. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/docker/docker_image.py +0 -0
  141. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/engine.py +0 -0
  142. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/__init__.py +0 -0
  143. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/actions.py +0 -0
  144. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/cli/__init__.py +0 -0
  145. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/cli/automations.py +0 -0
  146. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/clients.py +0 -0
  147. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/filters.py +0 -0
  148. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/related.py +0 -0
  149. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/schemas/__init__.py +0 -0
  150. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/schemas/automations.py +0 -0
  151. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  152. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/schemas/events.py +0 -0
  153. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/schemas/labelling.py +0 -0
  154. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/utilities.py +0 -0
  155. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/events/worker.py +0 -0
  156. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/exceptions.py +0 -0
  157. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/filesystems.py +0 -0
  158. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/flow_engine.py +0 -0
  159. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/flow_runs.py +0 -0
  160. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/flows.py +0 -0
  161. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/futures.py +0 -0
  162. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/__init__.py +0 -0
  163. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/base.py +0 -0
  164. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  165. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  166. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  167. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  168. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  169. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  170. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/input/__init__.py +0 -0
  171. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/input/actions.py +0 -0
  172. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/input/run_input.py +0 -0
  173. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/locking/__init__.py +0 -0
  174. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/locking/filesystem.py +0 -0
  175. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/locking/memory.py +0 -0
  176. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/locking/protocol.py +0 -0
  177. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/__init__.py +0 -0
  178. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/configuration.py +0 -0
  179. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/filters.py +0 -0
  180. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/formatters.py +0 -0
  181. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/handlers.py +0 -0
  182. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/highlighters.py +0 -0
  183. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/loggers.py +0 -0
  184. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/logging/logging.yml +0 -0
  185. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/main.py +0 -0
  186. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/plugins.py +0 -0
  187. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/py.typed +0 -0
  188. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/results.py +0 -0
  189. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runner/__init__.py +0 -0
  190. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runner/runner.py +0 -0
  191. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runner/server.py +0 -0
  192. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runner/submit.py +0 -0
  193. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runner/utils.py +0 -0
  194. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runtime/__init__.py +0 -0
  195. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runtime/deployment.py +0 -0
  196. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runtime/flow_run.py +0 -0
  197. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/runtime/task_run.py +0 -0
  198. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/schedules.py +0 -0
  199. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/serializers.py +0 -0
  200. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/admin.py +0 -0
  201. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/artifacts.py +0 -0
  202. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/automations.py +0 -0
  203. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
  204. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/block_documents.py +0 -0
  205. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/block_schemas.py +0 -0
  206. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/block_types.py +0 -0
  207. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/clients.py +0 -0
  208. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/collections.py +0 -0
  209. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  210. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
  211. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  212. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/csrf_token.py +0 -0
  213. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/dependencies.py +0 -0
  214. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/deployments.py +0 -0
  215. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/events.py +0 -0
  216. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
  217. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/flow_runs.py +0 -0
  218. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/flows.py +0 -0
  219. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/logs.py +0 -0
  220. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/middleware.py +0 -0
  221. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/root.py +0 -0
  222. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/run_history.py +0 -0
  223. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/saved_searches.py +0 -0
  224. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  225. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/task_run_states.py +0 -0
  226. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/task_runs.py +0 -0
  227. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/task_workers.py +0 -0
  228. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/templates.py +0 -0
  229. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
  230. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
  231. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/ui/flows.py +0 -0
  232. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
  233. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
  234. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/validation.py +0 -0
  235. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/variables.py +0 -0
  236. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/work_queues.py +0 -0
  237. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/server/api/workers.py +0 -0
  238. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/__init__.py +0 -0
  239. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/base.py +0 -0
  240. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/constants.py +0 -0
  241. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/context.py +0 -0
  242. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/legacy.py +0 -0
  243. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/__init__.py +0 -0
  244. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/api.py +0 -0
  245. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/cli.py +0 -0
  246. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/client.py +0 -0
  247. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/cloud.py +0 -0
  248. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/deployments.py +0 -0
  249. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/experiments.py +0 -0
  250. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/flows.py +0 -0
  251. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/internal.py +0 -0
  252. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/logging.py +0 -0
  253. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/results.py +0 -0
  254. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/root.py +0 -0
  255. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/runner.py +0 -0
  256. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
  257. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/api.py +0 -0
  258. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/database.py +0 -0
  259. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
  260. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
  261. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/events.py +0 -0
  262. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  263. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/root.py +0 -0
  264. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
  265. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/server/ui.py +0 -0
  266. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/tasks.py +0 -0
  267. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/testing.py +0 -0
  268. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/models/worker.py +0 -0
  269. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/profiles.py +0 -0
  270. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/profiles.toml +0 -0
  271. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/settings/sources.py +0 -0
  272. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/states.py +0 -0
  273. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/task_runs.py +0 -0
  274. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/task_worker.py +0 -0
  275. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/tasks.py +0 -0
  276. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/__init__.py +0 -0
  277. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/bootstrap.py +0 -0
  278. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/instrumentation.py +0 -0
  279. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/logging.py +0 -0
  280. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/processors.py +0 -0
  281. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
  282. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/telemetry/services.py +0 -0
  283. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/transactions.py +0 -0
  284. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/types/__init__.py +0 -0
  285. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/types/_datetime.py +0 -0
  286. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/types/entrypoint.py +0 -0
  287. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/__init__.py +0 -0
  288. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/_ast.py +0 -0
  289. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/_deprecated.py +0 -0
  290. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/_engine.py +0 -0
  291. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/_git.py +0 -0
  292. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/annotations.py +0 -0
  293. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/asyncutils.py +0 -0
  294. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/callables.py +0 -0
  295. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/collections.py +0 -0
  296. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/compat.py +0 -0
  297. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/context.py +0 -0
  298. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/dispatch.py +0 -0
  299. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/dockerutils.py +0 -0
  300. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/engine.py +0 -0
  301. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/filesystem.py +0 -0
  302. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/generics.py +0 -0
  303. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/hashing.py +0 -0
  304. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/importtools.py +0 -0
  305. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/math.py +0 -0
  306. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/names.py +0 -0
  307. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/processutils.py +0 -0
  308. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/pydantic.py +0 -0
  309. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/render_swagger.py +0 -0
  310. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  311. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  312. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
  313. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/services.py +0 -0
  314. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/slugify.py +0 -0
  315. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/templating.py +0 -0
  316. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/text.py +0 -0
  317. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/timeout.py +0 -0
  318. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/urls.py +0 -0
  319. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/utilities/visualization.py +0 -0
  320. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/variables.py +0 -0
  321. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/__init__.py +0 -0
  322. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/base.py +0 -0
  323. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/block.py +0 -0
  324. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/cloud.py +0 -0
  325. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/process.py +0 -0
  326. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/server.py +0 -0
  327. {prefect_client-3.3.8.dev2 → prefect_client-3.3.8.dev3}/src/prefect/workers/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefect-client
3
- Version: 3.3.8.dev2
3
+ Version: 3.3.8.dev3
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.3.8.dev3"
3
+ __build_date__ = "2025-05-01 08:08:27.350999+00:00"
4
+ __git_commit__ = "a82ec550b356c4e857fc04fa6ec3e8adfd60daa1"
5
+ __dirty__ = False
@@ -485,25 +485,6 @@ def validate_not_negative(v: Optional[float]) -> Optional[float]:
485
485
  return v
486
486
 
487
487
 
488
- @overload
489
- def validate_message_template_variables(v: str) -> str: ...
490
-
491
-
492
- @overload
493
- def validate_message_template_variables(v: None) -> None: ...
494
-
495
-
496
- def validate_message_template_variables(v: Optional[str]) -> Optional[str]:
497
- from prefect.client.schemas.objects import FLOW_RUN_NOTIFICATION_TEMPLATE_KWARGS
498
-
499
- if v is not None:
500
- try:
501
- v.format(**{k: "test" for k in FLOW_RUN_NOTIFICATION_TEMPLATE_KWARGS})
502
- except KeyError as exc:
503
- raise ValueError(f"Invalid template variable provided: '{exc.args[0]}'")
504
- return v
505
-
506
-
507
488
  def validate_default_queue_id_not_none(v: Optional[UUID]) -> UUID:
508
489
  if v is None:
509
490
  raise ValueError(
@@ -87,8 +87,6 @@ import prefect.states
87
87
  from prefect.client.constants import SERVER_API_VERSION
88
88
  from prefect.client.schemas import FlowRun, OrchestrationResult, TaskRun
89
89
  from prefect.client.schemas.actions import (
90
- FlowRunNotificationPolicyCreate,
91
- FlowRunNotificationPolicyUpdate,
92
90
  TaskRunCreate,
93
91
  TaskRunUpdate,
94
92
  WorkQueueCreate,
@@ -98,14 +96,12 @@ from prefect.client.schemas.filters import (
98
96
  DeploymentFilter,
99
97
  FlowFilter,
100
98
  FlowRunFilter,
101
- FlowRunNotificationPolicyFilter,
102
99
  TaskRunFilter,
103
100
  WorkQueueFilter,
104
101
  WorkQueueFilterName,
105
102
  )
106
103
  from prefect.client.schemas.objects import (
107
104
  Constant,
108
- FlowRunNotificationPolicy,
109
105
  Parameter,
110
106
  TaskRunPolicy,
111
107
  TaskRunResult,
@@ -962,151 +958,6 @@ class PrefectClient(
962
958
  response.json()
963
959
  )
964
960
 
965
- async def create_flow_run_notification_policy(
966
- self,
967
- block_document_id: UUID,
968
- is_active: bool = True,
969
- tags: Optional[list[str]] = None,
970
- state_names: Optional[list[str]] = None,
971
- message_template: Optional[str] = None,
972
- ) -> UUID:
973
- """
974
- Create a notification policy for flow runs
975
-
976
- Args:
977
- block_document_id: The block document UUID
978
- is_active: Whether the notification policy is active
979
- tags: List of flow tags
980
- state_names: List of state names
981
- message_template: Notification message template
982
- """
983
- if tags is None:
984
- tags = []
985
- if state_names is None:
986
- state_names = []
987
-
988
- policy = FlowRunNotificationPolicyCreate(
989
- block_document_id=block_document_id,
990
- is_active=is_active,
991
- tags=tags,
992
- state_names=state_names,
993
- message_template=message_template,
994
- )
995
- response = await self._client.post(
996
- "/flow_run_notification_policies/",
997
- json=policy.model_dump(mode="json"),
998
- )
999
-
1000
- policy_id = response.json().get("id")
1001
- if not policy_id:
1002
- raise httpx.RequestError(f"Malformed response: {response}")
1003
-
1004
- return UUID(policy_id)
1005
-
1006
- async def delete_flow_run_notification_policy(
1007
- self,
1008
- id: UUID,
1009
- ) -> None:
1010
- """
1011
- Delete a flow run notification policy by id.
1012
-
1013
- Args:
1014
- id: UUID of the flow run notification policy to delete.
1015
- Raises:
1016
- prefect.exceptions.ObjectNotFound: If request returns 404
1017
- httpx.RequestError: If requests fails
1018
- """
1019
- try:
1020
- await self._client.delete(f"/flow_run_notification_policies/{id}")
1021
- except httpx.HTTPStatusError as e:
1022
- if e.response.status_code == status.HTTP_404_NOT_FOUND:
1023
- raise prefect.exceptions.ObjectNotFound(http_exc=e) from e
1024
- else:
1025
- raise
1026
-
1027
- async def update_flow_run_notification_policy(
1028
- self,
1029
- id: UUID,
1030
- block_document_id: Optional[UUID] = None,
1031
- is_active: Optional[bool] = None,
1032
- tags: Optional[list[str]] = None,
1033
- state_names: Optional[list[str]] = None,
1034
- message_template: Optional[str] = None,
1035
- ) -> None:
1036
- """
1037
- Update a notification policy for flow runs
1038
-
1039
- Args:
1040
- id: UUID of the notification policy
1041
- block_document_id: The block document UUID
1042
- is_active: Whether the notification policy is active
1043
- tags: List of flow tags
1044
- state_names: List of state names
1045
- message_template: Notification message template
1046
- Raises:
1047
- prefect.exceptions.ObjectNotFound: If request returns 404
1048
- httpx.RequestError: If requests fails
1049
- """
1050
- params: dict[str, Any] = {}
1051
- if block_document_id is not None:
1052
- params["block_document_id"] = block_document_id
1053
- if is_active is not None:
1054
- params["is_active"] = is_active
1055
- if tags is not None:
1056
- params["tags"] = tags
1057
- if state_names is not None:
1058
- params["state_names"] = state_names
1059
- if message_template is not None:
1060
- params["message_template"] = message_template
1061
-
1062
- policy = FlowRunNotificationPolicyUpdate(**params)
1063
-
1064
- try:
1065
- await self._client.patch(
1066
- f"/flow_run_notification_policies/{id}",
1067
- json=policy.model_dump(mode="json", exclude_unset=True),
1068
- )
1069
- except httpx.HTTPStatusError as e:
1070
- if e.response.status_code == status.HTTP_404_NOT_FOUND:
1071
- raise prefect.exceptions.ObjectNotFound(http_exc=e) from e
1072
- else:
1073
- raise
1074
-
1075
- async def read_flow_run_notification_policies(
1076
- self,
1077
- flow_run_notification_policy_filter: FlowRunNotificationPolicyFilter,
1078
- limit: Optional[int] = None,
1079
- offset: int = 0,
1080
- ) -> list[FlowRunNotificationPolicy]:
1081
- """
1082
- Query the Prefect API for flow run notification policies. Only policies matching all criteria will
1083
- be returned.
1084
-
1085
- Args:
1086
- flow_run_notification_policy_filter: filter criteria for notification policies
1087
- limit: a limit for the notification policies query
1088
- offset: an offset for the notification policies query
1089
-
1090
- Returns:
1091
- a list of FlowRunNotificationPolicy model representations
1092
- of the notification policies
1093
- """
1094
- body: dict[str, Any] = {
1095
- "flow_run_notification_policy_filter": (
1096
- flow_run_notification_policy_filter.model_dump(mode="json")
1097
- if flow_run_notification_policy_filter
1098
- else None
1099
- ),
1100
- "limit": limit,
1101
- "offset": offset,
1102
- }
1103
- response = await self._client.post(
1104
- "/flow_run_notification_policies/filter", json=body
1105
- )
1106
- return pydantic.TypeAdapter(list[FlowRunNotificationPolicy]).validate_python(
1107
- response.json()
1108
- )
1109
-
1110
961
  async def read_work_queues(
1111
962
  self,
1112
963
  work_pool_name: Optional[str] = None,
@@ -63,9 +63,6 @@ ServerRoutes = Literal[
63
63
  "/events/count-by/{countable}",
64
64
  "/events/filter",
65
65
  "/events/filter/next",
66
- "/flow_run_notification_policies/",
67
- "/flow_run_notification_policies/{id}",
68
- "/flow_run_notification_policies/filter",
69
66
  "/flow_run_states/",
70
67
  "/flow_run_states/{id}",
71
68
  "/flow_runs/",
@@ -15,7 +15,6 @@ from prefect._internal.schemas.validators import (
15
15
  validate_artifact_key,
16
16
  validate_block_document_name,
17
17
  validate_block_type_slug,
18
- validate_message_template_variables,
19
18
  validate_name_present_on_nonanonymous_blocks,
20
19
  validate_schedule_max_scheduled_runs,
21
20
  validate_variable_name,
@@ -46,7 +45,7 @@ from prefect.types import (
46
45
  PositiveInteger,
47
46
  StrictVariableValue,
48
47
  )
49
- from prefect.utilities.collections import listrepr, visit_collection
48
+ from prefect.utilities.collections import visit_collection
50
49
  from prefect.utilities.pydantic import get_class_fields_only
51
50
 
52
51
  if TYPE_CHECKING:
@@ -812,51 +811,6 @@ class WorkQueueUpdate(ActionBaseModel):
812
811
  )
813
812
 
814
813
 
815
- class FlowRunNotificationPolicyCreate(ActionBaseModel):
816
- """Data used by the Prefect REST API to create a flow run notification policy."""
817
-
818
- is_active: bool = Field(
819
- default=True, description="Whether the policy is currently active"
820
- )
821
- state_names: list[str] = Field(
822
- default=..., description="The flow run states that trigger notifications"
823
- )
824
- tags: list[str] = Field(
825
- default=...,
826
- description="The flow run tags that trigger notifications (set [] to disable)",
827
- )
828
- block_document_id: UUID = Field(
829
- default=..., description="The block document ID used for sending notifications"
830
- )
831
- message_template: Optional[str] = Field(
832
- default=None,
833
- description=(
834
- "A templatable notification message. Use {braces} to add variables."
835
- " Valid variables include:"
836
- f" {listrepr(sorted(objects.FLOW_RUN_NOTIFICATION_TEMPLATE_KWARGS), sep=', ')}"
837
- ),
838
- examples=[
839
- "Flow run {flow_run_name} with id {flow_run_id} entered state"
840
- " {flow_run_state_name}."
841
- ],
842
- )
843
-
844
- @field_validator("message_template")
845
- @classmethod
846
- def validate_message_template_variables(cls, v: Optional[str]) -> Optional[str]:
847
- return validate_message_template_variables(v)
848
-
849
-
850
- class FlowRunNotificationPolicyUpdate(ActionBaseModel):
851
- """Data used by the Prefect REST API to update a flow run notification policy."""
852
-
853
- is_active: Optional[bool] = Field(default=None)
854
- state_names: Optional[list[str]] = Field(default=None)
855
- tags: Optional[list[str]] = Field(default=None)
856
- block_document_id: Optional[UUID] = Field(default=None)
857
- message_template: Optional[str] = Field(default=None)
858
-
859
-
860
814
  class ArtifactCreate(ActionBaseModel):
861
815
  """Data used by the Prefect REST API to create an artifact."""
862
816
 
@@ -799,26 +799,6 @@ class BlockDocumentFilter(PrefectBaseModel, OperatorMixin):
799
799
  )
800
800
 
801
801
 
802
- class FlowRunNotificationPolicyFilterIsActive(PrefectBaseModel):
803
- """Filter by `FlowRunNotificationPolicy.is_active`."""
804
-
805
- eq_: Optional[bool] = Field(
806
- default=None,
807
- description=(
808
- "Filter notification policies for only those that are or are not active."
809
- ),
810
- )
811
-
812
-
813
- class FlowRunNotificationPolicyFilter(PrefectBaseModel):
814
- """Filter FlowRunNotificationPolicies."""
815
-
816
- is_active: Optional[FlowRunNotificationPolicyFilterIsActive] = Field(
817
- default=FlowRunNotificationPolicyFilterIsActive(eq_=False),
818
- description="Filter criteria for `FlowRunNotificationPolicy.is_active`. ",
819
- )
820
-
821
-
822
802
  class WorkQueueFilterId(PrefectBaseModel):
823
803
  """Filter by `WorkQueue.id`."""
824
804
 
@@ -45,7 +45,6 @@ from prefect._internal.schemas.validators import (
45
45
  validate_block_document_name,
46
46
  validate_default_queue_id_not_none,
47
47
  validate_max_metadata_length,
48
- validate_message_template_variables,
49
48
  validate_name_present_on_nonanonymous_blocks,
50
49
  validate_not_negative,
51
50
  validate_parent_and_ref_diff,
@@ -63,7 +62,7 @@ from prefect.types import (
63
62
  )
64
63
  from prefect.types._datetime import DateTime, now
65
64
  from prefect.utilities.asyncutils import run_coro_as_sync
66
- from prefect.utilities.collections import AutoEnum, listrepr, visit_collection
65
+ from prefect.utilities.collections import AutoEnum, visit_collection
67
66
  from prefect.utilities.names import generate_slug
68
67
  from prefect.utilities.pydantic import handle_secret_render
69
68
 
@@ -72,19 +71,6 @@ R = TypeVar("R", default=Any)
72
71
 
73
72
  DEFAULT_BLOCK_SCHEMA_VERSION: Literal["non-versioned"] = "non-versioned"
74
73
  DEFAULT_AGENT_WORK_POOL_NAME: Literal["default-agent-pool"] = "default-agent-pool"
75
- FLOW_RUN_NOTIFICATION_TEMPLATE_KWARGS: list[str] = [
76
- "flow_run_notification_policy_id",
77
- "flow_id",
78
- "flow_name",
79
- "flow_run_url",
80
- "flow_run_id",
81
- "flow_run_name",
82
- "flow_run_parameters",
83
- "flow_run_state_type",
84
- "flow_run_state_name",
85
- "flow_run_state_timestamp",
86
- "flow_run_state_message",
87
- ]
88
74
 
89
75
 
90
76
  class StateType(AutoEnum):
@@ -1446,41 +1432,6 @@ class WorkQueueStatusDetail(PrefectBaseModel):
1446
1432
  )
1447
1433
 
1448
1434
 
1449
- class FlowRunNotificationPolicy(ObjectBaseModel):
1450
- """An ORM representation of a flow run notification."""
1451
-
1452
- is_active: bool = Field(
1453
- default=True, description="Whether the policy is currently active"
1454
- )
1455
- state_names: list[str] = Field(
1456
- default=..., description="The flow run states that trigger notifications"
1457
- )
1458
- tags: list[str] = Field(
1459
- default=...,
1460
- description="The flow run tags that trigger notifications (set [] to disable)",
1461
- )
1462
- block_document_id: UUID = Field(
1463
- default=..., description="The block document ID used for sending notifications"
1464
- )
1465
- message_template: Optional[str] = Field(
1466
- default=None,
1467
- description=(
1468
- "A templatable notification message. Use {braces} to add variables."
1469
- " Valid variables include:"
1470
- f" {listrepr(sorted(FLOW_RUN_NOTIFICATION_TEMPLATE_KWARGS), sep=', ')}"
1471
- ),
1472
- examples=[
1473
- "Flow run {flow_run_name} with id {flow_run_id} entered state"
1474
- " {flow_run_state_name}."
1475
- ],
1476
- )
1477
-
1478
- @field_validator("message_template")
1479
- @classmethod
1480
- def validate_message_template_variables(cls, v: Optional[str]) -> Optional[str]:
1481
- return validate_message_template_variables(v)
1482
-
1483
-
1484
1435
  class Agent(ObjectBaseModel):
1485
1436
  """An ORM representation of an agent"""
1486
1437
 
@@ -50,6 +50,7 @@ async def _pull_git_repository_with_retries(repo: GitRepository):
50
50
  async def agit_clone(
51
51
  repository: str,
52
52
  branch: Optional[str] = None,
53
+ commit_sha: Optional[str] = None,
53
54
  include_submodules: bool = False,
54
55
  access_token: Optional[str] = None,
55
56
  credentials: Optional["Block"] = None,
@@ -61,6 +62,7 @@ async def agit_clone(
61
62
  Args:
62
63
  repository: the URL of the repository to clone
63
64
  branch: the branch to clone; if not provided, the default branch will be used
65
+ commit_sha: the commit SHA to clone; if not provided, the default branch will be used
64
66
  include_submodules (bool): whether to include git submodules when cloning the repository
65
67
  access_token: an access token to use for cloning the repository; if not provided
66
68
  the repository will be cloned using the default git credentials
@@ -84,6 +86,7 @@ async def agit_clone(
84
86
  url=repository,
85
87
  credentials=_credentials,
86
88
  branch=branch,
89
+ commit_sha=commit_sha,
87
90
  include_submodules=include_submodules,
88
91
  directories=directories,
89
92
  )
@@ -97,6 +100,7 @@ async def agit_clone(
97
100
  def git_clone(
98
101
  repository: str,
99
102
  branch: Optional[str] = None,
103
+ commit_sha: Optional[str] = None,
100
104
  include_submodules: bool = False,
101
105
  access_token: Optional[str] = None,
102
106
  credentials: Optional["Block"] = None,
@@ -108,6 +112,7 @@ def git_clone(
108
112
  Args:
109
113
  repository: the URL of the repository to clone
110
114
  branch: the branch to clone; if not provided, the default branch will be used
115
+ commit_sha: the commit SHA to clone; if not provided, the default branch will be used
111
116
  include_submodules (bool): whether to include git submodules when cloning the repository
112
117
  access_token: an access token to use for cloning the repository; if not provided
113
118
  the repository will be cloned using the default git credentials
@@ -191,6 +196,7 @@ def git_clone(
191
196
  url=repository,
192
197
  credentials=_credentials,
193
198
  branch=branch,
199
+ commit_sha=commit_sha,
194
200
  include_submodules=include_submodules,
195
201
  directories=directories,
196
202
  )
@@ -119,6 +119,7 @@ class GitRepository:
119
119
  credentials: Union[GitCredentials, Block, dict[str, Any], None] = None,
120
120
  name: str | None = None,
121
121
  branch: str | None = None,
122
+ commit_sha: str | None = None,
122
123
  include_submodules: bool = False,
123
124
  pull_interval: int | None = 60,
124
125
  directories: list[str] | None = None,
@@ -135,8 +136,15 @@ class GitRepository:
135
136
  "If a username is provided, an access token or password must also be"
136
137
  " provided."
137
138
  )
139
+
140
+ if branch and commit_sha:
141
+ raise ValueError(
142
+ "Cannot provide both a branch and a commit SHA. Please provide only one."
143
+ )
144
+
138
145
  self._url = url
139
146
  self._branch = branch
147
+ self._commit_sha = commit_sha
140
148
  self._credentials = credentials
141
149
  self._include_submodules = include_submodules
142
150
  repo_name = urlparse(url).path.split("/")[-1].replace(".git", "")
@@ -214,7 +222,6 @@ class GitRepository:
214
222
  """
215
223
  Check if existing repo is sparsely checked out
216
224
  """
217
-
218
225
  try:
219
226
  result = await run_process(
220
227
  ["git", "config", "--get", "core.sparseCheckout"], cwd=self.destination
@@ -223,6 +230,34 @@ class GitRepository:
223
230
  except Exception:
224
231
  return False
225
232
 
233
+ async def is_shallow_clone(self) -> bool:
234
+ """
235
+ Check if the repository is a shallow clone
236
+ """
237
+ try:
238
+ result = await run_process(
239
+ ["git", "rev-parse", "--is-shallow-repository"],
240
+ cwd=self.destination,
241
+ )
242
+ return result.stdout.decode().strip().lower() == "true"
243
+ except Exception:
244
+ return False
245
+
246
+ async def is_current_commit(self) -> bool:
247
+ """
248
+ Check if the current commit is the same as the commit SHA
249
+ """
250
+ if not self._commit_sha:
251
+ raise ValueError("No commit SHA provided")
252
+ try:
253
+ result = await run_process(
254
+ ["git", "rev-parse", self._commit_sha],
255
+ cwd=self.destination,
256
+ )
257
+ return result.stdout.decode().strip() == self._commit_sha
258
+ except Exception:
259
+ return False
260
+
226
261
  async def pull_code(self) -> None:
227
262
  """
228
263
  Pulls the contents of the configured repository to the local filesystem.
@@ -262,22 +297,52 @@ class GitRepository:
262
297
  cmd = ["git"]
263
298
  # Add the git configuration, must be given after `git` and before the command
264
299
  cmd += self._git_config
265
- # Add the pull command and parameters
266
- cmd += ["pull", "origin"]
267
- if self._branch:
268
- cmd += [self._branch]
269
- if self._include_submodules:
270
- cmd += ["--recurse-submodules"]
271
- cmd += ["--depth", "1"]
272
- try:
273
- await run_process(cmd, cwd=self.destination)
274
- self._logger.debug("Successfully pulled latest changes")
275
- except subprocess.CalledProcessError as exc:
276
- self._logger.error(
277
- f"Failed to pull latest changes with exit code {exc}"
300
+
301
+ # If the commit is already checked out, skip the pull
302
+ if self._commit_sha and await self.is_current_commit():
303
+ return
304
+
305
+ # If checking out a specific commit, fetch the latest changes and unshallow the repository if necessary
306
+ elif self._commit_sha:
307
+ if await self.is_shallow_clone():
308
+ cmd += ["fetch", "origin", "--unshallow"]
309
+ else:
310
+ cmd += ["fetch", "origin", self._commit_sha]
311
+ try:
312
+ await run_process(cmd, cwd=self.destination)
313
+ self._logger.debug("Successfully fetched latest changes")
314
+ except subprocess.CalledProcessError as exc:
315
+ self._logger.error(
316
+ f"Failed to fetch latest changes with exit code {exc}"
317
+ )
318
+ shutil.rmtree(self.destination)
319
+ await self._clone_repo()
320
+
321
+ await run_process(
322
+ ["git", "checkout", self._commit_sha],
323
+ cwd=self.destination,
324
+ )
325
+ self._logger.debug(
326
+ f"Successfully checked out commit {self._commit_sha}"
278
327
  )
279
- shutil.rmtree(self.destination)
280
- await self._clone_repo()
328
+
329
+ # Otherwise, pull the latest changes from the branch
330
+ else:
331
+ cmd += ["pull", "origin"]
332
+ if self._branch:
333
+ cmd += [self._branch]
334
+ if self._include_submodules:
335
+ cmd += ["--recurse-submodules"]
336
+ cmd += ["--depth", "1"]
337
+ try:
338
+ await run_process(cmd, cwd=self.destination)
339
+ self._logger.debug("Successfully pulled latest changes")
340
+ except subprocess.CalledProcessError as exc:
341
+ self._logger.error(
342
+ f"Failed to pull latest changes with exit code {exc}"
343
+ )
344
+ shutil.rmtree(self.destination)
345
+ await self._clone_repo()
281
346
 
282
347
  else:
283
348
  await self._clone_repo()
@@ -295,8 +360,6 @@ class GitRepository:
295
360
  # Add the clone command and its parameters
296
361
  cmd += ["clone", repository_url]
297
362
 
298
- if self._branch:
299
- cmd += ["--branch", self._branch]
300
363
  if self._include_submodules:
301
364
  cmd += ["--recurse-submodules"]
302
365
 
@@ -304,8 +367,18 @@ class GitRepository:
304
367
  if self._directories:
305
368
  cmd += ["--sparse"]
306
369
 
307
- # Limit git history and set path to clone to
308
- cmd += ["--depth", "1", str(self.destination)]
370
+ if self._commit_sha:
371
+ cmd += ["--filter=blob:none", "--no-checkout"]
372
+
373
+ else:
374
+ if self._branch:
375
+ cmd += ["--branch", self._branch]
376
+
377
+ # Limit git history
378
+ cmd += ["--depth", "1"]
379
+
380
+ # Set path to clone to
381
+ cmd += [str(self.destination)]
309
382
 
310
383
  try:
311
384
  await run_process(cmd)
@@ -317,6 +390,19 @@ class GitRepository:
317
390
  f" {exc.returncode}."
318
391
  ) from exc_chain
319
392
 
393
+ if self._commit_sha:
394
+ # Fetch the commit
395
+ await run_process(
396
+ ["git", "fetch", "origin", self._commit_sha],
397
+ cwd=self.destination,
398
+ )
399
+ # Checkout the specific commit
400
+ await run_process(
401
+ ["git", "checkout", self._commit_sha],
402
+ cwd=self.destination,
403
+ )
404
+ self._logger.debug(f"Successfully checked out commit {self._commit_sha}")
405
+
320
406
  # Once repository is cloned and the repo is in sparse-checkout mode then grow the working directory
321
407
  if self._directories:
322
408
  self._logger.debug("Will add %s", self._directories)
@@ -351,6 +437,10 @@ class GitRepository:
351
437
  pull_step["prefect.deployments.steps.git_clone"]["include_submodules"] = (
352
438
  self._include_submodules
353
439
  )
440
+ if self._commit_sha:
441
+ pull_step["prefect.deployments.steps.git_clone"]["commit_sha"] = (
442
+ self._commit_sha
443
+ )
354
444
  if isinstance(self._credentials, Block):
355
445
  pull_step["prefect.deployments.steps.git_clone"]["credentials"] = (
356
446
  f"{{{{ {self._credentials.get_block_placeholder()} }}}}"
@@ -13,7 +13,6 @@ from . import (
13
13
  dependencies,
14
14
  deployments,
15
15
  events,
16
- flow_run_notification_policies,
17
16
  flow_run_states,
18
17
  flow_runs,
19
18
  flows,
@@ -89,7 +89,6 @@ API_ROUTERS = (
89
89
  api.task_runs.router,
90
90
  api.flow_run_states.router,
91
91
  api.task_run_states.router,
92
- api.flow_run_notification_policies.router,
93
92
  api.deployments.router,
94
93
  api.saved_searches.router,
95
94
  api.logs.router,