prefect-client 3.2.13__tar.gz → 3.2.15.dev7__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 (326) hide show
  1. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/PKG-INFO +3 -2
  2. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/pyproject.toml +2 -1
  3. prefect_client-3.2.15.dev7/src/prefect/_build_info.py +5 -0
  4. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_experimental/bundles.py +7 -1
  5. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/services.py +13 -3
  6. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_flow_runs/client.py +34 -4
  7. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/actions.py +14 -1
  8. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/objects.py +18 -0
  9. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/runner.py +1 -9
  10. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/docker/docker_image.py +2 -1
  11. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/flow_engine.py +11 -5
  12. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/flow_runs.py +1 -1
  13. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/flows.py +27 -9
  14. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/locking/memory.py +16 -8
  15. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/__init__.py +1 -1
  16. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/configuration.py +6 -4
  17. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/formatters.py +3 -3
  18. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/handlers.py +37 -26
  19. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/results.py +9 -3
  20. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runner/__init__.py +2 -0
  21. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runner/runner.py +1 -1
  22. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runner/server.py +12 -7
  23. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runner/storage.py +37 -37
  24. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runner/submit.py +36 -25
  25. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runner/utils.py +9 -5
  26. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +4 -4
  27. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/flow_runs.py +21 -0
  28. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/task_runs.py +52 -1
  29. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/tasks.py +5 -0
  30. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/task_engine.py +18 -24
  31. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/tasks.py +31 -8
  32. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/transactions.py +5 -0
  33. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/callables.py +2 -0
  34. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/engine.py +2 -2
  35. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/importtools.py +6 -9
  36. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/workers/base.py +7 -3
  37. prefect_client-3.2.13/src/prefect/_build_info.py +0 -5
  38. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/.gitignore +0 -0
  39. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/LICENSE +0 -0
  40. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/README.md +0 -0
  41. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/.prefectignore +0 -0
  42. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/__init__.py +0 -0
  43. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/__main__.py +0 -0
  44. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_experimental/__init__.py +0 -0
  45. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_experimental/lineage.py +0 -0
  46. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_experimental/sla/__init__.py +0 -0
  47. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_experimental/sla/client.py +0 -0
  48. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_experimental/sla/objects.py +0 -0
  49. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/__init__.py +0 -0
  50. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/_logging.py +0 -0
  51. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/compatibility/__init__.py +0 -0
  52. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  53. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  54. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/compatibility/migration.py +0 -0
  55. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/__init__.py +0 -0
  56. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/api.py +0 -0
  57. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/calls.py +0 -0
  58. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  59. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  60. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/inspection.py +0 -0
  61. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/primitives.py +0 -0
  62. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/threads.py +0 -0
  63. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/concurrency/waiters.py +0 -0
  64. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/integrations.py +0 -0
  65. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/__init__.py +0 -0
  66. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
  67. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
  68. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/schemas.py +0 -0
  69. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  70. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  71. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  72. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/pytz.py +0 -0
  73. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/retries.py +0 -0
  74. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/schemas/__init__.py +0 -0
  75. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/schemas/bases.py +0 -0
  76. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/schemas/fields.py +0 -0
  77. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/schemas/serializers.py +0 -0
  78. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_internal/schemas/validators.py +0 -0
  79. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_result_records.py +0 -0
  80. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_vendor/croniter/__init__.py +0 -0
  81. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_vendor/croniter/croniter.py +0 -0
  82. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/_waiters.py +0 -0
  83. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/agent.py +0 -0
  84. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/artifacts.py +0 -0
  85. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/automations.py +0 -0
  86. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/__init__.py +0 -0
  87. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/abstract.py +0 -0
  88. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/core.py +0 -0
  89. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/fields.py +0 -0
  90. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/notifications.py +0 -0
  91. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/redis.py +0 -0
  92. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/system.py +0 -0
  93. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/blocks/webhook.py +0 -0
  94. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/cache_policies.py +0 -0
  95. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/__init__.py +0 -0
  96. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/base.py +0 -0
  97. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/cloud.py +0 -0
  98. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/collections.py +0 -0
  99. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/constants.py +0 -0
  100. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/__init__.py +0 -0
  101. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  102. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  103. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  104. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_automations/client.py +0 -0
  105. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  106. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  107. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  108. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  109. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  110. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  111. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  112. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  113. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  114. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  115. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  116. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  117. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_flows/client.py +0 -0
  118. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  119. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_logs/client.py +0 -0
  120. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  121. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_variables/client.py +0 -0
  122. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  123. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  124. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/base.py +0 -0
  125. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/orchestration/routes.py +0 -0
  126. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/__init__.py +0 -0
  127. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/filters.py +0 -0
  128. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/responses.py +0 -0
  129. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/schedules.py +0 -0
  130. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/schemas/sorting.py +0 -0
  131. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/subscriptions.py +0 -0
  132. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/types/__init__.py +0 -0
  133. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  134. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/client/utilities.py +0 -0
  135. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/__init__.py +0 -0
  136. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/_asyncio.py +0 -0
  137. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/_events.py +0 -0
  138. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/asyncio.py +0 -0
  139. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/context.py +0 -0
  140. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/services.py +0 -0
  141. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/sync.py +0 -0
  142. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/__init__.py +0 -0
  143. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  144. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/_events.py +0 -0
  145. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/asyncio.py +0 -0
  146. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/context.py +0 -0
  147. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/services.py +0 -0
  148. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/concurrency/v1/sync.py +0 -0
  149. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/context.py +0 -0
  150. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/__init__.py +0 -0
  151. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/base.py +0 -0
  152. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/deployments.py +0 -0
  153. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/flow_runs.py +0 -0
  154. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/schedules.py +0 -0
  155. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/steps/__init__.py +0 -0
  156. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/steps/core.py +0 -0
  157. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/steps/pull.py +0 -0
  158. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/deployments/steps/utility.py +0 -0
  159. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/docker/__init__.py +0 -0
  160. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/engine.py +0 -0
  161. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/__init__.py +0 -0
  162. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/actions.py +0 -0
  163. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/cli/__init__.py +0 -0
  164. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/cli/automations.py +0 -0
  165. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/clients.py +0 -0
  166. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/filters.py +0 -0
  167. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/related.py +0 -0
  168. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/schemas/__init__.py +0 -0
  169. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/schemas/automations.py +0 -0
  170. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  171. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/schemas/events.py +0 -0
  172. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/schemas/labelling.py +0 -0
  173. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/utilities.py +0 -0
  174. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/events/worker.py +0 -0
  175. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/exceptions.py +0 -0
  176. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/filesystems.py +0 -0
  177. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/futures.py +0 -0
  178. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/__init__.py +0 -0
  179. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/base.py +0 -0
  180. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  181. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  182. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  183. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  184. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  185. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  186. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/input/__init__.py +0 -0
  187. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/input/actions.py +0 -0
  188. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/input/run_input.py +0 -0
  189. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/locking/__init__.py +0 -0
  190. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/locking/filesystem.py +0 -0
  191. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/locking/protocol.py +0 -0
  192. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/filters.py +0 -0
  193. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/highlighters.py +0 -0
  194. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/loggers.py +0 -0
  195. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/logging/logging.yml +0 -0
  196. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/main.py +0 -0
  197. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/plugins.py +0 -0
  198. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/py.typed +0 -0
  199. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runtime/__init__.py +0 -0
  200. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runtime/deployment.py +0 -0
  201. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runtime/flow_run.py +0 -0
  202. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/runtime/task_run.py +0 -0
  203. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/schedules.py +0 -0
  204. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/serializers.py +0 -0
  205. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/__init__.py +0 -0
  206. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/admin.py +0 -0
  207. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/artifacts.py +0 -0
  208. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/automations.py +0 -0
  209. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/block_capabilities.py +0 -0
  210. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/block_documents.py +0 -0
  211. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/block_schemas.py +0 -0
  212. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/block_types.py +0 -0
  213. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/clients.py +0 -0
  214. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/collections.py +0 -0
  215. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/concurrency_limits.py +0 -0
  216. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  217. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/csrf_token.py +0 -0
  218. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/dependencies.py +0 -0
  219. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/deployments.py +0 -0
  220. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/events.py +0 -0
  221. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/flow_run_notification_policies.py +0 -0
  222. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/flow_run_states.py +0 -0
  223. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/flows.py +0 -0
  224. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/logs.py +0 -0
  225. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/middleware.py +0 -0
  226. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/root.py +0 -0
  227. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/run_history.py +0 -0
  228. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/saved_searches.py +0 -0
  229. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/server.py +0 -0
  230. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  231. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/task_run_states.py +0 -0
  232. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/task_workers.py +0 -0
  233. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/templates.py +0 -0
  234. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/ui/__init__.py +0 -0
  235. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/ui/flow_runs.py +0 -0
  236. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/ui/flows.py +0 -0
  237. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/ui/schemas.py +0 -0
  238. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/ui/task_runs.py +0 -0
  239. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/validation.py +0 -0
  240. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/variables.py +0 -0
  241. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/work_queues.py +0 -0
  242. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/server/api/workers.py +0 -0
  243. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/__init__.py +0 -0
  244. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/base.py +0 -0
  245. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/constants.py +0 -0
  246. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/context.py +0 -0
  247. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/legacy.py +0 -0
  248. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/__init__.py +0 -0
  249. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/api.py +0 -0
  250. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/cli.py +0 -0
  251. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/client.py +0 -0
  252. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/cloud.py +0 -0
  253. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/deployments.py +0 -0
  254. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/experiments.py +0 -0
  255. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/flows.py +0 -0
  256. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/internal.py +0 -0
  257. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/logging.py +0 -0
  258. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/results.py +0 -0
  259. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/root.py +0 -0
  260. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/runner.py +0 -0
  261. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/__init__.py +0 -0
  262. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/api.py +0 -0
  263. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/database.py +0 -0
  264. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/deployments.py +0 -0
  265. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/ephemeral.py +0 -0
  266. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/events.py +0 -0
  267. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  268. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/root.py +0 -0
  269. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/services.py +0 -0
  270. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/tasks.py +0 -0
  271. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/server/ui.py +0 -0
  272. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/testing.py +0 -0
  273. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/models/worker.py +0 -0
  274. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/profiles.py +0 -0
  275. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/profiles.toml +0 -0
  276. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/settings/sources.py +0 -0
  277. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/states.py +0 -0
  278. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/task_runners.py +0 -0
  279. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/task_runs.py +0 -0
  280. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/task_worker.py +0 -0
  281. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/__init__.py +0 -0
  282. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/bootstrap.py +0 -0
  283. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/instrumentation.py +0 -0
  284. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/logging.py +0 -0
  285. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/processors.py +0 -0
  286. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/run_telemetry.py +0 -0
  287. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/telemetry/services.py +0 -0
  288. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/types/__init__.py +0 -0
  289. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/types/_datetime.py +0 -0
  290. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/types/entrypoint.py +0 -0
  291. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/__init__.py +0 -0
  292. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/_deprecated.py +0 -0
  293. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/_engine.py +0 -0
  294. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/_git.py +0 -0
  295. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/annotations.py +0 -0
  296. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/asyncutils.py +0 -0
  297. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/collections.py +0 -0
  298. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/compat.py +0 -0
  299. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/context.py +0 -0
  300. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/dispatch.py +0 -0
  301. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/dockerutils.py +0 -0
  302. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/filesystem.py +0 -0
  303. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/generics.py +0 -0
  304. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/hashing.py +0 -0
  305. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/math.py +0 -0
  306. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/names.py +0 -0
  307. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/processutils.py +0 -0
  308. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/pydantic.py +0 -0
  309. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/render_swagger.py +0 -0
  310. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  311. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  312. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/schema_tools/validation.py +0 -0
  313. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/services.py +0 -0
  314. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/slugify.py +0 -0
  315. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/templating.py +0 -0
  316. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/text.py +0 -0
  317. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/timeout.py +0 -0
  318. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/urls.py +0 -0
  319. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/utilities/visualization.py +0 -0
  320. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/variables.py +0 -0
  321. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/workers/__init__.py +0 -0
  322. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/workers/block.py +0 -0
  323. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/workers/cloud.py +0 -0
  324. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/workers/process.py +0 -0
  325. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/src/prefect/workers/server.py +0 -0
  326. {prefect_client-3.2.13 → prefect_client-3.2.15.dev7}/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.2.13
