prefect-client 3.8.3.dev1__tar.gz → 3.8.3.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/PKG-INFO +1 -1
  2. prefect_client-3.8.3.dev3/src/prefect/_build_info.py +5 -0
  3. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/cancellation.py +12 -9
  4. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/observers.py +30 -17
  5. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/clients.py +15 -4
  6. prefect_client-3.8.3.dev3/src/prefect/runner/_uv_command.py +90 -0
  7. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_workspace_starter.py +7 -66
  8. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/storage.py +3 -0
  9. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/process.py +44 -5
  10. prefect_client-3.8.3.dev1/src/prefect/_build_info.py +0 -5
  11. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/.gitignore +0 -0
  12. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/LICENSE +0 -0
  13. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/README.md +0 -0
  14. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/hatch_build.py +0 -0
  15. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/pyproject.toml +0 -0
  16. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/.prefectignore +0 -0
  17. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/AGENTS.md +0 -0
  18. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/__init__.py +0 -0
  19. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/__main__.py +0 -0
  20. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/__init__.py +0 -0
  21. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/_launchers.py +0 -0
  22. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
  23. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
  24. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/plugins/__init__.py +0 -0
  25. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/plugins/apply.py +0 -0
  26. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  27. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/plugins/manager.py +0 -0
  28. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/plugins/spec.py +0 -0
  29. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
  30. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/sla/client.py +0 -0
  31. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
  32. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_flow_run_suspension.py +0 -0
  33. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/__init__.py +0 -0
  34. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/_logging.py +0 -0
  35. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/__init__.py +0 -0
  36. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  37. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/client.py +0 -0
  38. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/device_id.py +0 -0
  39. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/emit.py +0 -0
  40. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/enabled.py +0 -0
  41. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/events.py +0 -0
  42. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/milestones.py +0 -0
  43. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/notice.py +0 -0
  44. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/analytics/service.py +0 -0
  45. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/ast_utils.py +0 -0
  46. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/buildx.py +0 -0
  47. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
  48. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  49. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/backports.py +0 -0
  50. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/blocks.py +0 -0
  51. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  52. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  53. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
  54. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/compatibility/starlette.py +0 -0
  55. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
  56. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
  57. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
  58. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  59. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
  60. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
  61. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
  62. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
  63. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
  64. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/control_listener.py +0 -0
  65. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/deprecated.py +0 -0
  66. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/engine.py +0 -0
  67. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/git.py +0 -0
  68. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  69. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/installation.py +0 -0
  70. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/integrations.py +0 -0
  71. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/launchers.py +0 -0
  72. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/lazy.py +0 -0
  73. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/metrics.py +0 -0
  74. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/observability.py +0 -0
  75. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/__init__.py +0 -0
  76. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/apply.py +0 -0
  77. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/collections.py +0 -0
  78. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  79. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/manager.py +0 -0
  80. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/spec.py +0 -0
  81. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/plugins/startup.py +0 -0
  82. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
  83. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
  84. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  85. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  86. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  87. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/pytz.py +0 -0
  88. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/result_records.py +0 -0
  89. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/retries.py +0 -0
  90. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schema.py +0 -0
  91. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
  92. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schemas/_registry.py +0 -0
  93. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
  94. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
  95. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
  96. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/schemas/validators.py +0 -0
  97. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  98. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/states.py +0 -0
  99. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/testing.py +0 -0
  100. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/urls.py +0 -0
  101. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/uuid7.py +0 -0
  102. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/version_checking.py +0 -0
  103. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/versioning.py +0 -0
  104. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/waiters.py +0 -0
  105. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_internal/websockets.py +0 -0
  106. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/__init__.py +0 -0
  107. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/fetcher.py +0 -0
  108. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/generator.py +0 -0
  109. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/models.py +0 -0
  110. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/naming.py +0 -0
  111. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/renderer.py +0 -0
  112. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/schema_converter.py +0 -0
  113. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/templates/__init__.py +0 -0
  114. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  115. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/types.py +0 -0
  116. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_sdk/unions.py +0 -0
  117. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
  118. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
  119. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/agent.py +0 -0
  120. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/analytics/__init__.py +0 -0
  121. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/artifacts.py +0 -0
  122. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/assets/__init__.py +0 -0
  123. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/assets/core.py +0 -0
  124. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/assets/materialize.py +0 -0
  125. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/automations.py +0 -0
  126. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/AGENTS.md +0 -0
  127. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/__init__.py +0 -0
  128. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/abstract.py +0 -0
  129. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/core.py +0 -0
  130. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/fields.py +0 -0
  131. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/notifications.py +0 -0
  132. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/redis.py +0 -0
  133. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/system.py +0 -0
  134. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/blocks/webhook.py +0 -0
  135. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/__init__.py +0 -0
  136. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/_file_collector.py +0 -0
  137. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/_ignore_filter.py +0 -0
  138. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/_path_resolver.py +0 -0
  139. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/_zip_builder.py +0 -0
  140. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/_zip_extractor.py +0 -0
  141. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/bundles/execute.py +0 -0
  142. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/cache_policies.py +0 -0
  143. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/AGENTS.md +0 -0
  144. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/__init__.py +0 -0
  145. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/attribution.py +0 -0
  146. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/base.py +0 -0
  147. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/cloud.py +0 -0
  148. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/collections.py +0 -0
  149. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/constants.py +0 -0
  150. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/__init__.py +0 -0
  151. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  152. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  153. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  154. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
  155. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  156. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  157. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  158. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  159. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  160. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  161. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  162. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  163. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  164. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  165. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  166. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_events/client.py +0 -0
  167. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  168. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  169. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  170. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
  171. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  172. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
  173. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  174. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
  175. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  176. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  177. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/base.py +0 -0
  178. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/orchestration/routes.py +0 -0
  179. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/__init__.py +0 -0
  180. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/actions.py +0 -0
  181. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/events.py +0 -0
  182. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/filters.py +0 -0
  183. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/objects.py +0 -0
  184. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/responses.py +0 -0
  185. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/schedules.py +0 -0
  186. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/sorting.py +0 -0
  187. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/schemas/worker_channel.py +0 -0
  188. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/subscriptions.py +0 -0
  189. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/types/__init__.py +0 -0
  190. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  191. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/client/utilities.py +0 -0
  192. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/AGENTS.md +0 -0
  193. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/__init__.py +0 -0
  194. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
  195. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/_events.py +0 -0
  196. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/_leases.py +0 -0
  197. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/_sync.py +0 -0
  198. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/asyncio.py +0 -0
  199. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/context.py +0 -0
  200. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/services.py +0 -0
  201. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/sync.py +0 -0
  202. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
  203. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  204. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
  205. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
  206. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/context.py +0 -0
  207. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/services.py +0 -0
  208. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
  209. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/context.py +0 -0
  210. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/AGENTS.md +0 -0
  211. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/__init__.py +0 -0
  212. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/base.py +0 -0
  213. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/deployments.py +0 -0
  214. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/flow_runs.py +0 -0
  215. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/runner.py +0 -0
  216. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/schedules.py +0 -0
  217. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
  218. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/steps/core.py +0 -0
  219. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/steps/pull.py +0 -0
  220. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/deployments/steps/utility.py +0 -0
  221. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/docker/__init__.py +0 -0
  222. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/docker/_buildx.py +0 -0
  223. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/docker/docker_image.py +0 -0
  224. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/engine.py +0 -0
  225. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/AGENTS.md +0 -0
  226. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/__init__.py +0 -0
  227. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/actions.py +0 -0
  228. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/filters.py +0 -0
  229. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/related.py +0 -0
  230. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/schemas/__init__.py +0 -0
  231. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/schemas/automations.py +0 -0
  232. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  233. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/schemas/events.py +0 -0
  234. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/schemas/labelling.py +0 -0
  235. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/subscribers.py +0 -0
  236. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/utilities.py +0 -0
  237. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/events/worker.py +0 -0
  238. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/exceptions.py +0 -0
  239. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/filesystems.py +0 -0
  240. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/flow_engine.py +0 -0
  241. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/flow_runs.py +0 -0
  242. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/flows.py +0 -0
  243. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/futures.py +0 -0
  244. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/__init__.py +0 -0
  245. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/base.py +0 -0
  246. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  247. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  248. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  249. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  250. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  251. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  252. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/input/__init__.py +0 -0
  253. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/input/actions.py +0 -0
  254. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/input/run_input.py +0 -0
  255. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/locking/__init__.py +0 -0
  256. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/locking/_filelock.py +0 -0
  257. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/locking/filesystem.py +0 -0
  258. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/locking/memory.py +0 -0
  259. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/locking/protocol.py +0 -0
  260. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/AGENTS.md +0 -0
  261. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/__init__.py +0 -0
  262. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/clients.py +0 -0
  263. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/configuration.py +0 -0
  264. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/filters.py +0 -0
  265. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/formatters.py +0 -0
  266. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/handlers.py +0 -0
  267. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/highlighters.py +0 -0
  268. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/loggers.py +0 -0
  269. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/logging/logging.yml +0 -0
  270. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/main.py +0 -0
  271. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/plugins.py +0 -0
  272. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/py.typed +0 -0
  273. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/results.py +0 -0
  274. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/AGENTS.md +0 -0
  275. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/__init__.py +0 -0
  276. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_cancel_finalizer.py +0 -0
  277. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_cancellation_manager.py +0 -0
  278. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_control_channel.py +0 -0
  279. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_deployment_registry.py +0 -0
  280. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_event_emitter.py +0 -0
  281. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_flow_resolver.py +0 -0
  282. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_flow_run_executor.py +0 -0
  283. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_hook_runner.py +0 -0
  284. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_limit_manager.py +0 -0
  285. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_process_manager.py +0 -0
  286. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_scheduled_run_poller.py +0 -0
  287. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_starter_bundle.py +0 -0
  288. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_starter_direct.py +0 -0
  289. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_starter_engine.py +0 -0
  290. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_state_proposer.py +0 -0
  291. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/_workspace_resolver.py +0 -0
  292. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/runner.py +0 -0
  293. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runner/server.py +0 -0
  294. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runtime/__init__.py +0 -0
  295. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runtime/deployment.py +0 -0
  296. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runtime/flow_run.py +0 -0
  297. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/runtime/task_run.py +0 -0
  298. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/schedules.py +0 -0
  299. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/serializers.py +0 -0
  300. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/__init__.py +0 -0
  301. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/_ui_static.py +0 -0
  302. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/admin.py +0 -0
  303. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/artifacts.py +0 -0
  304. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/automations.py +0 -0
  305. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/background_workers.py +0 -0
  306. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
  307. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/block_documents.py +0 -0
  308. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/block_schemas.py +0 -0
  309. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/block_types.py +0 -0
  310. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/clients.py +0 -0
  311. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/collections.py +0 -0
  312. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  313. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
  314. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  315. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/csrf_token.py +0 -0
  316. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/dependencies.py +0 -0
  317. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/deployments.py +0 -0
  318. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/events.py +0 -0
  319. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
  320. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/flow_runs.py +0 -0
  321. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/flows.py +0 -0
  322. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/logs.py +0 -0
  323. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/middleware.py +0 -0
  324. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/root.py +0 -0
  325. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/run_history.py +0 -0
  326. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/saved_searches.py +0 -0
  327. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/server.py +0 -0
  328. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  329. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/task_run_states.py +0 -0
  330. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/task_runs.py +0 -0
  331. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/task_workers.py +0 -0
  332. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/templates.py +0 -0
  333. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
  334. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
  335. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/ui/flows.py +0 -0
  336. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
  337. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
  338. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/validation.py +0 -0
  339. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/variables.py +0 -0
  340. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/work_queues.py +0 -0
  341. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/server/api/workers.py +0 -0
  342. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/AGENTS.md +0 -0
  343. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/__init__.py +0 -0
  344. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/_types.py +0 -0
  345. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/base.py +0 -0
  346. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/constants.py +0 -0
  347. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/context.py +0 -0
  348. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/legacy.py +0 -0
  349. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/__init__.py +0 -0
  350. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/_defaults.py +0 -0
  351. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/api.py +0 -0
  352. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/cli.py +0 -0
  353. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/client.py +0 -0
  354. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/cloud.py +0 -0
  355. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/deployments.py +0 -0
  356. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/events.py +0 -0
  357. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/experiments.py +0 -0
  358. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/flows.py +0 -0
  359. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/internal.py +0 -0
  360. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/logging.py +0 -0
  361. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/plugins.py +0 -0
  362. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/results.py +0 -0
  363. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/root.py +0 -0
  364. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/runner.py +0 -0
  365. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
  366. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/api.py +0 -0
  367. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/concurrency.py +0 -0
  368. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/database.py +0 -0
  369. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
  370. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/docket.py +0 -0
  371. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
  372. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/events.py +0 -0
  373. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  374. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/logs.py +0 -0
  375. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/root.py +0 -0
  376. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/services.py +0 -0
  377. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
  378. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/ui.py +0 -0
  379. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/server/worker_channel.py +0 -0
  380. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/tasks.py +0 -0
  381. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/telemetry.py +0 -0
  382. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/testing.py +0 -0
  383. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/models/worker.py +0 -0
  384. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/profiles.py +0 -0
  385. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/profiles.toml +0 -0
  386. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/settings/sources.py +0 -0
  387. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/states.py +0 -0
  388. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/task_engine.py +0 -0
  389. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/task_runners.py +0 -0
  390. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/task_runs.py +0 -0
  391. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/task_worker.py +0 -0
  392. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/tasks.py +0 -0
  393. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/telemetry/__init__.py +0 -0
  394. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
  395. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/transactions.py +0 -0
  396. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/types/__init__.py +0 -0
  397. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/types/_concurrency.py +0 -0
  398. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/types/_datetime.py +0 -0
  399. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/types/entrypoint.py +0 -0
  400. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/types/names.py +0 -0
  401. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/AGENTS.md +0 -0
  402. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/__init__.py +0 -0
  403. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/annotations.py +0 -0
  404. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  405. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  406. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/callables/AGENTS.md +0 -0
  407. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/callables/__init__.py +0 -0
  408. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/collections.py +0 -0
  409. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/compat.py +0 -0
  410. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/context.py +0 -0
  411. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/dispatch.py +0 -0
  412. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/dockerutils.py +0 -0
  413. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/engine/AGENTS.md +0 -0
  414. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/engine/__init__.py +0 -0
  415. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  416. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/filesystem/__init__.py +0 -0
  417. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/generics.py +0 -0
  418. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/hashing.py +0 -0
  419. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/importtools.py +0 -0
  420. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/math.py +0 -0
  421. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/names.py +0 -0
  422. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  423. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/processutils/__init__.py +0 -0
  424. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/pydantic.py +0 -0
  425. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/render_swagger.py +0 -0
  426. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  427. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  428. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  429. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
  430. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/services.py +0 -0
  431. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/slugify.py +0 -0
  432. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/templating/AGENTS.md +0 -0
  433. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/templating/__init__.py +0 -0
  434. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/text.py +0 -0
  435. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/timeout.py +0 -0
  436. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/urls.py +0 -0
  437. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/utilities/visualization.py +0 -0
  438. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/variables.py +0 -0
  439. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/AGENTS.md +0 -0
  440. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/__init__.py +0 -0
  441. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_cleanup.py +0 -0
  442. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_cleanup_handlers.py +0 -0
  443. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  444. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
  445. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_worker_channel/_state.py +0 -0
  446. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_worker_channel/_sync.py +0 -0
  447. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  448. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/base.py +0 -0
  449. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/block.py +0 -0
  450. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/cloud.py +0 -0
  451. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/server.py +0 -0
  452. {prefect_client-3.8.3.dev1 → prefect_client-3.8.3.dev3}/src/prefect/workers/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: prefect-client
