prefect-client 3.7.2.dev5__tar.gz → 3.7.3.dev2__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 (448) hide show
  1. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/PKG-INFO +2 -2
  2. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/pyproject.toml +1 -1
  3. prefect_client-3.7.3.dev2/src/prefect/_build_info.py +5 -0
  4. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/_leases.py +10 -2
  5. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/clients.py +1 -1
  6. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/subscribers.py +1 -1
  7. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/handlers.py +6 -3
  8. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/results.py +4 -0
  9. prefect_client-3.7.3.dev2/src/prefect/server/api/_ui_static.py +85 -0
  10. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/server.py +4 -22
  11. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/workers.py +1 -1
  12. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/templating/__init__.py +146 -113
  13. prefect_client-3.7.2.dev5/src/prefect/_build_info.py +0 -5
  14. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/.gitignore +0 -0
  15. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/LICENSE +0 -0
  16. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/README.md +0 -0
  17. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/hatch_build.py +0 -0
  18. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/.prefectignore +0 -0
  19. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/AGENTS.md +0 -0
  20. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/__init__.py +0 -0
  21. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/__main__.py +0 -0
  22. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/__init__.py +0 -0
  23. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/_launchers.py +0 -0
  24. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/bundles/__init__.py +0 -0
  25. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/bundles/execute.py +0 -0
  26. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/plugins/__init__.py +0 -0
  27. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/plugins/apply.py +0 -0
  28. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  29. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/plugins/manager.py +0 -0
  30. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/plugins/spec.py +0 -0
  31. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/sla/__init__.py +0 -0
  32. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/sla/client.py +0 -0
  33. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_experimental/sla/objects.py +0 -0
  34. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_flow_run_suspension.py +0 -0
  35. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/__init__.py +0 -0
  36. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/_logging.py +0 -0
  37. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/__init__.py +0 -0
  38. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  39. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/client.py +0 -0
  40. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/device_id.py +0 -0
  41. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/emit.py +0 -0
  42. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/enabled.py +0 -0
  43. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/events.py +0 -0
  44. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/milestones.py +0 -0
  45. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/notice.py +0 -0
  46. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/analytics/service.py +0 -0
  47. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/ast_utils.py +0 -0
  48. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/buildx.py +0 -0
  49. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/__init__.py +0 -0
  50. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  51. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/backports.py +0 -0
  52. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/blocks.py +0 -0
  53. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  54. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  55. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/migration.py +0 -0
  56. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/compatibility/starlette.py +0 -0
  57. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/__init__.py +0 -0
  58. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/api.py +0 -0
  59. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/calls.py +0 -0
  60. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  61. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  62. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/inspection.py +0 -0
  63. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/primitives.py +0 -0
  64. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/services.py +0 -0
  65. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/threads.py +0 -0
  66. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/concurrency/waiters.py +0 -0
  67. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/control_listener.py +0 -0
  68. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/deprecated.py +0 -0
  69. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/engine.py +0 -0
  70. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/git.py +0 -0
  71. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  72. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/installation.py +0 -0
  73. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/integrations.py +0 -0
  74. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/launchers.py +0 -0
  75. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/lazy.py +0 -0
  76. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/metrics.py +0 -0
  77. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/observability.py +0 -0
  78. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/observers.py +0 -0
  79. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/__init__.py +0 -0
  80. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/apply.py +0 -0
  81. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/collections.py +0 -0
  82. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  83. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/manager.py +0 -0
  84. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/spec.py +0 -0
  85. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/plugins/startup.py +0 -0
  86. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/pydantic/__init__.py +0 -0
  87. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/pydantic/schemas.py +0 -0
  88. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  89. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  90. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  91. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/pytz.py +0 -0
  92. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/result_records.py +0 -0
  93. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/retries.py +0 -0
  94. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/schema.py +0 -0
  95. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/schemas/__init__.py +0 -0
  96. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/schemas/bases.py +0 -0
  97. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/schemas/fields.py +0 -0
  98. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/schemas/serializers.py +0 -0
  99. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/schemas/validators.py +0 -0
  100. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  101. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/states.py +0 -0
  102. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/testing.py +0 -0
  103. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/urls.py +0 -0
  104. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/uuid7.py +0 -0
  105. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/version_checking.py +0 -0
  106. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/versioning.py +0 -0
  107. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/waiters.py +0 -0
  108. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_internal/websockets.py +0 -0
  109. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/__init__.py +0 -0
  110. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/fetcher.py +0 -0
  111. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/generator.py +0 -0
  112. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/models.py +0 -0
  113. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/naming.py +0 -0
  114. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/renderer.py +0 -0
  115. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/schema_converter.py +0 -0
  116. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/templates/__init__.py +0 -0
  117. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  118. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/types.py +0 -0
  119. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_sdk/unions.py +0 -0
  120. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_vendor/croniter/__init__.py +0 -0
  121. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/_vendor/croniter/croniter.py +0 -0
  122. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/agent.py +0 -0
  123. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/analytics/__init__.py +0 -0
  124. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/artifacts.py +0 -0
  125. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/assets/__init__.py +0 -0
  126. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/assets/core.py +0 -0
  127. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/assets/materialize.py +0 -0
  128. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/automations.py +0 -0
  129. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/AGENTS.md +0 -0
  130. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/__init__.py +0 -0
  131. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/abstract.py +0 -0
  132. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/core.py +0 -0
  133. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/fields.py +0 -0
  134. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/notifications.py +0 -0
  135. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/redis.py +0 -0
  136. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/system.py +0 -0
  137. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/blocks/webhook.py +0 -0
  138. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/__init__.py +0 -0
  139. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/_file_collector.py +0 -0
  140. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/_ignore_filter.py +0 -0
  141. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/_path_resolver.py +0 -0
  142. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/_zip_builder.py +0 -0
  143. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/_zip_extractor.py +0 -0
  144. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/bundles/execute.py +0 -0
  145. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/cache_policies.py +0 -0
  146. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/AGENTS.md +0 -0
  147. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/__init__.py +0 -0
  148. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/attribution.py +0 -0
  149. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/base.py +0 -0
  150. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/cloud.py +0 -0
  151. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/collections.py +0 -0
  152. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/constants.py +0 -0
  153. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/__init__.py +0 -0
  154. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  155. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  156. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  157. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_automations/client.py +0 -0
  158. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  159. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  160. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  161. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  162. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  163. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  164. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  165. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  166. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  167. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  168. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  169. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_events/client.py +0 -0
  170. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  171. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  172. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  173. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_flows/client.py +0 -0
  174. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  175. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_logs/client.py +0 -0
  176. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  177. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_variables/client.py +0 -0
  178. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  179. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  180. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/base.py +0 -0
  181. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/orchestration/routes.py +0 -0
  182. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/__init__.py +0 -0
  183. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/actions.py +0 -0
  184. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/events.py +0 -0
  185. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/filters.py +0 -0
  186. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/objects.py +0 -0
  187. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/responses.py +0 -0
  188. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/schedules.py +0 -0
  189. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/sorting.py +0 -0
  190. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/schemas/worker_channel.py +0 -0
  191. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/subscriptions.py +0 -0
  192. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/types/__init__.py +0 -0
  193. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  194. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/client/utilities.py +0 -0
  195. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/AGENTS.md +0 -0
  196. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/__init__.py +0 -0
  197. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/_asyncio.py +0 -0
  198. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/_events.py +0 -0
  199. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/_sync.py +0 -0
  200. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/asyncio.py +0 -0
  201. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/context.py +0 -0
  202. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/services.py +0 -0
  203. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/sync.py +0 -0
  204. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/__init__.py +0 -0
  205. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  206. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/_events.py +0 -0
  207. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/asyncio.py +0 -0
  208. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/context.py +0 -0
  209. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/services.py +0 -0
  210. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/concurrency/v1/sync.py +0 -0
  211. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/context.py +0 -0
  212. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/AGENTS.md +0 -0
  213. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/__init__.py +0 -0
  214. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/base.py +0 -0
  215. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/deployments.py +0 -0
  216. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/flow_runs.py +0 -0
  217. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/runner.py +0 -0
  218. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/schedules.py +0 -0
  219. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/steps/__init__.py +0 -0
  220. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/steps/core.py +0 -0
  221. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/steps/pull.py +0 -0
  222. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/deployments/steps/utility.py +0 -0
  223. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/docker/__init__.py +0 -0
  224. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/docker/_buildx.py +0 -0
  225. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/docker/docker_image.py +0 -0
  226. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/engine.py +0 -0
  227. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/AGENTS.md +0 -0
  228. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/__init__.py +0 -0
  229. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/actions.py +0 -0
  230. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/filters.py +0 -0
  231. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/related.py +0 -0
  232. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/schemas/__init__.py +0 -0
  233. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/schemas/automations.py +0 -0
  234. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  235. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/schemas/events.py +0 -0
  236. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/schemas/labelling.py +0 -0
  237. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/utilities.py +0 -0
  238. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/events/worker.py +0 -0
  239. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/exceptions.py +0 -0
  240. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/filesystems.py +0 -0
  241. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/flow_engine.py +0 -0
  242. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/flow_runs.py +0 -0
  243. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/flows.py +0 -0
  244. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/futures.py +0 -0
  245. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/__init__.py +0 -0
  246. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/base.py +0 -0
  247. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  248. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  249. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  250. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  251. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  252. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  253. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/input/__init__.py +0 -0
  254. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/input/actions.py +0 -0
  255. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/input/run_input.py +0 -0
  256. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/locking/__init__.py +0 -0
  257. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/locking/_filelock.py +0 -0
  258. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/locking/filesystem.py +0 -0
  259. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/locking/memory.py +0 -0
  260. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/locking/protocol.py +0 -0
  261. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/AGENTS.md +0 -0
  262. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/__init__.py +0 -0
  263. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/clients.py +0 -0
  264. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/configuration.py +0 -0
  265. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/filters.py +0 -0
  266. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/formatters.py +0 -0
  267. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/highlighters.py +0 -0
  268. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/loggers.py +0 -0
  269. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/logging/logging.yml +0 -0
  270. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/main.py +0 -0
  271. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/plugins.py +0 -0
  272. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/py.typed +0 -0
  273. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/AGENTS.md +0 -0
  274. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/__init__.py +0 -0
  275. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_cancel_finalizer.py +0 -0
  276. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_cancellation_manager.py +0 -0
  277. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_control_channel.py +0 -0
  278. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_deployment_registry.py +0 -0
  279. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_event_emitter.py +0 -0
  280. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_flow_resolver.py +0 -0
  281. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_flow_run_executor.py +0 -0
  282. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_hook_runner.py +0 -0
  283. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_limit_manager.py +0 -0
  284. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_process_manager.py +0 -0
  285. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_scheduled_run_poller.py +0 -0
  286. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_starter_bundle.py +0 -0
  287. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_starter_direct.py +0 -0
  288. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_starter_engine.py +0 -0
  289. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_state_proposer.py +0 -0
  290. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_workspace_resolver.py +0 -0
  291. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/_workspace_starter.py +0 -0
  292. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/runner.py +0 -0
  293. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/server.py +0 -0
  294. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runner/storage.py +0 -0
  295. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runtime/__init__.py +0 -0
  296. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runtime/deployment.py +0 -0
  297. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runtime/flow_run.py +0 -0
  298. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/runtime/task_run.py +0 -0
  299. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/schedules.py +0 -0
  300. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/serializers.py +0 -0
  301. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/__init__.py +0 -0
  302. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/admin.py +0 -0
  303. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/artifacts.py +0 -0
  304. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/automations.py +0 -0
  305. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/background_workers.py +0 -0
  306. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/block_capabilities.py +0 -0
  307. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/block_documents.py +0 -0
  308. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/block_schemas.py +0 -0
  309. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/block_types.py +0 -0
  310. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/clients.py +0 -0
  311. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/collections.py +0 -0
  312. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  313. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/concurrency_limits.py +0 -0
  314. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  315. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/csrf_token.py +0 -0
  316. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/dependencies.py +0 -0
  317. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/deployments.py +0 -0
  318. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/events.py +0 -0
  319. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/flow_run_states.py +0 -0
  320. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/flow_runs.py +0 -0
  321. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/flows.py +0 -0
  322. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/logs.py +0 -0
  323. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/middleware.py +0 -0
  324. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/root.py +0 -0
  325. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/run_history.py +0 -0
  326. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/saved_searches.py +0 -0
  327. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  328. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/task_run_states.py +0 -0
  329. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/task_runs.py +0 -0
  330. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/task_workers.py +0 -0
  331. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/templates.py +0 -0
  332. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/ui/__init__.py +0 -0
  333. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/ui/flow_runs.py +0 -0
  334. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/ui/flows.py +0 -0
  335. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/ui/schemas.py +0 -0
  336. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/ui/task_runs.py +0 -0
  337. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/validation.py +0 -0
  338. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/variables.py +0 -0
  339. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/server/api/work_queues.py +0 -0
  340. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/AGENTS.md +0 -0
  341. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/__init__.py +0 -0
  342. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/base.py +0 -0
  343. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/constants.py +0 -0
  344. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/context.py +0 -0
  345. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/legacy.py +0 -0
  346. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/__init__.py +0 -0
  347. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/_defaults.py +0 -0
  348. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/api.py +0 -0
  349. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/cli.py +0 -0
  350. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/client.py +0 -0
  351. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/cloud.py +0 -0
  352. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/deployments.py +0 -0
  353. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/events.py +0 -0
  354. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/experiments.py +0 -0
  355. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/flows.py +0 -0
  356. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/internal.py +0 -0
  357. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/logging.py +0 -0
  358. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/plugins.py +0 -0
  359. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/results.py +0 -0
  360. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/root.py +0 -0
  361. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/runner.py +0 -0
  362. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/__init__.py +0 -0
  363. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/api.py +0 -0
  364. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/concurrency.py +0 -0
  365. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/database.py +0 -0
  366. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/deployments.py +0 -0
  367. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/docket.py +0 -0
  368. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/ephemeral.py +0 -0
  369. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/events.py +0 -0
  370. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  371. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/logs.py +0 -0
  372. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/root.py +0 -0
  373. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/services.py +0 -0
  374. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/tasks.py +0 -0
  375. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/server/ui.py +0 -0
  376. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/tasks.py +0 -0
  377. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/telemetry.py +0 -0
  378. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/testing.py +0 -0
  379. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/models/worker.py +0 -0
  380. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/profiles.py +0 -0
  381. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/profiles.toml +0 -0
  382. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/settings/sources.py +0 -0
  383. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/states.py +0 -0
  384. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/task_engine.py +0 -0
  385. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/task_runners.py +0 -0
  386. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/task_runs.py +0 -0
  387. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/task_worker.py +0 -0
  388. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/tasks.py +0 -0
  389. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/telemetry/__init__.py +0 -0
  390. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/telemetry/run_telemetry.py +0 -0
  391. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/transactions.py +0 -0
  392. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/types/__init__.py +0 -0
  393. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/types/_concurrency.py +0 -0
  394. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/types/_datetime.py +0 -0
  395. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/types/entrypoint.py +0 -0
  396. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/types/names.py +0 -0
  397. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/AGENTS.md +0 -0
  398. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/__init__.py +0 -0
  399. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/annotations.py +0 -0
  400. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  401. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  402. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/callables/AGENTS.md +0 -0
  403. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/callables/__init__.py +0 -0
  404. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/collections.py +0 -0
  405. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/compat.py +0 -0
  406. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/context.py +0 -0
  407. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/dispatch.py +0 -0
  408. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/dockerutils.py +0 -0
  409. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/engine/AGENTS.md +0 -0
  410. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/engine/__init__.py +0 -0
  411. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  412. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/filesystem/__init__.py +0 -0
  413. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/generics.py +0 -0
  414. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/hashing.py +0 -0
  415. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/importtools.py +0 -0
  416. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/math.py +0 -0
  417. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/names.py +0 -0
  418. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  419. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/processutils/__init__.py +0 -0
  420. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/pydantic.py +0 -0
  421. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/render_swagger.py +0 -0
  422. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  423. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  424. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  425. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/schema_tools/validation.py +0 -0
  426. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/services.py +0 -0
  427. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/slugify.py +0 -0
  428. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/templating/AGENTS.md +0 -0
  429. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/text.py +0 -0
  430. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/timeout.py +0 -0
  431. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/urls.py +0 -0
  432. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/utilities/visualization.py +0 -0
  433. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/variables.py +0 -0
  434. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/AGENTS.md +0 -0
  435. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/__init__.py +0 -0
  436. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_cleanup.py +0 -0
  437. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_cleanup_handlers.py +0 -0
  438. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  439. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
  440. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_worker_channel/_state.py +0 -0
  441. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_worker_channel/_sync.py +0 -0
  442. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  443. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/base.py +0 -0
  444. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/block.py +0 -0
  445. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/cloud.py +0 -0
  446. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/process.py +0 -0
  447. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/src/prefect/workers/server.py +0 -0
  448. {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev2}/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.7.2.dev5