3
+ Version: 3.2.15.dev7
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
@@ -48,13 +48,14 @@ Requires-Dist: pydantic-settings>2.2.1
48
48
  Requires-Dist: python-dateutil<3.0.0,>=2.8.2
49
49
  Requires-Dist: python-slugify<9.0,>=5.0
50
50
  Requires-Dist: python-socks[asyncio]<3.0,>=2.5.3
51
+ Requires-Dist: pytz<2026,>=2021.1
51
52
  Requires-Dist: pyyaml<7.0.0,>=5.4.1
52
53
  Requires-Dist: rfc3339-validator<0.2.0,>=0.1.4
53
54
  Requires-Dist: rich<14.0,>=11.0
54
55
  Requires-Dist: ruamel-yaml>=0.17.0
55
56
  Requires-Dist: sniffio<2.0.0,>=1.3.0
56
57
  Requires-Dist: toml>=0.10.0
57
- Requires-Dist: typing-extensions<5.0.0,>=4.5.0
58
+ Requires-Dist: typing-extensions<5.0.0,>=4.10.0
58
59
  Requires-Dist: ujson<6.0.0,>=5.8.0
59
60
  Requires-Dist: uvicorn!=0.29.0,>=0.14.0
60
61
  Requires-Dist: websockets<16.0,>=13.0
