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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/PKG-INFO +1 -1
  2. prefect_client-3.4.9.dev4/src/prefect/_build_info.py +5 -0
  3. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/concurrency_limits_v2.py +193 -59
  4. prefect_client-3.4.9.dev4/src/prefect/settings/models/server/concurrency.py +17 -0
  5. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/root.py +5 -0
  6. prefect_client-3.4.9.dev3/src/prefect/_build_info.py +0 -5
  7. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/.gitignore +0 -0
  8. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/LICENSE +0 -0
  9. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/README.md +0 -0
  10. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/pyproject.toml +0 -0
  11. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/.prefectignore +0 -0
  12. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/AGENTS.md +0 -0
  13. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/__init__.py +0 -0
  14. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/__main__.py +0 -0
  15. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/__init__.py +0 -0
  16. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
  17. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
  18. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/lineage.py +0 -0
  19. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
  20. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/client.py +0 -0
  21. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
  22. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/__init__.py +0 -0
  23. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/_logging.py +0 -0
  24. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
  25. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  26. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
  27. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  28. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
  29. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
  30. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
  31. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
  32. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  33. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  34. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
  35. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
  36. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/services.py +0 -0
  37. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
  38. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
  39. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/integrations.py +0 -0
  40. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
  41. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
  42. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  43. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  44. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  45. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pytz.py +0 -0
  46. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/retries.py +0 -0
  47. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
  48. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
  49. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
  50. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
  51. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/validators.py +0 -0
  52. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/uuid7.py +0 -0
  53. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/websockets.py +0 -0
  54. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_result_records.py +0 -0
  55. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
  56. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
  57. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_versioning.py +0 -0
  58. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_waiters.py +0 -0
  59. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/agent.py +0 -0
  60. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/artifacts.py +0 -0
  61. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/assets/__init__.py +0 -0
  62. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/assets/core.py +0 -0
  63. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/assets/materialize.py +0 -0
  64. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/automations.py +0 -0
  65. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/__init__.py +0 -0
  66. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/abstract.py +0 -0
  67. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/core.py +0 -0
  68. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/fields.py +0 -0
  69. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/notifications.py +0 -0
  70. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/redis.py +0 -0
  71. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/system.py +0 -0
  72. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/webhook.py +0 -0
  73. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/cache_policies.py +0 -0
  74. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/__init__.py +0 -0
  75. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/base.py +0 -0
  76. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/cloud.py +0 -0
  77. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/collections.py +0 -0
  78. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/constants.py +0 -0
  79. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
  80. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  81. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  82. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  83. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
  84. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  85. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  86. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  87. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  88. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  89. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  90. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  91. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  92. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  93. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  94. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  95. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  96. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  97. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
  98. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  99. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
  100. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  101. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
  102. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  103. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  104. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/base.py +0 -0
  105. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/routes.py +0 -0
  106. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/__init__.py +0 -0
  107. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/actions.py +0 -0
  108. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/filters.py +0 -0
  109. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/objects.py +0 -0
  110. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/responses.py +0 -0
  111. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/schedules.py +0 -0
  112. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/sorting.py +0 -0
  113. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/subscriptions.py +0 -0
  114. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/types/__init__.py +0 -0
  115. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  116. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/utilities.py +0 -0
  117. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/__init__.py +0 -0
  118. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
  119. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/_events.py +0 -0
  120. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/asyncio.py +0 -0
  121. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/context.py +0 -0
  122. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/services.py +0 -0
  123. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/sync.py +0 -0
  124. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
  125. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  126. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
  127. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
  128. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/context.py +0 -0
  129. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/services.py +0 -0
  130. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
  131. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/context.py +0 -0
  132. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/__init__.py +0 -0
  133. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/base.py +0 -0
  134. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/deployments.py +0 -0
  135. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/flow_runs.py +0 -0
  136. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/runner.py +0 -0
  137. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/schedules.py +0 -0
  138. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
  139. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/core.py +0 -0
  140. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/pull.py +0 -0
  141. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/utility.py +0 -0
  142. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/docker/__init__.py +0 -0
  143. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/docker/docker_image.py +0 -0
  144. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/engine.py +0 -0
  145. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/__init__.py +0 -0
  146. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/actions.py +0 -0
  147. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/cli/__init__.py +0 -0
  148. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/cli/automations.py +0 -0
  149. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/clients.py +0 -0
  150. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/filters.py +0 -0
  151. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/related.py +0 -0
  152. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/__init__.py +0 -0
  153. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/automations.py +0 -0
  154. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  155. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/events.py +0 -0
  156. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/labelling.py +0 -0
  157. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/utilities.py +0 -0
  158. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/worker.py +0 -0
  159. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/exceptions.py +0 -0
  160. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/filesystems.py +0 -0
  161. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/flow_engine.py +0 -0
  162. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/flow_runs.py +0 -0
  163. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/flows.py +0 -0
  164. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/futures.py +0 -0
  165. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/__init__.py +0 -0
  166. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/base.py +0 -0
  167. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  168. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  169. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  170. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  171. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  172. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  173. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/input/__init__.py +0 -0
  174. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/input/actions.py +0 -0
  175. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/input/run_input.py +0 -0
  176. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/__init__.py +0 -0
  177. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/filesystem.py +0 -0
  178. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/memory.py +0 -0
  179. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/protocol.py +0 -0
  180. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/__init__.py +0 -0
  181. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/clients.py +0 -0
  182. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/configuration.py +0 -0
  183. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/filters.py +0 -0
  184. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/formatters.py +0 -0
  185. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/handlers.py +0 -0
  186. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/highlighters.py +0 -0
  187. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/loggers.py +0 -0
  188. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/logging.yml +0 -0
  189. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/main.py +0 -0
  190. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/plugins.py +0 -0
  191. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/py.typed +0 -0
  192. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/results.py +0 -0
  193. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/__init__.py +0 -0
  194. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/_observers.py +0 -0
  195. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/runner.py +0 -0
  196. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/server.py +0 -0
  197. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/storage.py +0 -0
  198. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/submit.py +0 -0
  199. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/utils.py +0 -0
  200. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/__init__.py +0 -0
  201. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/deployment.py +0 -0
  202. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/flow_run.py +0 -0
  203. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/task_run.py +0 -0
  204. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/schedules.py +0 -0
  205. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/serializers.py +0 -0
  206. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/__init__.py +0 -0
  207. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/admin.py +0 -0
  208. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/artifacts.py +0 -0
  209. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/automations.py +0 -0
  210. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
  211. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_documents.py +0 -0
  212. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_schemas.py +0 -0
  213. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_types.py +0 -0
  214. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/clients.py +0 -0
  215. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/collections.py +0 -0
  216. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  217. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
  218. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/csrf_token.py +0 -0
  219. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/dependencies.py +0 -0
  220. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/deployments.py +0 -0
  221. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/events.py +0 -0
  222. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
  223. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/flow_runs.py +0 -0
  224. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/flows.py +0 -0
  225. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/logs.py +0 -0
  226. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/middleware.py +0 -0
  227. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/root.py +0 -0
  228. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/run_history.py +0 -0
  229. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/saved_searches.py +0 -0
  230. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/server.py +0 -0
  231. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  232. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/task_run_states.py +0 -0
  233. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/task_runs.py +0 -0
  234. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/task_workers.py +0 -0
  235. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/templates.py +0 -0
  236. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
  237. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
  238. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/flows.py +0 -0
  239. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/schemas.py +0 -0
  240. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
  241. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/validation.py +0 -0
  242. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/variables.py +0 -0
  243. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/work_queues.py +0 -0
  244. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/workers.py +0 -0
  245. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/__init__.py +0 -0
  246. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/base.py +0 -0
  247. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/constants.py +0 -0
  248. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/context.py +0 -0
  249. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/legacy.py +0 -0
  250. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/__init__.py +0 -0
  251. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/_defaults.py +0 -0
  252. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/api.py +0 -0
  253. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/cli.py +0 -0
  254. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/client.py +0 -0
  255. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/cloud.py +0 -0
  256. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/deployments.py +0 -0
  257. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/experiments.py +0 -0
  258. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/flows.py +0 -0
  259. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/internal.py +0 -0
  260. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/logging.py +0 -0
  261. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/results.py +0 -0
  262. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/root.py +0 -0
  263. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/runner.py +0 -0
  264. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
  265. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/api.py +0 -0
  266. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/database.py +0 -0
  267. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
  268. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
  269. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/events.py +0 -0
  270. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  271. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/logs.py +0 -0
  272. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/services.py +0 -0
  273. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
  274. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/ui.py +0 -0
  275. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/tasks.py +0 -0
  276. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/testing.py +0 -0
  277. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/worker.py +0 -0
  278. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/profiles.py +0 -0
  279. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/profiles.toml +0 -0
  280. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/sources.py +0 -0
  281. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/states.py +0 -0
  282. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_engine.py +0 -0
  283. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_runners.py +0 -0
  284. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_runs.py +0 -0
  285. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_worker.py +0 -0
  286. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/tasks.py +0 -0
  287. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/__init__.py +0 -0
  288. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/bootstrap.py +0 -0
  289. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/instrumentation.py +0 -0
  290. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/logging.py +0 -0
  291. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/processors.py +0 -0
  292. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
  293. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/services.py +0 -0
  294. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/transactions.py +0 -0
  295. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/__init__.py +0 -0
  296. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/_datetime.py +0 -0
  297. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/entrypoint.py +0 -0
  298. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/names.py +0 -0
  299. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/__init__.py +0 -0
  300. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_ast.py +0 -0
  301. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_deprecated.py +0 -0
  302. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_engine.py +0 -0
  303. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_git.py +0 -0
  304. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/annotations.py +0 -0
  305. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/asyncutils.py +0 -0
  306. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/callables.py +0 -0
  307. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/collections.py +0 -0
  308. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/compat.py +0 -0
  309. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/context.py +0 -0
  310. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/dispatch.py +0 -0
  311. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/dockerutils.py +0 -0
  312. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/engine.py +0 -0
  313. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/filesystem.py +0 -0
  314. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/generics.py +0 -0
  315. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/hashing.py +0 -0
  316. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/importtools.py +0 -0
  317. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/math.py +0 -0
  318. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/names.py +0 -0
  319. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/processutils.py +0 -0
  320. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/pydantic.py +0 -0
  321. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/render_swagger.py +0 -0
  322. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  323. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  324. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/schema_tools/validation.py +0 -0
  325. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/services.py +0 -0
  326. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/slugify.py +0 -0
  327. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/templating.py +0 -0
  328. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/text.py +0 -0
  329. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/timeout.py +0 -0
  330. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/urls.py +0 -0
  331. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/visualization.py +0 -0
  332. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/variables.py +0 -0
  333. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/__init__.py +0 -0
  334. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/base.py +0 -0
  335. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/block.py +0 -0
  336. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/cloud.py +0 -0
  337. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/process.py +0 -0
  338. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/server.py +0 -0
  339. {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefect-client
3
- Version: 3.4.9.dev3
3
+ Version: 3.4.9.dev4
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.4.9.dev4"
3
+ __build_date__ = "2025-07-16 08:09:21.076860+00:00"
4
+ __git_commit__ = "bf355508919bf9ad35e20b9aca00c4383b840879"
5
+ __dirty__ = False
@@ -1,11 +1,17 @@
1
+ from datetime import timedelta
1
2
  from typing import List, Literal, Optional, Union
2
3
  from uuid import UUID
3
4
 
4
5
  from fastapi import Body, Depends, HTTPException, Path, status
6
+ from sqlalchemy.ext.asyncio import AsyncSession
5
7
 
6
8
  import prefect.server.models as models
7
9
  import prefect.server.schemas as schemas
8
10
  from prefect.server.api.dependencies import LimitBody
11
+ from prefect.server.concurrency.lease_storage import (
12
+ ConcurrencyLimitLeaseMetadata,
13
+ get_concurrency_lease_storage,
14
+ )
9
15
  from prefect.server.database import PrefectDBInterface, provide_database_interface
10
16
  from prefect.server.schemas import actions
11
17
  from prefect.server.utilities.schemas import PrefectBaseModel
@@ -151,6 +157,97 @@ class MinimalConcurrencyLimitResponse(PrefectBaseModel):
151
157
  limit: int
152
158
 
153
159
 
160
+ class ConcurrencyLimitWithLeaseResponse(PrefectBaseModel):
161
+ lease_id: UUID
162
+ limits: list[MinimalConcurrencyLimitResponse]
163
+
164
+
165
+ async def _acquire_concurrency_slots(
166
+ session: AsyncSession,
167
+ names: List[str],
168
+ slots: int,
169
+ mode: Literal["concurrency", "rate_limit"],
170
+ ) -> tuple[list[schemas.core.ConcurrencyLimitV2], bool]:
171
+ limits = [
172
+ schemas.core.ConcurrencyLimitV2.model_validate(limit)
173
+ for limit in (
174
+ await models.concurrency_limits_v2.bulk_read_concurrency_limits(
175
+ session=session, names=names
176
+ )
177
+ )
178
+ ]
179
+
180
+ active_limits = [limit for limit in limits if bool(limit.active)]
181
+
182
+ if any(limit.limit < slots for limit in active_limits):
183
+ raise HTTPException(
184
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
185
+ detail="Slots requested is greater than the limit",
186
+ )
187
+
188
+ non_decaying = [
189
+ str(limit.name) for limit in active_limits if limit.slot_decay_per_second == 0.0
190
+ ]
191
+
192
+ if mode == "rate_limit" and non_decaying:
193
+ raise HTTPException(
194
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
195
+ detail=(
196
+ "Only concurrency limits with slot decay can be used for "
197
+ "rate limiting. The following limits do not have a decay "
198
+ f"configured: {','.join(non_decaying)!r}"
199
+ ),
200
+ )
201
+ acquired = await models.concurrency_limits_v2.bulk_increment_active_slots(
202
+ session=session,
203
+ concurrency_limit_ids=[limit.id for limit in active_limits],
204
+ slots=slots,
205
+ )
206
+
207
+ if not acquired:
208
+ await session.rollback()
209
+
210
+ return limits, acquired
211
+
212
+
213
+ async def _generate_concurrency_locked_response(
214
+ session: AsyncSession,
215
+ limits: list[schemas.core.ConcurrencyLimitV2],
216
+ slots: int,
217
+ ) -> HTTPException:
218
+ active_limits = [limit for limit in limits if bool(limit.active)]
219
+
220
+ await models.concurrency_limits_v2.bulk_update_denied_slots(
221
+ session=session,
222
+ concurrency_limit_ids=[limit.id for limit in active_limits],
223
+ slots=slots,
224
+ )
225
+
226
+ def num_blocking_slots(limit: schemas.core.ConcurrencyLimitV2) -> float:
227
+ if limit.slot_decay_per_second > 0:
228
+ return slots + limit.denied_slots
229
+ else:
230
+ return (slots + limit.denied_slots) / limit.limit
231
+
232
+ blocking_limit = max((limit for limit in active_limits), key=num_blocking_slots)
233
+ blocking_slots = num_blocking_slots(blocking_limit)
234
+
235
+ wait_time_per_slot = (
236
+ blocking_limit.avg_slot_occupancy_seconds
237
+ if blocking_limit.slot_decay_per_second == 0.0
238
+ else (1.0 / blocking_limit.slot_decay_per_second)
239
+ )
240
+
241
+ retry_after = wait_time_per_slot * blocking_slots
242
+
243
+ return HTTPException(
244
+ status_code=status.HTTP_423_LOCKED,
245
+ headers={
246
+ "Retry-After": str(retry_after),
247
+ },
248
+ )
249
+
250
+
154
251
  @router.post("/increment", status_code=status.HTTP_200_OK)
155
252
  async def bulk_increment_active_slots(
156
253
  slots: int = Body(..., gt=0),
@@ -163,86 +260,75 @@ async def bulk_increment_active_slots(
163
260
  db: PrefectDBInterface = Depends(provide_database_interface),
164
261
  ) -> List[MinimalConcurrencyLimitResponse]:
165
262
  async with db.session_context(begin_transaction=True) as session:
166
- limits = [
167
- schemas.core.ConcurrencyLimitV2.model_validate(limit)
168
- for limit in (
169
- await models.concurrency_limits_v2.bulk_read_concurrency_limits(
170
- session=session, names=names
171
- )
172
- )
173
- ]
174
-
175
- active_limits = [limit for limit in limits if bool(limit.active)]
176
-
177
- if any(limit.limit < slots for limit in active_limits):
178
- raise HTTPException(
179
- status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
180
- detail="Slots requested is greater than the limit",
181
- )
182
-
183
- non_decaying = [
184
- str(limit.name)
185
- for limit in active_limits
186
- if limit.slot_decay_per_second == 0.0
187
- ]
188
-
189
- if mode == "rate_limit" and non_decaying:
190
- raise HTTPException(
191
- status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
192
- detail=(
193
- "Only concurrency limits with slot decay can be used for "
194
- "rate limiting. The following limits do not have a decay "
195
- f"configured: {','.join(non_decaying)!r}"
196
- ),
197
- )
198
- acquired = await models.concurrency_limits_v2.bulk_increment_active_slots(
263
+ acquired_limits, acquired = await _acquire_concurrency_slots(
199
264
  session=session,
200
- concurrency_limit_ids=[limit.id for limit in active_limits],
265
+ names=names,
201
266
  slots=slots,
267
+ mode=mode,
202
268
  )
203
269
 
204
- if not acquired:
205
- await session.rollback()
206
-
207
270
  if acquired:
208
271
  return [
209
272
  MinimalConcurrencyLimitResponse(
210
273
  id=limit.id, name=str(limit.name), limit=limit.limit
211
274
  )
212
- for limit in limits
275
+ for limit in acquired_limits
213
276
  ]
214
277
  else:
215
278
  async with db.session_context(begin_transaction=True) as session:
216
- await models.concurrency_limits_v2.bulk_update_denied_slots(
279
+ raise await _generate_concurrency_locked_response(
217
280
  session=session,
218
- concurrency_limit_ids=[limit.id for limit in active_limits],
281
+ limits=acquired_limits,
219
282
  slots=slots,
220
283
  )
221
284
 
222
- def num_blocking_slots(limit: schemas.core.ConcurrencyLimitV2) -> float:
223
- if limit.slot_decay_per_second > 0.0:
224
- return slots + limit.denied_slots
225
- else:
226
- return (slots + limit.denied_slots) / limit.limit
227
285
 
228
- blocking_limit = max((limit for limit in active_limits), key=num_blocking_slots)
229
- blocking_slots = num_blocking_slots(blocking_limit)
230
-
231
- wait_time_per_slot = (
232
- blocking_limit.avg_slot_occupancy_seconds
233
- if blocking_limit.slot_decay_per_second == 0.0
234
- else (1.0 / blocking_limit.slot_decay_per_second)
286
+ @router.post("/increment-with-lease", status_code=status.HTTP_200_OK)
287
+ async def bulk_increment_active_slots_with_lease(
288
+ slots: int = Body(..., gt=0),
289
+ names: List[str] = Body(..., min_items=1),
290
+ mode: Literal["concurrency", "rate_limit"] = Body("concurrency"),
291
+ lease_duration: float = Body(
292
+ 300, # 5 minutes
293
+ ge=60, # 1 minute
294
+ le=60 * 60 * 24, # 1 day
295
+ description="The duration of the lease in seconds.",
296
+ ),
297
+ db: PrefectDBInterface = Depends(provide_database_interface),
298
+ ) -> ConcurrencyLimitWithLeaseResponse:
299
+ async with db.session_context(begin_transaction=True) as session:
300
+ acquired_limits, acquired = await _acquire_concurrency_slots(
301
+ session=session,
302
+ names=names,
303
+ slots=slots,
304
+ mode=mode,
235
305
  )
236
306
 
237
- retry_after = wait_time_per_slot * blocking_slots
238
-
239
- raise HTTPException(
240
- status_code=status.HTTP_423_LOCKED,
241
- headers={
242
- "Retry-After": str(retry_after),
243
- },
307
+ if acquired:
308
+ lease_storage = get_concurrency_lease_storage()
309
+ lease = await lease_storage.create_lease(
310
+ resource_ids=[limit.id for limit in acquired_limits],
311
+ ttl=timedelta(seconds=lease_duration),
312
+ metadata=ConcurrencyLimitLeaseMetadata(slots=slots),
313
+ )
314
+ return ConcurrencyLimitWithLeaseResponse(
315
+ lease_id=lease.id,
316
+ limits=[
317
+ MinimalConcurrencyLimitResponse(
318
+ id=limit.id, name=str(limit.name), limit=limit.limit
319
+ )
320
+ for limit in acquired_limits
321
+ ],
244
322
  )
245
323
 
324
+ else:
325
+ async with db.session_context(begin_transaction=True) as session:
326
+ raise await _generate_concurrency_locked_response(
327
+ session=session,
328
+ limits=acquired_limits,
329
+ slots=slots,
330
+ )
331
+
246
332
 
247
333
  @router.post("/decrement", status_code=status.HTTP_200_OK)
248
334
  async def bulk_decrement_active_slots(
@@ -276,3 +362,51 @@ async def bulk_decrement_active_slots(
276
362
  )
277
363
  for limit in limits
278
364
  ]
365
+
366
+
367
+ @router.post("/decrement-with-lease", status_code=status.HTTP_204_NO_CONTENT)
368
+ async def bulk_decrement_active_slots_with_lease(
369
+ lease_id: UUID = Body(
370
+ ...,
371
+ description="The ID of the lease corresponding to the concurrency limits to decrement.",
372
+ ),
373
+ occupancy_seconds: Optional[float] = Body(None, gt=0.0),
374
+ db: PrefectDBInterface = Depends(provide_database_interface),
375
+ ) -> None:
376
+ lease_storage = get_concurrency_lease_storage()
377
+ lease = await lease_storage.read_lease(lease_id)
378
+ if not lease:
379
+ return
380
+
381
+ async with db.session_context(begin_transaction=True) as session:
382
+ await models.concurrency_limits_v2.bulk_decrement_active_slots(
383
+ session=session,
384
+ concurrency_limit_ids=lease.resource_ids,
385
+ slots=lease.metadata.slots if lease.metadata else 0,
386
+ occupancy_seconds=occupancy_seconds,
387
+ )
388
+ await lease_storage.revoke_lease(lease_id)
389
+
390
+
391
+ @router.post("/leases/{lease_id}/renew", status_code=status.HTTP_204_NO_CONTENT)
392
+ async def renew_concurrency_lease(
393
+ lease_id: UUID = Path(..., description="The ID of the lease to renew"),
394
+ lease_duration: float = Body(
395
+ 300, # 5 minutes
396
+ ge=60, # 1 minute
397
+ le=60 * 60 * 24, # 1 day
398
+ description="The duration of the lease in seconds.",
399
+ embed=True,
400
+ ),
401
+ ) -> None:
402
+ lease_storage = get_concurrency_lease_storage()
403
+ lease = await lease_storage.read_lease(lease_id)
404
+ if not lease:
405
+ raise HTTPException(
406
+ status_code=status.HTTP_404_NOT_FOUND, detail="Lease not found"
407
+ )
408
+
409
+ await lease_storage.renew_lease(
410
+ lease_id=lease_id,
411
+ ttl=timedelta(seconds=lease_duration),
412
+ )
@@ -0,0 +1,17 @@
1
+ from typing import ClassVar
2
+
3
+ from pydantic import Field
4
+ from pydantic_settings import SettingsConfigDict
5
+
6
+ from prefect.settings.base import PrefectBaseSettings, build_settings_config
7
+
8
+
9
+ class ServerConcurrencySettings(PrefectBaseSettings):
10
+ model_config: ClassVar[SettingsConfigDict] = build_settings_config(
11
+ ("server", "concurrency")
12
+ )
13
+
14
+ lease_storage: str = Field(
15
+ default="prefect.server.concurrency.lease_storage.memory",
16
+ description="The module to use for storing concurrency limit leases.",
17
+ )
@@ -7,6 +7,7 @@ from pydantic import AliasChoices, AliasPath, Field
7
7
  from pydantic_settings import SettingsConfigDict
8
8
 
9
9
  from prefect.settings.base import PrefectBaseSettings, build_settings_config
10
+ from prefect.settings.models.server.concurrency import ServerConcurrencySettings
10
11
  from prefect.types import LogLevel
11
12
 
12
13
  from .._defaults import default_memo_store_path
@@ -111,6 +112,10 @@ class ServerSettings(PrefectBaseSettings):
111
112
  default_factory=ServerAPISettings,
112
113
  description="Settings for controlling API server behavior",
113
114
  )
115
+ concurrency: ServerConcurrencySettings = Field(
116
+ default_factory=ServerConcurrencySettings,
117
+ description="Settings for controlling server-side concurrency limit handling",
118
+ )
114
119
  database: ServerDatabaseSettings = Field(
115
120
  default_factory=ServerDatabaseSettings,
116
121
  description="Settings for controlling server database behavior",
@@ -1,5 +0,0 @@
1
- # Generated by versioningit
2
- __version__ = "3.4.9.dev3"
3
- __build_date__ = "2025-07-15 08:09:49.175582+00:00"
4
- __git_commit__ = "3a6aef7fded680a25d5c5d7f162fa6b535139c9f"
5
- __dirty__ = False