3
- Version: 3.8.3.dev1
3
+ Version: 3.8.3.dev3
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.8.3.dev3"
3
+ __build_date__ = "2026-08-13 08:34:43.056386+00:00"
4
+ __git_commit__ = "517a7c41b60072999a010b020c2e6dbf014c2f4a"
5
+ __dirty__ = False
@@ -424,11 +424,18 @@ class WatcherThreadCancelScope(CancelScope):
424
424
  return self
425
425
 
426
426
  def __exit__(self, *_: Any) -> Optional[bool]:
427
- retval = super().__exit__(*_)
428
- self._event.set()
429
- if self._enforcer_thread:
430
- logger.debug("%r joining enforcer thread %r", self, self._enforcer_thread)
431
- self._enforcer_thread.join()
427
+ # The enforcer thread can inject a cancellation exception at any instruction in
428
+ # this frame, so the event must be set from a `finally` to guarantee the
429
+ # enforcer is always released.
430
+ try:
431
+ retval = super().__exit__(*_)
432
+ finally:
433
+ self._event.set()
434
+ if self._enforcer_thread:
435
+ logger.debug(
436
+ "%r joining enforcer thread %r", self, self._enforcer_thread
437
+ )
438
+ self._enforcer_thread.join()
432
439
  return retval
433
440
 