@@ -52,13 +52,14 @@ dependencies = [
52
52
  "python-dateutil>=2.8.2,<3.0.0",
53
53
  "python-slugify>=5.0,<9.0",
54
54
  "python-socks[asyncio]>=2.5.3,<3.0",
55
+ "pytz>=2021.1,<2026",
55
56
  "pyyaml>=5.4.1,<7.0.0",
56
57
  "rfc3339-validator>=0.1.4,<0.2.0",
57
58
  "rich>=11.0,<14.0",
58
59
  "ruamel.yaml>=0.17.0",
59
60
  "sniffio>=1.3.0,<2.0.0",
60
61
  "toml>=0.10.0",
61
- "typing_extensions>=4.5.0,<5.0.0",
62
+ "typing_extensions>=4.10.0,<5.0.0",
62
63
  "ujson>=5.8.0,<6.0.0",
63
64
  "uvicorn>=0.14.0,!=0.29.0",
64
65
  "websockets>=13.0,<16.0",
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.2.15.dev7"
3
+ __build_date__ = "2025-03-26 18:43:23.716248+00:00"
4
+ __git_commit__ = "d56a01ceb58880a27246bb0c4a075e5b28bfafd4"
5
+ __dirty__ = False
@@ -173,13 +173,16 @@ def execute_bundle_in_subprocess(
173
173
  return process
174
174
 
175
175
 
176
- def convert_step_to_command(step: dict[str, Any], key: str) -> list[str]:
176
+ def convert_step_to_command(
177
+ step: dict[str, Any], key: str, quiet: bool = False
178
+ ) -> list[str]:
177
179
  """
178
180
  Converts a bundle upload or execution step to a command.
179
181
 
180
182
  Args:
181
183
  step: The step to convert.
182
184
  key: The key to use for the remote file when downloading or uploading.
185
+ quiet: Whether to suppress `uv` output from the command.
183
186
 
184
187
  Returns:
185
188
  A list of strings representing the command to run the step.
@@ -187,6 +190,9 @@ def convert_step_to_command(step: dict[str, Any], key: str) -> list[str]:
187
190
  # Start with uv run
188
191
  command = ["uv", "run"]
189
192
 
193
+ if quiet:
194
+ command.append("--quiet")
195
+
190
196
  step_keys = list(step.keys())
191
197
 
192
198
  if len(step_keys) != 1:
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import abc
2
4
  import asyncio
3
5
  import concurrent.futures
@@ -375,6 +377,14 @@ class BatchedQueueService(QueueService[T]):
375
377
  _max_batch_size: int
376
378
  _min_interval: Optional[float] = None
377
379
 
380
+ @property
381
+ def min_interval(self) -> float | None:
382
+ return self.__class__._min_interval
383
+
384
+ @property
385
+ def max_batch_size(self) -> int:
386
+ return self.__class__._max_batch_size
387
+
378
388
  async def _main_loop(self):
379
389
  done = False
380
390
 
@@ -383,8 +393,8 @@ class BatchedQueueService(QueueService[T]):
383
393
  batch_size = 0
384
394
 
385
395
  # Pull items from the queue until we reach the batch size
386
- deadline = get_deadline(self._min_interval)
387
- while batch_size < self._max_batch_size:
396
+ deadline = get_deadline(self.min_interval)
397
+ while batch_size < self.max_batch_size:
388
398
  try:
389
399
  item = await self._queue_get_thread.submit(
390
400
  create_call(self._queue.get, timeout=get_timeout(deadline))
@@ -401,7 +411,7 @@ class BatchedQueueService(QueueService[T]):
401
411
  self,
402
412
  item,
403
413
  batch_size,
404
- self._max_batch_size,
414
+ self.max_batch_size,
405
415
  )
406
416
  except queue.Empty:
407
417
  # Process the batch after `min_interval` even if it is smaller than
@@ -46,6 +46,9 @@ class FlowRunClient(BaseClient):
46
46
  tags: "Iterable[str] | None" = None,
47
47
  parent_task_run_id: "UUID | None" = None,
48
48
  state: "State[R] | None" = None,
49
+ work_pool_name: str | None = None,
50
+ work_queue_name: str | None = None,
51
+ job_variables: dict[str, Any] | None = None,
49
52
  ) -> "FlowRun":
50
53
  """
51
54
  Create a flow run for a flow.
@@ -59,7 +62,10 @@ class FlowRunClient(BaseClient):
59
62
  parent_task_run_id: if a subflow run is being created, the placeholder task
60
63
  run identifier in the parent flow
61
64
  state: The initial state for the run. If not provided, defaults to
62
- `Scheduled` for now. Should always be a `Scheduled` type.
65
+ `Pending`.
66
+ work_pool_name: The name of the work pool to run the flow run in.
67
+ work_queue_name: The name of the work queue to place the flow run in.
68
+ job_variables: The job variables to use when setting up flow run infrastructure.
63
69
 
64
70
  Raises:
65
71
  httpx.RequestError: if the Prefect API does not successfully create a run for any reason
@@ -100,7 +106,16 @@ class FlowRunClient(BaseClient):
100
106
  ),
101
107
  )