3
+ Version: 3.7.3.dev2
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
@@ -47,7 +47,7 @@ Requires-Dist: prometheus-client>=0.20.0
47
47
  Requires-Dist: pydantic!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4,<3.0.0,>=2.10.1
48
48
  Requires-Dist: pydantic-core<3.0.0,>=2.12.0
49
49
  Requires-Dist: pydantic-extra-types<3.0.0,>=2.8.2
50
- Requires-Dist: pydantic-settings!=2.9.0,<3.0.0,>2.2.1
50
+ Requires-Dist: pydantic-settings<3.0.0,>=2.9.1
51
51
  Requires-Dist: python-dateutil<3.0.0,>=2.8.2
52
52
  Requires-Dist: python-slugify<9.0,>=5.0
53
53
  Requires-Dist: pytz<2027,>=2021.1
@@ -51,7 +51,7 @@ dependencies = [
51
51
  "pydantic>=2.10.1,<3.0.0,!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4",
52
52
  "pydantic_core>=2.12.0,<3.0.0",
53
53
  "pydantic_extra_types>=2.8.2,<3.0.0",
54
- "pydantic_settings>2.2.1,<3.0.0,!=2.9.0",
54
+ "pydantic_settings>=2.9.1,<3.0.0",
55
55
  "python-dateutil>=2.8.2,<3.0.0",
56
56
  "python-slugify>=5.0,<9.0",
57
57
  "pytz>=2021.1,<2027",
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.7.3.dev2"
3
+ __build_date__ = "2026-05-25 09:28:23.703020+00:00"
4
+ __git_commit__ = "64710e8bd0984713d10bb34b1f3cbd6098a99fac"
5
+ __dirty__ = False
@@ -143,9 +143,14 @@ def _start_lease_renewal_thread(
143
143
  stop_event = threading.Event()
144
144
  renewal_ctx = contextvars.copy_context()
145
145
 
146
- def renewal_loop() -> None:
146
+ def _run_with_failure_handler() -> None:
147
+ # Runs inside renewal_ctx so the failure handler also sees the
148
+ # copied flow/task run contextvars; otherwise get_run_logger() in
149
+ # _handle_lease_renewal_failure can't find the run context and the
150
+ # message falls back to the plain "prefect.concurrency" logger,
151
+ # never reaching the run logs API.
147
152
  try:
148
- renewal_ctx.run(_lease_renewal_loop, lease_id, lease_duration, stop_event)
153
+ _lease_renewal_loop(lease_id, lease_duration, stop_event)
149
154
  except Exception as exc:
150
155
  if not stop_event.is_set():
151
156
  _handle_lease_renewal_failure(
@@ -156,6 +161,9 @@ def _start_lease_renewal_thread(
156
161
  cancel_scope,
157
162
  )
158
163
 
164
+ def renewal_loop() -> None:
165
+ renewal_ctx.run(_run_with_failure_handler)
166
+
159
167
  thread = threading.Thread(
160
168
  target=renewal_loop,
161
169
  daemon=True,
@@ -31,7 +31,7 @@ from websockets.exceptions import (
31
31
  import prefect.types._datetime
32
32
  from prefect._internal.version_checking import check_server_version
33
33
  from prefect._internal.websockets import websocket_connect
34
- from prefect.events import Event
34
+ from prefect.events.schemas.events import Event
35
35
  from prefect.logging import get_logger
36
36
  from prefect.settings import (
37
37
  PREFECT_API_KEY,
@@ -13,9 +13,9 @@ from typing_extensions import Self
13
13
 
14
14
  from prefect.client.schemas.filters import LogFilter, LogFilterFlowRunId
15
15
  from prefect.client.schemas.objects import TERMINAL_STATES, Log, StateType
16
- from prefect.events import Event
17
16
  from prefect.events.clients import get_events_subscriber
18
17
  from prefect.events.filters import EventAnyResourceFilter, EventFilter
18
+ from prefect.events.schemas.events import Event
19
19
  from prefect.logging.clients import get_logs_subscriber
20
20
 
21
21
  if TYPE_CHECKING:
@@ -16,7 +16,6 @@ from rich.highlighter import Highlighter, NullHighlighter
16
16
  from rich.theme import Theme
17
17
  from typing_extensions import Self
18
18
 
19
- import prefect.context
20
19
  from prefect._internal.concurrency.api import create_call, from_sync
21
20
  from prefect._internal.concurrency.event_loop import get_running_loop
22
21
  from prefect._internal.concurrency.services import BatchedQueueService
@@ -161,7 +160,9 @@ class APILogHandler(logging.Handler):
161
160
  Send a log to the `APILogWorker`
162
161
  """
163
162
  try:
164
- profile = prefect.context.get_settings_context()
163
+ from prefect.context import get_settings_context
164
+
165
+ profile = get_settings_context()
165
166
 
166
167
  if not profile.settings.logging.to_api.enabled:
167
168
  return # Respect the global settings toggle
@@ -214,7 +215,9 @@ class APILogHandler(logging.Handler):
214
215
 
215
216
  if not flow_run_id:
216
217
  try:
217
- context = prefect.context.get_run_context()
218
+ from prefect.context import get_run_context
219
+
220
+ context = get_run_context()
218
221
  except MissingContextError:
219
222
  raise MissingContextError(
220
223
  f"Logger {record.name!r} attempted to send logs to the API without"
@@ -699,6 +699,8 @@ class ResultStore(BaseModel):
699
699
  except Exception:
700
700
  return False
701
701
  else:
702
+ if self.result_storage is None:
703
+ self.result_storage = await aget_default_result_storage()
702
704
  try:
703
705
  content = await call_explicitly_async_block_method(
704
706
  self.result_storage, "read_path", (key,), {}
@@ -742,6 +744,8 @@ class ResultStore(BaseModel):
742
744
  except Exception:
743
745
  return False
744
746
  else:
747
+ if self.result_storage is None:
748
+ self.result_storage = get_default_result_storage(_sync=True)
745
749
  try:
746
750
  content = call_explicitly_sync_block_method(
747
751
  self.result_storage, "read_path", (key,), {}
@@ -0,0 +1,85 @@
1
+ """Private helpers for UI static-file management during server startup."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import errno
6
+ import logging
7
+ import pathlib
8
+ import shutil
9
+ from dataclasses import dataclass
10
+ from typing import Literal
11
+
12
+ UIVersion = Literal["v1", "v2"]
13
+
14
+
15
+ @dataclass(frozen=True)
16
+ class UIBundle:
17
+ version: UIVersion
18
+ source_static_path: str
19
+ static_dir: str
20
+ base_url: str
21
+ cache_key: str
22
+ mount_name: str
23
+
24
+
25
+ def log_ui_static_copy_error(
26
+ bundle: UIBundle,
27
+ exc: OSError,
28
+ logger: logging.Logger,
29
+ ) -> None:
30
+ """Log an actionable error when copying a UI bundle's static files fails."""
31
+ if exc.errno == errno.ENOSPC:
32
+ try:
33
+ disk_path = pathlib.Path(bundle.static_dir)
34
+ while not disk_path.exists():
35
+ disk_path = disk_path.parent
36
+ usage = shutil.disk_usage(disk_path)
37
+ available_mb = usage.free / (1024 * 1024)
38
+ except OSError:
39
+ available_mb = None
40
+ try:
41
+ required_bytes = sum(
42
+ f.stat().st_size
43
+ for f in pathlib.Path(bundle.source_static_path).rglob("*")
44
+ if f.is_file()
45
+ )
46
+ required_mb = required_bytes / (1024 * 1024)
47
+ except OSError:
48
+ required_mb = None
49
+
50
+ space_detail = ""
51
+ if required_mb is not None and available_mb is not None:
52
+ space_detail = (
53
+ f" Required: {required_mb:.1f} MB, available: {available_mb:.1f} MB."
54
+ )
55
+ elif available_mb is not None:
56
+ space_detail = f" Available disk space: {available_mb:.1f} MB."
57
+
58
+ logger.error(
59
+ "Not enough disk space to unpack %s UI static"
60
+ " files at %s.%s To resolve this, increase the"
61
+ " size of the volume mounted at that path or set"
62
+ " PREFECT_UI_STATIC_DIRECTORY to a location with"
63
+ " sufficient space.",
64
+ bundle.version.upper(),
65
+ bundle.static_dir,
66
+ space_detail,
67
+ )
68
+ elif isinstance(exc, PermissionError):
69
+ logger.error(
70
+ "Failed to create %s UI static directory at %s:"
71
+ " %s. That UI will not be available. To resolve"
72
+ " this, set PREFECT_UI_STATIC_DIRECTORY to a"
73
+ " writable directory.",
74
+ bundle.version.upper(),
75
+ bundle.static_dir,
76
+ exc,
77
+ )
78
+ else:
79
+ logger.error(
80
+ "Failed to create %s UI static directory at %s:"
81
+ " %s. That UI will not be available.",
82
+ bundle.version.upper(),
83
+ bundle.static_dir,
84
+ exc,
85
+ )
@@ -21,11 +21,10 @@ import subprocess
21
21
  import sys
22
22
  import time
23
23
  from contextlib import AsyncExitStack, asynccontextmanager
24
- from dataclasses import dataclass
25
24
  from datetime import timedelta
26
25
  from functools import wraps
27
26
  from hashlib import sha256
28
- from typing import Any, AsyncGenerator, Awaitable, Callable, Literal, Optional
27
+ from typing import Any, AsyncGenerator, Awaitable, Callable, Optional
29
28
 
30
29
  import anyio
31
30
  import asyncpg
@@ -52,6 +51,7 @@ from prefect._internal.compatibility.starlette import status
52
51
  from prefect._internal.observability import configure_logfire
53
52
  from prefect.client.constants import SERVER_API_VERSION
54
53
  from prefect.logging import get_logger
54
+ from prefect.server.api._ui_static import UIBundle, UIVersion, log_ui_static_copy_error
55
55
  from prefect.server.api.background_workers import background_worker
56
56
  from prefect.server.api.dependencies import EnforceMinimumAPIVersion
57
57
  from prefect.server.exceptions import ObjectNotFoundError
@@ -128,7 +128,6 @@ SQLITE_LOCKED_MSG = "database is locked"
128
128
  UI_VERSION_COOKIE_NAME = "prefect_ui_version"
129
129
  UI_VERSION_PATH_SEGMENT = "v2"
130
130
  UI_STATIC_REFERENCE_FILE_NAME = "UI_SERVE_BASE"
131
- UIVersion = Literal["v1", "v2"]
132
131
 
133
132
 
134
133
  class _SQLiteLockedOperationalErrorFilter(logging.Filter):
@@ -183,16 +182,6 @@ class SPAStaticFiles(StaticFiles):
183
182
  return await super().get_response("./index.html", scope)
184
183
 
185
184
 
186
- @dataclass(frozen=True)
187
- class UIBundle:
188
- version: UIVersion
189
- source_static_path: str
190
- static_dir: str
191
- base_url: str
192
- cache_key: str
193
- mount_name: str
194
-
195
-
196
185
  def _normalize_ui_base_url(base_url: str) -> str:
197
186
  if not base_url:
198
187
  return "/"
@@ -749,15 +738,8 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
749
738
  if not reference_file_matches_cache_key(bundle):
750
739
  try:
751
740
  create_ui_static_subpath(bundle)
752
- except PermissionError as exc:
753
- logger.error(
754
- "Failed to create %s UI static directory at %s: %s. "
755
- "That UI will not be available. "
756
- "To resolve this, set PREFECT_UI_STATIC_DIRECTORY to a writable directory.",
757
- bundle.version.upper(),
758
- bundle.static_dir,
759
- exc,
760
- )
741
+ except OSError as exc:
742
+ log_ui_static_copy_error(bundle, exc, logger)
761
743
  continue
762
744
 
763
745
  mounted_bundles[bundle.version] = bundle
@@ -386,7 +386,7 @@ async def _build_worker_ready_frame(
386
386
  sent_at=now("UTC"),
387
387
  payload={
388
388
  "consumer_id": hello.payload.consumer_id,
389
- "worker_id": worker.id,
389
+ "worker_id": None,
390
390
  "selected_channel_version": selected_channel_version,
391
391
  "effective_heartbeat_interval_seconds": (
392
392
  hello.payload.heartbeat_interval_seconds
@@ -1,6 +1,7 @@
1
1
  import enum
2
2
  import os
3
3
  import re
4
+ from copy import deepcopy
4
5
  from typing import (
5
6
  TYPE_CHECKING,
6
7
  Any,
@@ -24,6 +25,7 @@ if TYPE_CHECKING:
24
25
  import logging
25
26
 
26
27
  from prefect.client.orchestration import PrefectClient
28
+ from prefect.client.schemas.objects import BlockDocument
27
29
 
28
30
 
29
31
  T = TypeVar("T", str, int, float, bool, dict[Any, Any], list[Any], None)
@@ -338,7 +340,49 @@ async def resolve_block_document_references(
338
340
  # the function signature must mark it as optional to callers.
339
341
  assert client is not None
340
342
 
341
- async def _resolve_single_placeholder(placeholder: Placeholder) -> Any:
343
+ block_documents_by_id: dict[Any, "BlockDocument"] = {}
344
+ block_documents_by_name: dict[tuple[str, str], "BlockDocument"] = {}
345
+
346
+ async def _read_block_document_by_name(
347
+ block_type_slug: str, block_document_name: str
348
+ ) -> "BlockDocument":
349
+ cache_key = (block_type_slug, block_document_name)
350
+ if cache_key not in block_documents_by_name:
351
+ try:
352
+ block_document = await client.read_block_document_by_name(
353
+ name=block_document_name, block_type_slug=block_type_slug
354
+ )
355
+ except prefect.exceptions.ObjectNotFound as exc:
356
+ raise prefect.exceptions.ObjectNotFound(
357
+ http_exc=exc.http_exc,
358
+ help_message=(
359
+ f"Block not found: '{block_document_name}' of type '{block_type_slug}'. "
360
+ f"This block was referenced in your deployment or work pool configuration but no longer exists. "
361
+ f"It may have been deleted. Please check your configuration or create a new block."
362
+ ),
363
+ ) from exc
364
+ block_documents_by_name[cache_key] = block_document
365
+
366
+ return block_documents_by_name[cache_key]
367
+
368
+ async def _read_block_document_by_id(block_document_id: Any) -> "BlockDocument":
369
+ if block_document_id not in block_documents_by_id:
370
+ try:
371
+ block_document = await client.read_block_document(block_document_id)
372
+ except prefect.exceptions.ObjectNotFound as exc:
373
+ raise prefect.exceptions.ObjectNotFound(
374
+ http_exc=exc.http_exc,
375
+ help_message=(
376
+ f"Block not found: ID '{block_document_id}'. "
377
+ f"This block was referenced in your deployment or work pool configuration but no longer exists. "
378
+ f"It may have been deleted. Please check your configuration or create a new block."
379
+ ),
380
+ ) from exc
381
+ block_documents_by_id[block_document_id] = block_document
382
+
383
+ return block_documents_by_id[block_document_id]
384
+
385
+ async def _resolve_single_placeholder(placeholder: Placeholder, tmpl: T) -> Any:
342
386
  parts = placeholder.name.replace(BLOCK_DOCUMENT_PLACEHOLDER_PREFIX, "").split(
343
387
  ".", 2
344
388
  )
@@ -349,19 +393,9 @@ async def resolve_block_document_references(
349
393
  )
350
394
  block_type_slug, block_document_name, *value_keypath = parts
351
395
 
352
- try:
353
- block_document = await client.read_block_document_by_name(
354
- name=block_document_name, block_type_slug=block_type_slug
355
- )
356
- except prefect.exceptions.ObjectNotFound as exc:
357
- raise prefect.exceptions.ObjectNotFound(
358
- http_exc=exc.http_exc,
359
- help_message=(
360
- f"Block not found: '{block_document_name}' of type '{block_type_slug}'. "
361
- f"This block was referenced in your deployment or work pool configuration but no longer exists. "
362
- f"It may have been deleted. Please check your configuration or create a new block."
363
- ),
364
- ) from exc
396
+ block_document = await _read_block_document_by_name(
397
+ block_type_slug, block_document_name
398
+ )
365
399
 
366
400
  data = block_document.data
367
401
  value: Any = data
@@ -375,80 +409,67 @@ async def resolve_block_document_references(
375
409
  from_dict: Any = get_from_dict(data, value_keypath[0], default=NotSet)
376
410
  if from_dict is NotSet:
377
411
  raise ValueError(
378
- f"Invalid template: {template!r}. Could not resolve the"
412
+ f"Invalid template: {tmpl!r}. Could not resolve the"
379
413
  " keypath in the block document data."
380
414
  )
381
415
  value = from_dict
382
416
 
417
+ value = deepcopy(value)
418
+
383
419
  if value_transformer:
384
420
  value = value_transformer(placeholder.full_match, value)
385
421
 
386
422
  return value
387
423
 
388
- if isinstance(template, dict):
389
- block_document_id = template.get("$ref", {}).get("block_document_id")
390
- if block_document_id:
391
- try:
392
- block_document = await client.read_block_document(block_document_id)
393
- except prefect.exceptions.ObjectNotFound as exc:
394
- raise prefect.exceptions.ObjectNotFound(
395
- http_exc=exc.http_exc,
396
- help_message=(
397
- f"Block not found: ID '{block_document_id}'. "
398
- f"This block was referenced in your deployment or work pool configuration but no longer exists. "
399
- f"It may have been deleted. Please check your configuration or create a new block."
400
- ),
401
- ) from exc
402
- return block_document.data
403
- updated_template: dict[str, Any] = {}
404
- for key, value in template.items():
405
- updated_value = await resolve_block_document_references(
406
- value, value_transformer=value_transformer, client=client
424
+ async def _resolve(tmpl: T) -> Union[T, dict[str, Any]]:
425
+ if isinstance(tmpl, dict):
426
+ block_document_id = tmpl.get("$ref", {}).get("block_document_id")
427
+ if block_document_id:
428
+ block_document = await _read_block_document_by_id(block_document_id)
429
+ return deepcopy(block_document.data)
430
+ updated_template: dict[str, Any] = {}
431
+ for key, value in tmpl.items():
432
+ updated_template[key] = await _resolve(value)
433
+ return updated_template
434
+ elif isinstance(tmpl, list):
435
+ return [await _resolve(item) for item in tmpl]
436
+ elif isinstance(tmpl, str):
437
+ placeholders = find_placeholders(tmpl)
438
+ has_block_document_placeholder = any(
439
+ placeholder.type is PlaceholderType.BLOCK_DOCUMENT
440
+ for placeholder in placeholders
407
441
  )
408
- updated_template[key] = updated_value
409
- return updated_template
410
- elif isinstance(template, list):
411
- return [
412
- await resolve_block_document_references(
413
- item, value_transformer=value_transformer, client=client
414
- )
415
- for item in template
416
- ]
417
- elif isinstance(template, str):
418
- placeholders = find_placeholders(template)
419
- has_block_document_placeholder = any(
420
- placeholder.type is PlaceholderType.BLOCK_DOCUMENT
421
- for placeholder in placeholders
422
- )
423
- if not (placeholders and has_block_document_placeholder):
424
- return template
425
- elif (
426
- len(placeholders) == 1
427
- and list(placeholders)[0].full_match == template
428
- and list(placeholders)[0].type is PlaceholderType.BLOCK_DOCUMENT
429
- ):
430
- [placeholder] = placeholders
431
- return await _resolve_single_placeholder(placeholder)
432
- else:
433
- # Inline substitution: replace each block placeholder with its resolved value.
434
- # Any non-block placeholders are left intact for later resolution.
435
- result = template
436
- for placeholder in placeholders:
437
- if placeholder.type is not PlaceholderType.BLOCK_DOCUMENT:
438
- continue
439
- value = await _resolve_single_placeholder(placeholder)
440
- if isinstance(value, (dict, list)):
441
- raise ValueError(
442
- f"Invalid template: {template!r}. Block placeholder"
443
- f" {placeholder.full_match!r} resolved to a {type(value).__name__},"
444
- " which cannot be used for inline string substitution."
445
- " Resolve a scalar attribute instead (e.g., '.value' or '.url')."
446
- )
447
- result = result.replace(placeholder.full_match, str(value))
442
+ if not (placeholders and has_block_document_placeholder):
443
+ return tmpl
444
+ elif (
445
+ len(placeholders) == 1
446
+ and list(placeholders)[0].full_match == tmpl
447
+ and list(placeholders)[0].type is PlaceholderType.BLOCK_DOCUMENT
448
+ ):
449
+ [placeholder] = placeholders
450
+ return await _resolve_single_placeholder(placeholder, tmpl)
451
+ else:
452
+ # Inline substitution: replace each block placeholder with its resolved value.
453
+ # Any non-block placeholders are left intact for later resolution.
454
+ result = tmpl
455
+ for placeholder in placeholders:
456
+ if placeholder.type is not PlaceholderType.BLOCK_DOCUMENT:
457
+ continue
458
+ value = await _resolve_single_placeholder(placeholder, tmpl)
459
+ if isinstance(value, (dict, list)):
460
+ raise ValueError(
461
+ f"Invalid template: {tmpl!r}. Block placeholder"
462
+ f" {placeholder.full_match!r} resolved to a {type(value).__name__},"
463
+ " which cannot be used for inline string substitution."
464
+ " Resolve a scalar attribute instead (e.g., '.value' or '.url')."
465
+ )
466
+ result = result.replace(placeholder.full_match, str(value))
448
467
 
449
- return cast(T, result)
468
+ return cast(T, result)
450
469
 
451
- return template
470
+ return tmpl
471
+
472
+ return await _resolve(template)
452
473
 
453
474
 
454
475
  @inject_client
@@ -472,43 +493,55 @@ async def resolve_variables(template: T, client: Optional["PrefectClient"] = Non
472
493
  # the function signature must mark it as optional to callers.
473
494
  assert client is not None
474
495
 
475
- if isinstance(template, str):
476
- placeholders = find_placeholders(template)
477
- has_variable_placeholder = any(
478
- placeholder.type is PlaceholderType.VARIABLE for placeholder in placeholders
479
- )
480
- if not placeholders or not has_variable_placeholder:
481
- # If there are no values, we can just use the template
482
- return template
483
- elif (
484
- len(placeholders) == 1
485
- and list(placeholders)[0].full_match == template
486
- and list(placeholders)[0].type is PlaceholderType.VARIABLE
487
- ):
488
- variable_name = list(placeholders)[0].name.replace(
489
- VARIABLE_PLACEHOLDER_PREFIX, ""
496
+ _SENTINEL = object()
497
+ _MISSING = object()
498
+ cache: dict[str, Any] = {}
499
+
500
+ async def _read_variable(name: str) -> Any:
501
+ variable_name = name.replace(VARIABLE_PLACEHOLDER_PREFIX, "")
502
+ cached = cache.get(variable_name, _SENTINEL)
503
+ if cached is not _SENTINEL:
504
+ return cached
505
+ variable = await client.read_variable_by_name(name=variable_name)
506
+ if variable is None:
507
+ cache[variable_name] = _MISSING
508
+ return _MISSING
509
+ cache[variable_name] = variable.value
510
+ return variable.value
511
+
512
+ async def _resolve(tmpl: T) -> T:
513
+ if isinstance(tmpl, str):
514
+ placeholders = find_placeholders(tmpl)
515
+ has_variable_placeholder = any(
516
+ placeholder.type is PlaceholderType.VARIABLE
517
+ for placeholder in placeholders
490
518
  )
491
- variable = await client.read_variable_by_name(name=variable_name)
492
- if variable is None:
493
- return ""
519
+ if not placeholders or not has_variable_placeholder:
520
+ return tmpl
521
+ elif (
522
+ len(placeholders) == 1
523
+ and list(placeholders)[0].full_match == tmpl
524
+ and list(placeholders)[0].type is PlaceholderType.VARIABLE
525
+ ):
526
+ value = await _read_variable(list(placeholders)[0].name)
527
+ if value is _MISSING:
528
+ return ""
529
+ else:
530
+ return cast(T, value)
494
531
  else:
495
- return cast(T, variable.value)
532
+ for full_match, name, placeholder_type in placeholders:
533
+ if placeholder_type is PlaceholderType.VARIABLE:
534
+ value = await _read_variable(name)
535
+ if value is _MISSING:
536
+ tmpl = tmpl.replace(full_match, "")
537
+ else:
538
+ tmpl = tmpl.replace(full_match, str(value))
539
+ return tmpl
540
+ elif isinstance(tmpl, dict):
541
+ return {key: await _resolve(value) for key, value in tmpl.items()}
542
+ elif isinstance(tmpl, list):
543
+ return [await _resolve(item) for item in tmpl]
496
544
  else:
497
- for full_match, name, placeholder_type in placeholders:
498
- if placeholder_type is PlaceholderType.VARIABLE:
499
- variable_name = name.replace(VARIABLE_PLACEHOLDER_PREFIX, "")
500
- variable = await client.read_variable_by_name(name=variable_name)
501
- if variable is None:
502
- template = template.replace(full_match, "")
503
- else:
504
- template = template.replace(full_match, str(variable.value))
505
- return template
506
- elif isinstance(template, dict):
507
- return {
508
- key: await resolve_variables(value, client=client)
509
- for key, value in template.items()
510
- }
511
- elif isinstance(template, list):
512
- return [await resolve_variables(item, client=client) for item in template]
513
- else:
514
- return template
545
+ return tmpl
546
+
547
+ return await _resolve(template)
@@ -1,5 +0,0 @@
1
- # Generated by versioningit
2
- __version__ = "3.7.2.dev5"
3
- __build_date__ = "2026-05-22 09:13:37.097941+00:00"
4
- __git_commit__ = "abc1acf7a442e5e43ad2849dc73d66c5b91143ae"
5
- __dirty__ = False