434
441
  def _send_cancelled_error(self):
@@ -458,10 +465,6 @@ class WatcherThreadCancelScope(CancelScope):
458
465
  with _get_thread_shield(self._supervised_thread):
459
466
  self._send_cancelled_error()
460
467
 
461
- # Wait for the supervised thread to exit its context
462
- logger.debug("%r waiting for supervised thread to exit", self)
463
- self._event.wait()
464
-
465
468
  def cancel(self, throw: bool = True):
466
469
  if not super().cancel():
467
470
  return False
@@ -24,8 +24,9 @@ from prefect.exceptions import ObjectNotFound
24
24
  from prefect.logging.loggers import get_logger
25
25
  from prefect.utilities.services import critical_service_loop
26
26
 
27
- # How long to wait before warning that a suspension state is still unavailable,
28
- # how often to look initially, and the retry cap after the warning.
27
+ # How long to wait before warning that a suspension transition is still not
28
+ # visible on the flow run, how often to look initially, and the retry cap after
29
+ # the warning.
29
30
  SUSPENSION_CONFIRMATION_WARNING_AFTER = 30.0
30
31
  SUSPENSION_CONFIRMATION_INTERVAL = 0.5
31
32
  SUSPENSION_CONFIRMATION_MAX_INTERVAL = 10.0