102
108
 
103
- flow_run_create_json = flow_run_create.model_dump(mode="json")
109
+ if work_pool_name is not None:
110
+ flow_run_create.work_pool_name = work_pool_name
111
+ if work_queue_name is not None:
112
+ flow_run_create.work_queue_name = work_queue_name
113
+ if job_variables is not None:
114
+ flow_run_create.job_variables = job_variables
115
+
116
+ flow_run_create_json = flow_run_create.model_dump(
117
+ mode="json", exclude_unset=True
118
+ )
104
119
  response = self.request("POST", "/flow_runs/", json=flow_run_create_json)
105
120
 
106
121
  flow_run = FlowRun.model_validate(response.json())
@@ -480,6 +495,9 @@ class FlowRunAsyncClient(BaseAsyncClient):
480
495
  tags: "Iterable[str] | None" = None,
481
496
  parent_task_run_id: "UUID | None" = None,
482
497
  state: "State[R] | None" = None,
498
+ work_pool_name: str | None = None,
499
+ work_queue_name: str | None = None,
500
+ job_variables: dict[str, Any] | None = None,
483
501
  ) -> "FlowRun":
484
502
  """
485
503
  Create a flow run for a flow.
@@ -493,7 +511,10 @@ class FlowRunAsyncClient(BaseAsyncClient):
493
511
  parent_task_run_id: if a subflow run is being created, the placeholder task
494
512
  run identifier in the parent flow
495
513
  state: The initial state for the run. If not provided, defaults to
496
- `Scheduled` for now. Should always be a `Scheduled` type.
514
+ `Pending`.
515
+ work_pool_name: The name of the work pool to run the flow run in.
516
+ work_queue_name: The name of the work queue to place the flow run in.
517
+ job_variables: The job variables to use when setting up flow run infrastructure.
497
518
 
498
519
  Raises:
499
520
  httpx.RequestError: if the Prefect API does not successfully create a run for any reason
@@ -534,7 +555,16 @@ class FlowRunAsyncClient(BaseAsyncClient):
534
555
  ),
535
556
  )
536
557
 
537
- flow_run_create_json = flow_run_create.model_dump(mode="json")
558
+ if work_pool_name is not None:
559
+ flow_run_create.work_pool_name = work_pool_name
560
+ if work_queue_name is not None:
561
+ flow_run_create.work_queue_name = work_queue_name
562
+ if job_variables is not None:
563
+ flow_run_create.job_variables = job_variables
564
+
565
+ flow_run_create_json = flow_run_create.model_dump(
566
+ mode="json", exclude_unset=True
567
+ )
538
568
  response = await self.request("POST", "/flow_runs/", json=flow_run_create_json)
539
569
 
540
570
  flow_run = FlowRun.model_validate(response.json())
@@ -23,6 +23,7 @@ from prefect._internal.schemas.validators import (
23
23
  from prefect.client.schemas.objects import (
24
24
  StateDetails,
25
25
  StateType,
26
+ WorkPoolStorageConfiguration,
26
27
  )
27
28
  from prefect.client.schemas.schedules import (
28
29
  SCHEDULE_TYPES,
@@ -38,6 +39,7 @@ from prefect.types import (
38
39
  DateTime,
39
40
  KeyValueLabelsField,
40
41
  Name,
42
+ NameOrEmpty,
41
43
  NonEmptyishName,
42
44
  NonNegativeFloat,
43
45
  NonNegativeInteger,
@@ -211,7 +213,7 @@ class DeploymentCreate(ActionBaseModel):
211
213
  ) -> Union[str, list[str]]:
212
214
  return convert_to_strings(values)
213
215
 
214
- name: str = Field(..., description="The name of the deployment.")
216
+ name: NameOrEmpty = Field(..., description="The name of the deployment.")
215
217
  flow_id: UUID = Field(..., description="The ID of the flow to deploy.")
216
218
  paused: Optional[bool] = Field(default=None)
217
219
  schedules: list[DeploymentScheduleCreate] = Field(
@@ -443,6 +445,9 @@ class FlowRunCreate(ActionBaseModel):
443
445
  idempotency_key: Optional[str] = Field(default=None)
444
446
 
445
447
  labels: KeyValueLabelsField = Field(default_factory=dict)
448
+ work_pool_name: Optional[str] = Field(default=None)
449
+ work_queue_name: Optional[str] = Field(default=None)
450
+ job_variables: Optional[dict[str, Any]] = Field(default=None)
446
451
 
447
452
 
448
453
  class DeploymentFlowRunCreate(ActionBaseModel):
@@ -684,6 +689,10 @@ class WorkPoolCreate(ActionBaseModel):
684
689
  concurrency_limit: Optional[NonNegativeInteger] = Field(
685
690
  default=None, description="A concurrency limit for the work pool."
686
691
  )
692
+ storage_configuration: WorkPoolStorageConfiguration = Field(
693
+ default_factory=WorkPoolStorageConfiguration,
694
+ description="A storage configuration for the work pool.",
695
+ )
687
696
 
688
697
 
689
698
  class WorkPoolUpdate(ActionBaseModel):
@@ -693,6 +702,10 @@ class WorkPoolUpdate(ActionBaseModel):
693
702
  is_paused: Optional[bool] = Field(default=None)
694
703
  base_job_template: Optional[dict[str, Any]] = Field(default=None)
695
704
  concurrency_limit: Optional[int] = Field(default=None)
705
+ storage_configuration: Optional[WorkPoolStorageConfiguration] = Field(
706
+ default=None,
707
+ description="A storage configuration for the work pool.",
708
+ )
696
709
 
697
710
 
698
711
  class WorkQueueCreate(ActionBaseModel):
@@ -1445,6 +1445,19 @@ class Agent(ObjectBaseModel):
1445
1445
  )
1446
1446
 
1447
1447
 
1448
+ class WorkPoolStorageConfiguration(PrefectBaseModel):
1449
+ """A work pool storage configuration"""
1450
+
1451
+ model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid")
1452
+
1453
+ bundle_upload_step: Optional[dict[str, Any]] = Field(
1454
+ default=None, description="The bundle upload step for the work pool."
1455
+ )
1456
+ bundle_execution_step: Optional[dict[str, Any]] = Field(
1457
+ default=None, description="The bundle execution step for the work pool."
1458
+ )
1459
+
1460
+
1448
1461
  class WorkPool(ObjectBaseModel):
1449
1462
  """An ORM representation of a work pool"""
1450
1463
 
@@ -1469,6 +1482,11 @@ class WorkPool(ObjectBaseModel):
1469
1482
  default=None, description="The current status of the work pool."
1470
1483
  )
1471
1484
 
1485
+ storage_configuration: WorkPoolStorageConfiguration = Field(
1486
+ default_factory=WorkPoolStorageConfiguration,
1487
+ description="The storage configuration for the work pool.",
1488
+ )
1489
+
1472
1490
  # this required field has a default of None so that the custom validator
1473
1491
  # below will be called and produce a more helpful error message. Because
1474
1492
  # the field metadata is attached via an annotation, the default is hidden
@@ -676,15 +676,7 @@ class RunnerDeployment(BaseModel):
676
676
  try:
677
677
  module = importlib.import_module(mod_name)
678
678
  flow_file = getattr(module, "__file__", None)
679
- except ModuleNotFoundError as exc:
680
- # 16458 adds an identifier to the module name, so checking
681
- # for "__prefect_loader__" (2 underscores) will not match
682
- if "__prefect_loader_" in str(exc):
683
- raise ValueError(
684
- "Cannot create a RunnerDeployment from a flow that has been"
685
- " loaded from an entrypoint. To deploy a flow via"
686
- " entrypoint, use RunnerDeployment.from_entrypoint instead."
687
- )
679
+ except ModuleNotFoundError:
688
680
  raise ValueError(no_file_location_error)
689
681
  if not flow_file:
690
682
  raise ValueError(no_file_location_error)
@@ -64,7 +64,8 @@ class DockerImage:
64
64
  def build(self) -> None:
65
65
  full_image_name = self.reference
66
66
  build_kwargs = self.build_kwargs.copy()
67
- build_kwargs["context"] = Path.cwd()
67
+ if "context" not in build_kwargs:
68
+ build_kwargs["context"] = Path.cwd()
68
69
  build_kwargs["tag"] = full_image_name
69
70
  build_kwargs["pull"] = build_kwargs.get("pull", True)
70
71
 
@@ -707,7 +707,11 @@ class FlowRunEngine(BaseFlowRunEngine[P, R]):
707
707
  except Exception:
708
708
  # regular exceptions are caught and re-raised to the user
709
709
  raise
710
- except (Abort, Pause):
710
+ except (Abort, Pause) as exc:
711
+ if getattr(exc, "state", None):
712
+ # we set attribute explicitly because
713
+ # internals will have already called the state change API
714
+ self.flow_run.state = exc.state
711
715
  raise
712
716
  except GeneratorExit:
713
717
  # Do not capture generator exits as crashes
@@ -722,9 +726,7 @@ class FlowRunEngine(BaseFlowRunEngine[P, R]):
722
726
  repr(self.state) if PREFECT_DEBUG_MODE else str(self.state)
723
727
  )
724
728
  self.logger.log(
725
- level=logging.INFO
726
- if self.state.is_completed()
727
- else logging.ERROR,
729
+ level=logging.INFO,
728
730
  msg=f"Finished in state {display_state}",
729
731
  )
730
732
 
@@ -1277,7 +1279,11 @@ class AsyncFlowRunEngine(BaseFlowRunEngine[P, R]):
1277
1279
  except Exception:
1278
1280
  # regular exceptions are caught and re-raised to the user
1279
1281
  raise
1280
- except (Abort, Pause):
1282
+ except (Abort, Pause) as exc:
1283
+ if getattr(exc, "state", None):
1284
+ # we set attribute explicitly because
1285
+ # internals will have already called the state change API
1286
+ self.flow_run.state = exc.state
1281
1287
  raise
1282
1288
  except GeneratorExit:
1283
1289
  # Do not capture generator exits as crashes
@@ -454,7 +454,7 @@ async def suspend_flow_run(
454
454
 
455
455
  if suspending_current_flow_run:
456
456
  # Exit this process so the run can be resubmitted later
457
- raise Pause()
457
+ raise Pause(state=state)
458
458
 
459
459
 
460
460
  @sync_compatible
@@ -196,7 +196,7 @@ class Flow(Generic[P, R]):
196
196
  # exactly in the @flow decorator
197
197
  def __init__(
198
198
  self,
199
- fn: Callable[P, R],
199
+ fn: Callable[P, R] | "classmethod[Any, P, R]" | "staticmethod[P, R]",
200
200
  name: Optional[str] = None,
201
201
  version: Optional[str] = None,
202
202
  flow_run_name: Optional[Union[Callable[[], str], str]] = None,
@@ -270,6 +270,13 @@ class Flow(Generic[P, R]):
270
270
  " my_flow():\n\tpass"
271
271
  )
272
272
 
273
+ if isinstance(fn, classmethod):
274
+ fn = cast(Callable[P, R], fn.__func__)
275
+
276
+ if isinstance(fn, staticmethod):
277
+ fn = cast(Callable[P, R], fn.__func__)
278
+ setattr(fn, "__prefect_static__", True)
279
+
273
280
  if not callable(fn):
274
281
  raise TypeError("'fn' must be callable")
275
282
 
@@ -396,16 +403,28 @@ class Flow(Generic[P, R]):
396
403
  def ismethod(self) -> bool:
397
404
  return hasattr(self.fn, "__prefect_self__")
398
405
 
406
+ @property
407
+ def isclassmethod(self) -> bool:
408
+ return hasattr(self.fn, "__prefect_cls__")
409
+
410
+ @property
411
+ def isstaticmethod(self) -> bool:
412
+ return getattr(self.fn, "__prefect_static__", False)
413
+
399
414
  def __get__(self, instance: Any, owner: Any) -> "Flow[P, R]":
400
415
  """
401
- Implement the descriptor protocol so that the flow can be used as an instance method.
416
+ Implement the descriptor protocol so that the flow can be used as an instance or class method.
402
417
  When an instance method is loaded, this method is called with the "self" instance as
403
418
  an argument. We return a copy of the flow with that instance bound to the flow's function.
404
419
  """
420
+ if self.isstaticmethod:
421
+ return self
405
422
 
406
- # if no instance is provided, it's being accessed on the class
423
+ # wrapped function is a classmethod
407
424
  if instance is None:
408
- return self
425
+ bound_flow = copy(self)
426
+ setattr(bound_flow.fn, "__prefect_cls__", owner)
427
+ return bound_flow
409
428
 
410
429
  # if the flow is being accessed on an instance, bind the instance to the __prefect_self__ attribute
411
430
  # of the flow's function. This will allow it to be automatically added to the flow's parameters
@@ -636,6 +655,10 @@ class Flow(Generic[P, R]):
636
655
  # do not serialize the bound self object
637
656
  if self.ismethod and value is getattr(self.fn, "__prefect_self__", None):
638
657
  continue
658
+ if self.isclassmethod and value is getattr(
659
+ self.fn, "__prefect_cls__", None
660
+ ):
661
+ continue
639
662
  if isinstance(value, (PrefectFuture, State)):
640
663
  # Don't call jsonable_encoder() on a PrefectFuture or State to
641
664
  # avoid triggering a __getitem__ call
@@ -1895,11 +1918,6 @@ class FlowDecorator:
1895
1918
  >>> pass
1896
1919
  """