@@ -113,28 +114,40 @@ class _SuspensionWatch:
113
114
 
114
115
  while not self._closed and not self.is_suspended:
115
116
  try:
116
- state = await self._client.read_flow_run_state(state_id)
117
+ flow_run = await self._client.read_flow_run(self.flow_run_id)
117
118
  except ObjectNotFound:
118
- pass
119
+ self._logger.debug(
120
+ "Flow run %s no longer exists; abandoning suspension confirmation.",
121
+ self.flow_run_id,
122
+ )
123
+ return
119
124
  except Exception as exc:
120
125
  last_error = exc
121
126
  else:
122
- if state.state_details.flow_run_id not in (None, self.flow_run_id):
123
- self._logger.warning(
124
- "Suspension event for flow run %s referred to state %s owned"
125
- " by flow run %s.",
126
- self.flow_run_id,
127
- state_id,
128
- state.state_details.flow_run_id,
129
- )
130
- return
131
- self.notify_if_suspended(state)
132
- return
127
+ state = flow_run.state
128
+ if state is not None:
129
+ if state.id == state_id or is_suspended_flow_run_state(state):
130
+ self.notify_if_suspended(state)
131
+ return
132
+ if state.timestamp >= occurred:
133
+ # Superseded (e.g. resumed) before confirmation: still
134
+ # stop, or this engine could double-execute alongside
135
+ # the resumed run's fresh submission.
136
+ self.notify_if_suspended(
137
+ State(
138
+ id=state_id,
139
+ type=StateType.PAUSED,
140
+ name="Suspended",
141
+ timestamp=occurred,
142
+ )
143
+ )
144
+ return
133
145
 
134
146
  if not warned and time.monotonic() >= warning_deadline:
135
147
  self._logger.warning(
136
- "Received a suspension event for flow run %s, but state %s has"
137
- " not become readable within %s seconds; continuing to retry.",
148
+ "Received a suspension event for flow run %s, but its state %s"
149
+ " has not become visible within %s seconds; continuing to"
150
+ " retry.",
138
151
  self.flow_run_id,
139
152
  state_id,
140
153
  SUSPENSION_CONFIRMATION_WARNING_AFTER,
@@ -1,5 +1,6 @@
1
1
  import abc
2
2
  import asyncio
3
+ import base64
3
4
  from datetime import timedelta
4
5
  from types import TracebackType
5
6
  from typing import (
@@ -252,6 +253,11 @@ class AssertingEventsClient(EventsClient):
252
253
  return self
253
254
 
254
255
 
256
+ def _basic_auth_token(auth_string: str) -> str:
257
+ """Encode an auth string of the form 'user:password' for basic authentication"""
258
+ return base64.b64encode(auth_string.encode("utf-8")).decode("utf-8")
259
+
260
+
255
261
  def _get_api_url_and_key(
256
262
  api_url: Optional[str], api_key: Optional[str]
257
263
  ) -> Tuple[str, str]:
@@ -303,10 +309,15 @@ class PrefectEventsClient(EventsClient):
303
309
  auth_string.get_secret_value() if auth_string is not None else None
304
310
  )
305
311
  self._events_socket_url = events_in_socket_from_api_url(api_url)
306
- self._connect = websocket_connect(
307
- self._events_socket_url,
308
- subprotocols=[Subprotocol("prefect")],
309
- )
312
+ connect_kwargs: Dict[str, Any] = {"subprotocols": [Subprotocol("prefect")]}
313
+ if self._auth_token:
314
+ # Servers and proxies that require basic authentication reject the
315
+ # HTTP upgrade request before the "prefect" subprotocol auth
316
+ # handshake can run, so also send the credentials as a header.
317
+ connect_kwargs["additional_headers"] = {
318
+ "Authorization": f"Basic {_basic_auth_token(self._auth_token)}"
319
+ }
320
+ self._connect = websocket_connect(self._events_socket_url, **connect_kwargs)
310
321
  self._websocket = None
311
322
  self._reconnection_attempts = reconnection_attempts
312
323
  self._unconfirmed_events = []
@@ -0,0 +1,90 @@
1
+ """Auto-`uv run` launcher command construction shared by runner and worker paths."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import shutil
6
+ from pathlib import Path
7
+ from typing import Iterable
8
+
9
+ from packaging.requirements import InvalidRequirement, Requirement
10
+ from packaging.utils import canonicalize_name
11
+
12
+ from prefect._internal.compatibility.backports import tomllib
13
+ from prefect.settings import get_current_settings
14
+ from prefect.utilities.processutils import command_to_string
15
+
16
+
17
+ def _dependencies_include_prefect(dependencies: object) -> bool:
18
+ if not isinstance(dependencies, Iterable) or isinstance(dependencies, (str, bytes)):
19
+ return False
20
+
21
+ for dependency in dependencies:
22
+ if not isinstance(dependency, str):
23
+ continue
24
+ try:
25
+ name = Requirement(dependency).name
26
+ except InvalidRequirement:
27
+ continue
28
+ if canonicalize_name(name) == "prefect":
29
+ return True
30
+ return False
31
+
32
+
33
+ def _pyproject_declares_prefect_dependency(pyproject: Path) -> bool:
34
+ try:
35
+ data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
36
+ except (OSError, tomllib.TOMLDecodeError):
37
+ return False
38
+
39
+ project = data.get("project")
40
+ if not isinstance(project, dict):
41
+ return False
42
+
43
+ return _dependencies_include_prefect(project.get("dependencies"))
44
+
45
+
46
+ def uv_project_command(
47
+ project_root: Path | None,
48
+ engine_args: Iterable[str],
49
+ path: str | None = None,
50
+ auto_install_dependencies: bool | None = None,
51
+ ) -> str | None:
52
+ """Build an auto-`uv run` command for a project directory, if applicable.
53
+
54
+ Returns `None` unless dependency auto-installation is enabled, `project_root`
55
+ contains a `pyproject.toml` declaring `prefect` as a project dependency, and
56
+ `uv` is discoverable on `path` (or the current `PATH` when `path` is `None`).
57
+
58
+ `auto_install_dependencies` overrides the current setting value, for callers
59
+ that resolve the setting from a run-specific environment.
60
+ """
61
+ if auto_install_dependencies is None:
62
+ auto_install_dependencies = (
63
+ get_current_settings().runner.auto_install_dependencies
64
+ )
65
+ if not auto_install_dependencies:
66
+ return None
67
+
68
+ if project_root is None:
69
+ return None
70
+
71
+ pyproject = project_root / "pyproject.toml"
72
+ if not pyproject.is_file() or not _pyproject_declares_prefect_dependency(pyproject):
73
+ return None
74
+
75
+ uv_executable = (
76
+ shutil.which("uv", path=path) if path is not None else shutil.which("uv")
77
+ )
78
+ if uv_executable is None:
79
+ return None
80
+
81
+ return command_to_string(
82
+ [
83
+ uv_executable,
84
+ "run",
85
+ "--no-default-groups",
86
+ "--project",
87
+ str(project_root),
88
+ *engine_args,
89
+ ]
90
+ )
@@ -2,26 +2,23 @@ from __future__ import annotations
2
2
 
3
3
  import functools
4
4
  import os
5
- import shutil
6
5
  import site
7
6
  import subprocess
8
7
  import sys
9
8
  import sysconfig
10
9
  from contextlib import contextmanager
11
10
  from pathlib import Path
12
- from typing import TYPE_CHECKING, Any, Iterable, Iterator
11
+ from typing import TYPE_CHECKING, Any, Iterator
13
12
  from uuid import UUID
14
13
 
15
14
  import anyio
16
15
  import anyio.abc
17
- from packaging.requirements import InvalidRequirement, Requirement
18
- from packaging.utils import canonicalize_name
19
16
 
20
- from prefect._internal.compatibility.backports import tomllib
21
17
  from prefect.exceptions import MissingFlowError
22
18
  from prefect.flows import load_flow_from_entrypoint, load_function_and_convert_to_flow
23
19
  from prefect.runner._process_manager import ProcessHandle
24
20
  from prefect.runner._starter_engine import EngineCommandStarter
21
+ from prefect.runner._uv_command import uv_project_command
25
22
  from prefect.runner._workspace_resolver import (
26
23
  PreparedWorkspace,
27
24
  PreparedWorkspaceResult,
@@ -29,7 +26,7 @@ from prefect.runner._workspace_resolver import (
29
26
  )
30
27
  from prefect.settings import get_current_settings
31
28
  from prefect.utilities.asyncutils import run_sync_in_worker_thread
32
- from prefect.utilities.processutils import command_to_string, sanitize_subprocess_env
29
+ from prefect.utilities.processutils import sanitize_subprocess_env
33
30
 
34
31
  if TYPE_CHECKING:
35
32
  from prefect.client.schemas.objects import FlowRun
@@ -217,67 +214,11 @@ def _absolute_file_entrypoint(workspace: PreparedWorkspace) -> str:
217
214
  return f"{entrypoint_path.resolve()}:{object_name}"
218
215
 
219
216
 
220
- def _dependencies_include_prefect(dependencies: object) -> bool:
221
- if not isinstance(dependencies, Iterable) or isinstance(dependencies, (str, bytes)):
222
- return False
223
-
224
- for dependency in dependencies:
225
- if not isinstance(dependency, str):
226
- continue
227
- try:
228
- name = Requirement(dependency).name
229
- except InvalidRequirement:
230
- continue
231
- if canonicalize_name(name) == "prefect":
232
- return True
233
- return False
234
-
235
-
236
- def _pyproject_declares_prefect_dependency(pyproject: Path) -> bool:
237
- try:
238
- data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
239
- except (OSError, tomllib.TOMLDecodeError):
240
- return False
241
-
242
- project = data.get("project")
243
- if not isinstance(project, dict):
244
- return False
245
-
246
- return _dependencies_include_prefect(project.get("dependencies"))
247
-
248
-
249
217
  def _uv_run_command(workspace: PreparedWorkspace) -> str | None:
250
- if not get_current_settings().runner.auto_install_dependencies:
251
- return None
252
-
253
- project_root = workspace.project_root
254
- if project_root is None:
255
- return None
256
-
257
- pyproject = project_root / "pyproject.toml"
258
- if not pyproject.is_file() or not _pyproject_declares_prefect_dependency(pyproject):
259
- return None
260
-
261
- workspace_path = workspace.environment.get("PATH")
262
- uv_executable = (
263
- shutil.which("uv", path=workspace_path)
264
- if workspace_path is not None
265
- else shutil.which("uv")
266
- )
267
- if uv_executable is None:
268
- return None
269
-
270
- return command_to_string(
271
- [
272
- uv_executable,
273
- "run",
274
- "--no-default-groups",
275
- "--project",
276
- str(project_root),
277
- "-m",
278
- "prefect.flow_engine",
279
- workspace.runtime_entrypoint,
280
- ]
218
+ return uv_project_command(
219
+ workspace.project_root,
220
+ ["-m", "prefect.flow_engine", workspace.runtime_entrypoint],
221
+ path=workspace.environment.get("PATH"),
281
222
  )
282
223
 
283
224
 
@@ -217,6 +217,9 @@ class GitRepository:
217
217
  "Cannot provide both a branch and a commit SHA. Please provide only one."
218
218
  )
219
219
 
220
+ if branch and branch.startswith("-"):
221
+ raise ValueError("Branch names cannot start with '-'.")
222
+
220
223
  if commit_sha and not re.match(r"^[0-9a-fA-F]{4,64}$", commit_sha):
221
224
  raise ValueError(
222
225
  f"Invalid commit SHA: {commit_sha!r}."
@@ -25,10 +25,11 @@ from typing import TYPE_CHECKING, Any, Optional, TypeVar
25
25
 
26
26
  import anyio
27
27
  import anyio.abc
28
- from pydantic import Field, field_validator
28
+ from pydantic import Field, PrivateAttr, TypeAdapter, ValidationError, field_validator
29
29
 
30
30
  from prefect._internal.schemas.validators import validate_working_dir
31
31
  from prefect.client.schemas.objects import Flow as APIFlow
32
+ from prefect.runner._uv_command import uv_project_command
32
33
  from prefect.runner.runner import Runner
33
34
  from prefect.states import Pending
34
35
  from prefect.utilities.processutils import command_to_string, get_sys_executable
@@ -53,6 +54,8 @@ class ProcessJobConfiguration(BaseJobConfiguration):
53
54
  stream_output: bool = Field(default=True)
54
55
  working_dir: Optional[Path] = Field(default=None)
55
56
 
57
+ _command_configured: bool = PrivateAttr(default=False)
58
+
56
59
  @field_validator("working_dir")
57
60
  @classmethod
58
61
  def validate_working_dir(cls, v: Path | str | None) -> Path | None:
@@ -69,6 +72,10 @@ class ProcessJobConfiguration(BaseJobConfiguration):
69
72
  worker_name: str | None = None,
70
73
  worker_id: "UUID | None" = None,
71
74
  ) -> None:
75
+ # The base implementation fills in `_base_flow_run_command()` when no command
76
+ # is configured, so provenance must be captured before delegating.
77
+ self._command_configured = self.command is not None
78
+
72
79
  super().prepare_for_flow_run(
73
80
  flow_run,
74
81
  deployment,
@@ -80,9 +87,9 @@ class ProcessJobConfiguration(BaseJobConfiguration):
80
87
 
81
88
  self.env: dict[str, str | None] = {**os.environ, **self.env}
82
89
  self.command: str | None = (
83
- command_to_string([get_sys_executable(), "-m", "prefect.engine"])
84
- if self.command == self._base_flow_run_command()
85
- else self.command
90
+ self.command
91
+ if self._command_configured
92
+ else command_to_string([get_sys_executable(), "-m", "prefect.engine"])
86
93
  )
87
94
 
88
95
  @staticmethod
@@ -94,6 +101,38 @@ class ProcessJobConfiguration(BaseJobConfiguration):
94
101
  """
95
102
  return "python -m prefect.engine"
96
103
 
104
+ def _resolve_command(self, working_dir: Path | str) -> str | None:
105
+ """
106
+ Use an auto-`uv run` launcher for the flow run when the working directory
107
+ is a project that declares `prefect` as a dependency and the deployment
108
+ did not configure an explicit command.
109
+ """
110
+ if self._command_configured:
111
+ return self.command
112
+
113
+ env = self.env or {}
114
+ # A run-specific setting in the environment takes precedence over the
115
+ # worker process's own setting.
116
+ auto_install = env.get("PREFECT_RUNNER_AUTO_INSTALL_DEPENDENCIES")
117
+ try:
118
+ auto_install_dependencies = (
119
+ TypeAdapter(bool).validate_python(auto_install)
120
+ if auto_install is not None
121
+ else None
122
+ )
123
+ except ValidationError:
124
+ auto_install_dependencies = None
125
+
126
+ uv_command = uv_project_command(
127
+ # `uv` resolves `--project` relative to the flow run's working
128
+ # directory, so the project root must be absolute.
129
+ Path(working_dir).resolve(),
130
+ ["-m", "prefect.engine"],
131
+ path=env.get("PATH"),
132
+ auto_install_dependencies=auto_install_dependencies,
133
+ )
134
+ return uv_command or self.command
135
+
97
136
 
98
137
  class ProcessVariables(BaseVariables):
99
138
  stream_output: bool = Field(
@@ -151,7 +190,7 @@ class ProcessWorker(
151
190
  warnings.simplefilter("ignore", DeprecationWarning)
152
191
  process = await self._runner.execute_flow_run(
153
192
  flow_run_id=flow_run.id,
154
- command=configuration.command,
193
+ command=configuration._resolve_command(working_dir),
155
194
  cwd=working_dir,
156
195
  env=configuration.env,
157
196
  stream_output=configuration.stream_output,
@@ -1,5 +0,0 @@
1
- # Generated by versioningit
2
- __version__ = "3.8.3.dev1"
3
- __build_date__ = "2026-08-11 08:24:15.796562+00:00"
4
- __git_commit__ = "7d377adfd43019a26cc901d7f50491489a86377f"
5
- __dirty__ = False