1897
1920
  if __fn:
1898
- if isinstance(__fn, (classmethod, staticmethod)):
1899
- method_decorator = type(__fn).__name__
1900
- raise TypeError(
1901
- f"@{method_decorator} should be applied on top of @flow"
1902
- )
1903
1921
  return Flow(
1904
1922
  fn=__fn,
1905
1923
  name=name,
@@ -193,23 +193,31 @@ class MemoryLockManager(LockManager):
193
193
  )
194
194
 
195
195
  def wait_for_lock(self, key: str, timeout: Optional[float] = None) -> bool:
196
- if lock := self._locks.get(key, {}).get("lock"):
196
+ lock_info: _LockInfo | None = self._locks.get(key)
197
+ if lock_info is None:
198
+ return True
199
+ if lock_info["lock"].locked():
197
200
  if timeout is not None:
198
- lock_acquired = lock.acquire(timeout=timeout)
201
+ lock_acquired = lock_info["lock"].acquire(timeout=timeout)
199
202
  else:
200
- lock_acquired = lock.acquire()
203
+ lock_acquired = lock_info["lock"].acquire()
201
204
  if lock_acquired:
202
- lock.release()
205
+ lock_info["lock"].release()
203
206
  return lock_acquired
204
207
  return True
205
208
 
206
209
  async def await_for_lock(self, key: str, timeout: Optional[float] = None) -> bool:
207
- if lock := self._locks.get(key, {}).get("lock"):
210
+ lock_info: _LockInfo | None = self._locks.get(key, None)
211
+ if lock_info is None:
212
+ return True
213
+ if lock_info["lock"].locked():
208
214
  if timeout is not None:
209
- lock_acquired = await asyncio.to_thread(lock.acquire, timeout=timeout)
215
+ lock_acquired = await asyncio.to_thread(
216
+ lock_info["lock"].acquire, timeout=timeout
217
+ )
210
218
  else:
211
- lock_acquired = await asyncio.to_thread(lock.acquire)
219
+ lock_acquired = await asyncio.to_thread(lock_info["lock"].acquire)
212
220
  if lock_acquired:
213
- lock.release()
221
+ lock_info["lock"].release()
214
222
  return lock_acquired
215
223
  return True
@@ -1,3 +1,3 @@
1
1
  from .loggers import disable_run_logger, get_logger, get_run_logger, LogEavesdropper
2
2
 
3
- __all__ = ["get_logger", "get_run_logger", "LogEavesdropper"]
3
+ __all__ = ["get_logger", "get_run_logger", "LogEavesdropper", "disable_run_logger"]
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
4
  import logging.config
3
5
  import os
@@ -6,7 +8,7 @@ import string
6
8
  import warnings
7
9
  from functools import partial
8
10
  from pathlib import Path
9
- from typing import Any, Callable, Dict, Optional
11
+ from typing import Any, Callable
10
12
 
11
13
  import yaml
12
14
 
@@ -21,7 +23,7 @@ from prefect.utilities.collections import dict_to_flatdict, flatdict_to_dict
21
23
  DEFAULT_LOGGING_SETTINGS_PATH = Path(__file__).parent / "logging.yml"
22
24
 
23
25
  # Stores the configuration used to setup logging in this Python process
24
- PROCESS_LOGGING_CONFIG: Optional[Dict[str, Any]] = None
26
+ PROCESS_LOGGING_CONFIG: dict[str, Any] = {}
25
27
 
26
28
  # Regex call to replace non-alphanumeric characters to '_' to create a valid env var
27
29
  to_envvar: Callable[[str], str] = partial(re.sub, re.compile(r"[^0-9a-zA-Z]+"), "_")
@@ -60,7 +62,7 @@ def load_logging_config(path: Path) -> dict[str, Any]:
60
62
  return flatdict_to_dict(flat_config)
61
63
 
62
64
 
63
- def setup_logging(incremental: Optional[bool] = None) -> dict[str, Any]:
65
+ def setup_logging(incremental: bool | None = None) -> dict[str, Any]:
64
66
  """
65
67
  Sets up logging.
66
68
 
@@ -100,6 +102,6 @@ def setup_logging(incremental: Optional[bool] = None) -> dict[str, Any]:
100
102
  for handler in extra_config.handlers:
101
103
  logger.addHandler(handler)
102
104
 
103
- PROCESS_LOGGING_CONFIG = config
105
+ PROCESS_LOGGING_CONFIG.update(config)
104
106
 
105
107
  return config
@@ -78,7 +78,7 @@ class PrefectFormatter(logging.Formatter):
78
78
  self,
79
79
  format: str | None = None,
80
80
  datefmt: str | None = None,
81
- style: str = "%",
81
+ style: Literal["%", "{", "$"] = "%",
82
82
  validate: bool = True,
83
83
  *,
84
84
  defaults: dict[str, Any] | None = None,
@@ -93,8 +93,8 @@ class PrefectFormatter(logging.Formatter):
93
93
  # See https://github.com/python/cpython/blob/c8c6113398ee9a7867fe9b08bc539cceb61e2aaa/Lib/logging/__init__.py#L546
94
94
  # for implementation details
95
95
 
96
- init_kwargs = {}
97
- style_kwargs = {}
96
+ init_kwargs: dict[str, Any] = {}
97
+ style_kwargs: dict[str, Any] = {}
98
98
 
99
99
  # defaults added in 3.10
100
100
  if sys.version_info >= (3, 10):