prefect-client 3.8.9.dev5__tar.gz → 3.8.9.dev7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/PKG-INFO +1 -1
  2. prefect_client-3.8.9.dev7/src/prefect/_build_info.py +5 -0
  3. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/pydantic/v2_schema.py +8 -0
  4. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/__init__.py +2 -0
  5. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/actions.py +62 -2
  6. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/schemas/automations.py +18 -7
  7. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/flow_runs.py +1 -1
  8. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/flows.py +5 -5
  9. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/futures.py +2 -2
  10. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/task_engine.py +11 -8
  11. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/tasks.py +8 -7
  12. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/callables/AGENTS.md +2 -1
  13. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/callables/__init__.py +95 -46
  14. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/collections.py +1 -1
  15. prefect_client-3.8.9.dev5/src/prefect/_build_info.py +0 -5
  16. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/.gitignore +0 -0
  17. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/LICENSE +0 -0
  18. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/README.md +0 -0
  19. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/hatch_build.py +0 -0
  20. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/pyproject.toml +0 -0
  21. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/.prefectignore +0 -0
  22. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/AGENTS.md +0 -0
  23. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/__init__.py +0 -0
  24. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/__main__.py +0 -0
  25. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/__init__.py +0 -0
  26. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/_launchers.py +0 -0
  27. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/bundles/__init__.py +0 -0
  28. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/bundles/execute.py +0 -0
  29. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/plugins/__init__.py +0 -0
  30. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/plugins/apply.py +0 -0
  31. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
  32. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/plugins/manager.py +0 -0
  33. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/plugins/spec.py +0 -0
  34. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/sla/__init__.py +0 -0
  35. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/sla/client.py +0 -0
  36. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_experimental/sla/objects.py +0 -0
  37. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_flow_run_suspension.py +0 -0
  38. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/__init__.py +0 -0
  39. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/_logging.py +0 -0
  40. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/_observation_delivery.py +0 -0
  41. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/__init__.py +0 -0
  42. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/ci_detection.py +0 -0
  43. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/client.py +0 -0
  44. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/device_id.py +0 -0
  45. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/emit.py +0 -0
  46. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/enabled.py +0 -0
  47. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/events.py +0 -0
  48. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/milestones.py +0 -0
  49. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/notice.py +0 -0
  50. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/analytics/service.py +0 -0
  51. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/ast_utils.py +0 -0
  52. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/attempt_control.py +0 -0
  53. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/buildx.py +0 -0
  54. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/__init__.py +0 -0
  55. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  56. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/backports.py +0 -0
  57. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/blocks.py +0 -0
  58. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  59. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
  60. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/migration.py +0 -0
  61. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/compatibility/starlette.py +0 -0
  62. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/__init__.py +0 -0
  63. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/api.py +0 -0
  64. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/calls.py +0 -0
  65. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  66. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  67. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/inspection.py +0 -0
  68. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/primitives.py +0 -0
  69. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/services.py +0 -0
  70. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/threads.py +0 -0
  71. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/concurrency/waiters.py +0 -0
  72. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/control_listener.py +0 -0
  73. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/deprecated.py +0 -0
  74. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/engine.py +0 -0
  75. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/git.py +0 -0
  76. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
  77. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/installation.py +0 -0
  78. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/integrations.py +0 -0
  79. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/launchers.py +0 -0
  80. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/lazy.py +0 -0
  81. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/metrics.py +0 -0
  82. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/observability.py +0 -0
  83. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/observers.py +0 -0
  84. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/__init__.py +0 -0
  85. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/apply.py +0 -0
  86. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/collections.py +0 -0
  87. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/diagnostics.py +0 -0
  88. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/manager.py +0 -0
  89. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/spec.py +0 -0
  90. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/plugins/startup.py +0 -0
  91. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/pydantic/__init__.py +0 -0
  92. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/pydantic/schemas.py +0 -0
  93. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  94. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/pydantic/validated_func.py +0 -0
  95. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/pytz.py +0 -0
  96. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/result_records.py +0 -0
  97. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/retries.py +0 -0
  98. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schema.py +0 -0
  99. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schemas/__init__.py +0 -0
  100. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schemas/_registry.py +0 -0
  101. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schemas/bases.py +0 -0
  102. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schemas/fields.py +0 -0
  103. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schemas/serializers.py +0 -0
  104. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/schemas/validators.py +0 -0
  105. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
  106. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/server_maintenance.py +0 -0
  107. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/states.py +0 -0
  108. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/testing.py +0 -0
  109. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/urls.py +0 -0
  110. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/uuid7.py +0 -0
  111. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/version_checking.py +0 -0
  112. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/versioning.py +0 -0
  113. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/waiters.py +0 -0
  114. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_internal/websockets.py +0 -0
  115. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/__init__.py +0 -0
  116. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/fetcher.py +0 -0
  117. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/generator.py +0 -0
  118. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/models.py +0 -0
  119. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/naming.py +0 -0
  120. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/renderer.py +0 -0
  121. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/schema_converter.py +0 -0
  122. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/templates/__init__.py +0 -0
  123. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
  124. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/types.py +0 -0
  125. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_sdk/unions.py +0 -0
  126. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_vendor/croniter/__init__.py +0 -0
  127. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/_vendor/croniter/croniter.py +0 -0
  128. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/agent.py +0 -0
  129. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/analytics/__init__.py +0 -0
  130. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/artifacts.py +0 -0
  131. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/assets/__init__.py +0 -0
  132. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/assets/core.py +0 -0
  133. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/assets/materialize.py +0 -0
  134. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/automations.py +0 -0
  135. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/AGENTS.md +0 -0
  136. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/__init__.py +0 -0
  137. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/abstract.py +0 -0
  138. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/core.py +0 -0
  139. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/fields.py +0 -0
  140. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/notifications.py +0 -0
  141. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/redis.py +0 -0
  142. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/system.py +0 -0
  143. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/blocks/webhook.py +0 -0
  144. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/__init__.py +0 -0
  145. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/_file_collector.py +0 -0
  146. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/_ignore_filter.py +0 -0
  147. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/_path_resolver.py +0 -0
  148. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/_zip_builder.py +0 -0
  149. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/_zip_extractor.py +0 -0
  150. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/bundles/execute.py +0 -0
  151. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/cache_policies.py +0 -0
  152. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/AGENTS.md +0 -0
  153. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/__init__.py +0 -0
  154. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/attribution.py +0 -0
  155. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/base.py +0 -0
  156. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/cloud.py +0 -0
  157. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/collections.py +0 -0
  158. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/constants.py +0 -0
  159. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/__init__.py +0 -0
  160. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  161. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  162. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  163. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_automations/client.py +0 -0
  164. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  165. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  166. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  167. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  168. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  169. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  170. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  171. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  172. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  173. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  174. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_events/__init__.py +0 -0
  175. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_events/client.py +0 -0
  176. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  177. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  178. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  179. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_flows/client.py +0 -0
  180. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  181. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_logs/client.py +0 -0
  182. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  183. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_variables/client.py +0 -0
  184. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  185. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  186. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/base.py +0 -0
  187. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/orchestration/routes.py +0 -0
  188. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/__init__.py +0 -0
  189. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/actions.py +0 -0
  190. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/events.py +0 -0
  191. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/filters.py +0 -0
  192. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/objects.py +0 -0
  193. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/responses.py +0 -0
  194. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/schedules.py +0 -0
  195. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/sorting.py +0 -0
  196. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/schemas/worker_channel.py +0 -0
  197. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/subscriptions.py +0 -0
  198. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/types/__init__.py +0 -0
  199. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  200. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/client/utilities.py +0 -0
  201. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/AGENTS.md +0 -0
  202. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/__init__.py +0 -0
  203. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/_asyncio.py +0 -0
  204. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/_events.py +0 -0
  205. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/_leases.py +0 -0
  206. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/_sync.py +0 -0
  207. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/asyncio.py +0 -0
  208. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/context.py +0 -0
  209. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/services.py +0 -0
  210. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/sync.py +0 -0
  211. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/__init__.py +0 -0
  212. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  213. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/_events.py +0 -0
  214. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/asyncio.py +0 -0
  215. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/context.py +0 -0
  216. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/services.py +0 -0
  217. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/concurrency/v1/sync.py +0 -0
  218. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/context.py +0 -0
  219. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/AGENTS.md +0 -0
  220. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/__init__.py +0 -0
  221. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/base.py +0 -0
  222. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/deployments.py +0 -0
  223. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/flow_runs.py +0 -0
  224. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/runner.py +0 -0
  225. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/schedules.py +0 -0
  226. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/steps/__init__.py +0 -0
  227. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/steps/core.py +0 -0
  228. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/steps/pull.py +0 -0
  229. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/deployments/steps/utility.py +0 -0
  230. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/docker/__init__.py +0 -0
  231. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/docker/_buildx.py +0 -0
  232. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/docker/docker_image.py +0 -0
  233. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/engine.py +0 -0
  234. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/AGENTS.md +0 -0
  235. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/clients.py +0 -0
  236. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/filters.py +0 -0
  237. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/related.py +0 -0
  238. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/schemas/__init__.py +0 -0
  239. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  240. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/schemas/events.py +0 -0
  241. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/schemas/labelling.py +0 -0
  242. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/subscribers.py +0 -0
  243. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/utilities.py +0 -0
  244. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/events/worker.py +0 -0
  245. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/exceptions.py +0 -0
  246. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/filesystems.py +0 -0
  247. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/flow_engine.py +0 -0
  248. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/__init__.py +0 -0
  249. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/base.py +0 -0
  250. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  251. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  252. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  253. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  254. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  255. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  256. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/input/__init__.py +0 -0
  257. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/input/actions.py +0 -0
  258. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/input/run_input.py +0 -0
  259. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/locking/__init__.py +0 -0
  260. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/locking/_filelock.py +0 -0
  261. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/locking/filesystem.py +0 -0
  262. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/locking/memory.py +0 -0
  263. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/locking/protocol.py +0 -0
  264. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/AGENTS.md +0 -0
  265. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/__init__.py +0 -0
  266. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/clients.py +0 -0
  267. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/configuration.py +0 -0
  268. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/filters.py +0 -0
  269. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/formatters.py +0 -0
  270. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/handlers.py +0 -0
  271. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/highlighters.py +0 -0
  272. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/loggers.py +0 -0
  273. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/logging/logging.yml +0 -0
  274. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/main.py +0 -0
  275. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/plugins.py +0 -0
  276. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/py.typed +0 -0
  277. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/results.py +0 -0
  278. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/AGENTS.md +0 -0
  279. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/__init__.py +0 -0
  280. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_cancel_finalizer.py +0 -0
  281. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_cancellation_manager.py +0 -0
  282. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_control_channel.py +0 -0
  283. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_deployment_registry.py +0 -0
  284. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_event_emitter.py +0 -0
  285. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_flow_resolver.py +0 -0
  286. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_flow_run_executor.py +0 -0
  287. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_hook_runner.py +0 -0
  288. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_limit_manager.py +0 -0
  289. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_process_manager.py +0 -0
  290. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_scheduled_run_poller.py +0 -0
  291. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_starter_bundle.py +0 -0
  292. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_starter_direct.py +0 -0
  293. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_starter_engine.py +0 -0
  294. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_state_proposer.py +0 -0
  295. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_uv_command.py +0 -0
  296. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_workspace_hook_runner.py +0 -0
  297. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_workspace_resolver.py +0 -0
  298. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_workspace_runtime.py +0 -0
  299. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
  300. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_workspace_starter.py +0 -0
  301. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/_workspace_supervisor.py +0 -0
  302. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/runner.py +0 -0
  303. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/server.py +0 -0
  304. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runner/storage.py +0 -0
  305. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runtime/__init__.py +0 -0
  306. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runtime/deployment.py +0 -0
  307. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runtime/flow_run.py +0 -0
  308. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/runtime/task_run.py +0 -0
  309. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/schedules.py +0 -0
  310. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/serializers.py +0 -0
  311. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/__init__.py +0 -0
  312. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/_ui_static.py +0 -0
  313. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/admin.py +0 -0
  314. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/artifacts.py +0 -0
  315. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/automations.py +0 -0
  316. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/background_workers.py +0 -0
  317. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/block_capabilities.py +0 -0
  318. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/block_documents.py +0 -0
  319. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/block_schemas.py +0 -0
  320. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/block_types.py +0 -0
  321. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/clients.py +0 -0
  322. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/collections.py +0 -0
  323. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  324. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/concurrency_limits.py +0 -0
  325. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  326. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/csrf_token.py +0 -0
  327. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/dependencies.py +0 -0
  328. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/deployments.py +0 -0
  329. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/events.py +0 -0
  330. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/flow_run_states.py +0 -0
  331. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/flow_runs.py +0 -0
  332. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/flows.py +0 -0
  333. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/logs.py +0 -0
  334. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/middleware.py +0 -0
  335. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/root.py +0 -0
  336. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/run_history.py +0 -0
  337. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/saved_searches.py +0 -0
  338. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/server.py +0 -0
  339. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  340. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/task_run_states.py +0 -0
  341. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/task_runs.py +0 -0
  342. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/task_workers.py +0 -0
  343. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/templates.py +0 -0
  344. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/ui/__init__.py +0 -0
  345. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/ui/flow_runs.py +0 -0
  346. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/ui/flows.py +0 -0
  347. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/ui/schemas.py +0 -0
  348. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/ui/task_runs.py +0 -0
  349. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/validation.py +0 -0
  350. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/variables.py +0 -0
  351. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/work_queues.py +0 -0
  352. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/server/api/workers.py +0 -0
  353. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/AGENTS.md +0 -0
  354. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/__init__.py +0 -0
  355. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/_types.py +0 -0
  356. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/base.py +0 -0
  357. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/constants.py +0 -0
  358. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/context.py +0 -0
  359. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/legacy.py +0 -0
  360. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/__init__.py +0 -0
  361. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/_defaults.py +0 -0
  362. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/api.py +0 -0
  363. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/cli.py +0 -0
  364. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/client.py +0 -0
  365. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/cloud.py +0 -0
  366. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/deployments.py +0 -0
  367. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/events.py +0 -0
  368. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/experiments.py +0 -0
  369. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/flows.py +0 -0
  370. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/internal.py +0 -0
  371. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/logging.py +0 -0
  372. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/plugins.py +0 -0
  373. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/results.py +0 -0
  374. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/root.py +0 -0
  375. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/runner.py +0 -0
  376. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/__init__.py +0 -0
  377. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/api.py +0 -0
  378. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/concurrency.py +0 -0
  379. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/database.py +0 -0
  380. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/deployments.py +0 -0
  381. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/docket.py +0 -0
  382. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/ephemeral.py +0 -0
  383. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/events.py +0 -0
  384. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  385. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/logs.py +0 -0
  386. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/root.py +0 -0
  387. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/services.py +0 -0
  388. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/tasks.py +0 -0
  389. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/ui.py +0 -0
  390. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/server/worker_channel.py +0 -0
  391. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/tasks.py +0 -0
  392. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/telemetry.py +0 -0
  393. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/testing.py +0 -0
  394. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/models/worker.py +0 -0
  395. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/profiles.py +0 -0
  396. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/profiles.toml +0 -0
  397. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/settings/sources.py +0 -0
  398. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/states.py +0 -0
  399. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/task_runners.py +0 -0
  400. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/task_runs.py +0 -0
  401. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/task_worker.py +0 -0
  402. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/telemetry/__init__.py +0 -0
  403. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/telemetry/run_telemetry.py +0 -0
  404. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/transactions.py +0 -0
  405. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/types/__init__.py +0 -0
  406. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/types/_concurrency.py +0 -0
  407. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/types/_datetime.py +0 -0
  408. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/types/entrypoint.py +0 -0
  409. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/types/names.py +0 -0
  410. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/AGENTS.md +0 -0
  411. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/__init__.py +0 -0
  412. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/annotations.py +0 -0
  413. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
  414. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/asyncutils/__init__.py +0 -0
  415. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/compat.py +0 -0
  416. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/context.py +0 -0
  417. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/dispatch.py +0 -0
  418. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/dockerutils.py +0 -0
  419. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/engine/AGENTS.md +0 -0
  420. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/engine/__init__.py +0 -0
  421. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
  422. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/filesystem/__init__.py +0 -0
  423. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/generics.py +0 -0
  424. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/hashing.py +0 -0
  425. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/importtools.py +0 -0
  426. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/math.py +0 -0
  427. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/names.py +0 -0
  428. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/processutils/AGENTS.md +0 -0
  429. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/processutils/__init__.py +0 -0
  430. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/pydantic.py +0 -0
  431. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/render_swagger.py +0 -0
  432. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
  433. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  434. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  435. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/schema_tools/validation.py +0 -0
  436. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/services.py +0 -0
  437. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/slugify.py +0 -0
  438. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/templating/AGENTS.md +0 -0
  439. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/templating/__init__.py +0 -0
  440. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/text.py +0 -0
  441. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/timeout.py +0 -0
  442. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/urls.py +0 -0
  443. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/utilities/visualization.py +0 -0
  444. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/variables.py +0 -0
  445. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/AGENTS.md +0 -0
  446. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/__init__.py +0 -0
  447. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_cleanup.py +0 -0
  448. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_cleanup_handlers.py +0 -0
  449. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_worker_channel/__init__.py +0 -0
  450. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
  451. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_worker_channel/_state.py +0 -0
  452. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_worker_channel/_sync.py +0 -0
  453. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/_worker_channel/_transport.py +0 -0
  454. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/base.py +0 -0
  455. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/block.py +0 -0
  456. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/cloud.py +0 -0
  457. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/process.py +0 -0
  458. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/src/prefect/workers/server.py +0 -0
  459. {prefect_client-3.8.9.dev5 → prefect_client-3.8.9.dev7}/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.9.dev5
3
+ Version: 3.8.9.dev7
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.8.9.dev7"
3
+ __build_date__ = "2026-10-20 08:19:07.991479+00:00"
4
+ __git_commit__ = "817bc93b6e828459e6853fa8b51ddba52515ad16"
5
+ __dirty__ = False
@@ -85,6 +85,14 @@ def process_v2_params(
85
85
  # still ensure 'position' is always set
86
86
  extra.setdefault("position", position)
87
87
 
88
+ # `*args` and `**kwargs` accept any number of values, including none
89
+ if param.kind is inspect.Parameter.VAR_POSITIONAL:
90
+ type_ = list[type_]
91
+ default_value = []
92
+ elif param.kind is inspect.Parameter.VAR_KEYWORD:
93
+ type_ = dict[str, type_]
94
+ default_value = {}
95
+
88
96
  field = pydantic.Field(
89
97
  default=... if default_value is param.empty else default_value,
90
98
  title=param.name,
@@ -42,6 +42,7 @@ from .actions import (
42
42
  PauseAutomation,
43
43
  ResumeAutomation,
44
44
  DeclareIncident,
45
+ UnknownAction,
45
46
  )
46
47
  from .clients import get_events_client, get_events_subscriber
47
48
  from .subscribers import FlowRunSubscriber
@@ -90,6 +91,7 @@ __all__ = [
90
91
  "PauseAutomation",
91
92
  "ResumeAutomation",
92
93
  "DeclareIncident",
94
+ "UnknownAction",
93
95
  "emit_event",
94
96
  "get_events_client",
95
97
  "get_events_subscriber",
@@ -1,9 +1,16 @@
1
1
  import abc
2
2
  from datetime import timedelta
3
- from typing import Any, Dict, Optional, Union
3
+ from typing import Annotated, Any, ClassVar, Dict, Optional, Union, get_args
4
4
  from uuid import UUID
5
5
 
6
- from pydantic import Field, model_validator
6
+ from pydantic import (
7
+ ConfigDict,
8
+ Discriminator,
9
+ Field,
10
+ Tag,
11
+ field_validator,
12
+ model_validator,
13
+ )
7
14
  from typing_extensions import Literal, Self, TypeAlias
8
15
 
9
16
  from prefect._internal.schemas.bases import PrefectBaseModel
@@ -314,3 +321,56 @@ ActionTypes: TypeAlias = Union[
314
321
  # Prefect Cloud only
315
322
  DeclareIncident,
316
323
  ]
324
+
325
+ _KNOWN_ACTION_TYPES: frozenset[str] = frozenset(
326
+ action.model_fields["type"].default for action in get_args(ActionTypes)
327
+ )
328
+
329
+
330
+ class UnknownAction(Action):
331
+ """An action whose type this version of Prefect does not recognize.
332
+
333
+ Prefect Cloud can add action types before a client release knows about
334
+ them. Reading an automation that uses one of these types returns this
335
+ model instead of failing. The model keeps every field of the action, so
336
+ updating the automation sends the action back unchanged.
337
+ """
338
+
339
+ model_config: ClassVar[ConfigDict] = ConfigDict(extra="allow")
340
+
341
+ type: str = Field(
342
+ json_schema_extra={"not": {"enum": sorted(_KNOWN_ACTION_TYPES)}},
343
+ )
344
+
345
+ @field_validator("type")
346
+ @classmethod
347
+ def _type_is_not_known(cls, value: str) -> str:
348
+ if value in _KNOWN_ACTION_TYPES:
349
+ raise ValueError(
350
+ f"{value!r} is a known action type and cannot be an UnknownAction"
351
+ )
352
+ return value
353
+
354
+
355
+ def _action_discriminator(value: Any) -> str:
356
+ """Sends an action with an unrecognized `type` to `UnknownAction` and every
357
+ other action, including one with no `type`, to `ActionTypes`."""
358
+ if isinstance(value, UnknownAction):
359
+ return "unknown"
360
+ action_type = (
361
+ value.get("type") if isinstance(value, dict) else getattr(value, "type", None)
362
+ )
363
+ if isinstance(action_type, str) and action_type not in _KNOWN_ACTION_TYPES:
364
+ return "unknown"
365
+ return "known"
366
+
367
+
368
+ ActionTypesOrUnknown: TypeAlias = Annotated[
369
+ Union[
370
+ Annotated[ActionTypes, Tag("known")],
371
+ Annotated[UnknownAction, Tag("unknown")],
372
+ ],
373
+ Discriminator(_action_discriminator),
374
+ ]
375
+ """The action types an automation read from the API may contain: any of
376
+ `ActionTypes`, or an `UnknownAction` for a type this version does not know"""
@@ -22,17 +22,21 @@ from pydantic import (
22
22
  Field,
23
23
  PrivateAttr,
24
24
  Tag,
25
+ TypeAdapter,
26
+ ValidationError,
25
27
  field_validator,
26
28
  model_validator,
27
29
  )
28
30
  from typing_extensions import Self, TypeAlias
29
31
 
30
32
  from prefect._internal.schemas.bases import PrefectBaseModel
31
- from prefect.events.actions import ActionTypes, RunDeployment
33
+ from prefect.events.actions import ActionTypes, ActionTypesOrUnknown, RunDeployment
32
34
  from prefect.utilities.collections import AutoEnum
33
35
 
34
36
  from .events import ResourceSpecification
35
37
 
38
+ _timedelta_adapter: TypeAdapter[timedelta] = TypeAdapter(timedelta)
39
+
36
40
  # Dict form accepted by ResourceSpecification via Pydantic coercion
37
41
  ResourceSpecificationDict: TypeAlias = Dict[str, Union[str, List[str]]]
38
42
 
@@ -96,7 +100,7 @@ class Trigger(PrefectBaseModel, abc.ABC, extra="ignore"): # type: ignore[call-a
96
100
  description=getattr(self, "description", ""),
97
101
  enabled=getattr(self, "enabled", True),
98
102
  trigger=trigger,
99
- actions=self.actions(),
103
+ actions=list(self.actions()),
100
104
  owner_resource=self.owner_resource(),
101
105
  )
102
106
 
@@ -220,8 +224,15 @@ class EventTrigger(ResourceTrigger):
220
224
  posture: Optional[Posture] = data.get("posture")
221
225
  within: Optional[timedelta] = data.get("within")
222
226
 
223
- if isinstance(within, (int, float)):
224
- within = timedelta(seconds=within)
227
+ if within is not None and not isinstance(within, timedelta):
228
+ # Parse the raw value the same way the field would, so that every
229
+ # form pydantic accepts for a timedelta reaches the comparisons
230
+ # below as a timedelta.
231
+ try:
232
+ within = _timedelta_adapter.validate_python(within)
233
+ except ValidationError:
234
+ # The field validation reports the unparsable value.
235
+ return data
225
236
 
226
237
  if posture == Posture.Proactive:
227
238
  if not within or within == timedelta(0):
@@ -486,17 +497,17 @@ class AutomationCore(PrefectBaseModel, extra="ignore"): # type: ignore[call-arg
486
497
  ),
487
498
  )
488
499
 
489
- actions: List[ActionTypes] = Field(
500
+ actions: List[ActionTypesOrUnknown] = Field(
490
501
  default=...,
491
502
  description="The actions to perform when this Automation triggers",
492
503
  )
493
504
 
494
- actions_on_trigger: List[ActionTypes] = Field(
505
+ actions_on_trigger: List[ActionTypesOrUnknown] = Field(
495
506
  default_factory=list,
496
507
  description="The actions to perform when an Automation goes into a triggered state",
497
508
  )
498
509
 
499
- actions_on_resolve: List[ActionTypes] = Field(
510
+ actions_on_resolve: List[ActionTypesOrUnknown] = Field(
500
511
  default_factory=list,
501
512
  description="The actions to perform when an Automation goes into a resolving state",
502
513
  )
@@ -273,7 +273,7 @@ async def apause_flow_run(
273
273
  if wait_for_input:
274
274
  # The flow run wanted input, so we need to load it and return it
275
275
  # to the user.
276
- await wait_for_input.aload(run_input_keyset)
276
+ return await wait_for_input.aload(run_input_keyset)
277
277
 
278
278
  return
279
279
 
@@ -578,11 +578,11 @@ class Flow(Generic[P, R]):
578
578
  else self.cache_result_in_memory
579
579
  ),
580
580
  log_prints=log_prints if log_prints is not NotSet else self.log_prints,
581
- on_completion=on_completion or self.on_completion_hooks,
582
- on_failure=on_failure or self.on_failure_hooks,
583
- on_cancellation=on_cancellation or self.on_cancellation_hooks,
584
- on_crashed=on_crashed or self.on_crashed_hooks,
585
- on_running=on_running or self.on_running_hooks,
581
+ on_completion=on_completion or copy(self.on_completion_hooks),
582
+ on_failure=on_failure or copy(self.on_failure_hooks),
583
+ on_cancellation=on_cancellation or copy(self.on_cancellation_hooks),
584
+ on_crashed=on_crashed or copy(self.on_crashed_hooks),
585
+ on_running=on_running or copy(self.on_running_hooks),
586
586
  )
587
587
  new_flow._storage = self._storage
588
588
  new_flow._entrypoint = self._entrypoint
@@ -584,7 +584,7 @@ class PrefectFutureList(list[PrefectFuture[R]], Iterator[PrefectFuture[R]]):
584
584
  timeout_message = (
585
585
  f"Timed out waiting for all futures to complete within {timeout} seconds"
586
586
  )
587
- deadline = time.monotonic() + timeout if timeout is not None else None
587
+ deadline = time.monotonic() + timeout if timeout else None
588
588
 
589
589
  try:
590
590
  # `as_completed` de-duplicates internally; each unique future is
@@ -638,7 +638,7 @@ def as_completed(
638
638
  pending = unique_futures
639
639
  deadline: float | None = None
640
640
  try:
641
- with timeout_context(timeout, timeout_exc_type=_WaitTimeoutError):
641
+ with timeout_context(timeout or None, timeout_exc_type=_WaitTimeoutError):
642
642
  done = {f for f in unique_futures if f._final_state} # type: ignore[privateUsage]
643
643
  pending = unique_futures - done
644
644
  yield from done
@@ -16,6 +16,7 @@ from typing import (
16
16
  TYPE_CHECKING,
17
17
  Any,
18
18
  AsyncGenerator,
19
+ Awaitable,
19
20
  Callable,
20
21
  Coroutine,
21
22
  Generator,
@@ -459,12 +460,14 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
459
460
  message=f"Task run encountered unexpected exception: {repr(exc_or_state)}",
460
461
  )
461
462
  )
462
- if inspect.iscoroutinefunction(retry_condition):
463
- should_retry = run_coro_as_sync(
464
- retry_condition(self.task, self.task_run, state)
465
- )
466
- elif inspect.isfunction(retry_condition):
463
+ if callable(retry_condition):
467
464
  should_retry = retry_condition(self.task, self.task_run, state)
465
+ if inspect.isawaitable(should_retry):
466
+
467
+ async def await_retry_condition(result: Awaitable[bool]) -> bool:
468
+ return await result
469
+
470
+ should_retry = run_coro_as_sync(await_retry_condition(should_retry))
468
471
  else:
469
472
  should_retry = not retry_condition
470
473
  return should_retry
@@ -1077,10 +1080,10 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1077
1080
  message=f"Task run encountered unexpected exception: {repr(exc_or_state)}",
1078
1081
  )
1079
1082
  )
1080
- if inspect.iscoroutinefunction(retry_condition):
1081
- should_retry = await retry_condition(self.task, self.task_run, state)
1082
- elif inspect.isfunction(retry_condition):
1083
+ if callable(retry_condition):
1083
1084
  should_retry = retry_condition(self.task, self.task_run, state)
1085
+ if inspect.isawaitable(should_retry):
1086
+ should_retry = await should_retry
1084
1087
  else:
1085
1088
  should_retry = not retry_condition
1086
1089
  return should_retry
@@ -791,7 +791,7 @@ class Task(Generic[P, R]):
791
791
  fn=self.fn,
792
792
  name=name or self.name,
793
793
  description=description or self.description,
794
- tags=tags or copy(self.tags),
794
+ tags=tags if tags is not None else copy(self.tags),
795
795
  version=self.version,
796
796
  cache_policy=cache_policy
797
797
  if cache_policy is not NotSet
@@ -842,9 +842,9 @@ class Task(Generic[P, R]):
842
842
  refresh_cache=(
843
843
  refresh_cache if refresh_cache is not NotSet else self.refresh_cache
844
844
  ),
845
- on_completion=on_completion or self.on_completion_hooks,
846
- on_failure=on_failure or self.on_failure_hooks,
847
- on_running=on_running or self.on_running_hooks,
845
+ on_completion=on_completion or copy(self.on_completion_hooks),
846
+ on_failure=on_failure or copy(self.on_failure_hooks),
847
+ on_running=on_running or copy(self.on_running_hooks),
848
848
  on_rollback=copy(self.on_rollback_hooks),
849
849
  on_commit=copy(self.on_commit_hooks),
850
850
  retry_condition_fn=retry_condition_fn or self.retry_condition_fn,
@@ -2258,9 +2258,10 @@ class MaterializingTask(Task[P, R]):
2258
2258
  continue
2259
2259
 
2260
2260
  attr_name = param_to_attr.get(param_name, param_name)
2261
- init_kwargs[param_name] = task_kwargs.get(
2262
- param_name, getattr(self, attr_name)
2263
- )
2261
+ value = getattr(self, attr_name)
2262
+ if attr_name.endswith("_hooks"):
2263
+ value = copy(value)
2264
+ init_kwargs[param_name] = task_kwargs.get(param_name, value)
2264
2265
 
2265
2266
  return MaterializingTask(
2266
2267
  fn=self.fn,
@@ -17,6 +17,7 @@ Inspects user-written flow/task functions to produce:
17
17
  ## Pitfalls
18
18
 
19
19
  - **`parameters_to_args_kwargs` adjusts the positional/keyword split based on the wrapper's signature, not the wrapped function's.** For `@functools.wraps`-decorated callables, it inspects the *wrapper* (via `follow_wrapped=False`) to count how many positional slots are actually available and routes excess parameters to `**kwargs`. This means `args` and `kwargs` from this function are shaped for the *wrapper* call, not the inner function — callers must not assume all POSITIONAL_OR_KEYWORD parameters end up in `args`.
20
- - **`parameters_to_args_kwargs` skips the positional-to-keyword rewrite entirely when the function signature contains `*args`.** Inserting KEYWORD_ONLY parameters before a VAR_POSITIONAL parameter is invalid in Python, so the original signature is used as-is in that case.
20
+ - **`parameters_to_args_kwargs` skips the positional-to-keyword rewrite entirely when the function signature contains `*args`.** Inserting KEYWORD_ONLY parameters before a VAR_POSITIONAL parameter is invalid in Python, so the original signature is used as-is in that case. When `*args` values are given but earlier defaulted positional parameters are omitted, those parameters are filled with their defaults so the values bind positionally (an empty `*args` is dropped instead). Any non-string, non-mapping iterable counts as `*args` values and is converted to a tuple; other values (`None`, scalars, strings, mappings) are passed through untouched so validation rejects them.
21
21
  - **Passing the same key in both an explicit parameter and a `**kwargs` dict raises `TypeError`.** `parameters_to_args_kwargs` detects when a VAR_KEYWORD (`**kwargs`) dict contains a key that also appears as an explicit parameter and raises rather than silently letting the variadic entry win. Exception: POSITIONAL_ONLY parameters are exempt because `fn(1, **{'a': 2})` is legal when `a` is positional-only.
22
22
  - **`generate_parameter_schema` silently downgrades unsupported parameter types to `Any`.** When a parameter's type raises `ValueError`, `TypeError`, or `PydanticInvalidForJsonSchema` during JSON schema generation (e.g., `Callable`, custom types Pydantic can't serialize), the type is replaced with `Any` in the output schema without warning. If a flow parameter shows up as `Any` in the schema, the declared type is not JSON-schema-compatible.
23
+ - **Variadic parameters are optional collections in the schema.** `*args: T` is an `array` of `T` defaulting to `[]` and `**kwargs: T` an `object` with `T` values defaulting to `{}`. The explicit defaults keep schema preprocessing from making them nullable, since `None` can't be unpacked. `process_v1_params` and `process_v2_params` must stay in sync.
@@ -7,7 +7,7 @@ import importlib.util
7
7
  import inspect
8
8
  import warnings
9
9
  from collections import OrderedDict
10
- from collections.abc import Iterable
10
+ from collections.abc import Iterable, Mapping
11
11
  from functools import partial
12
12
  from logging import Logger
13
13
  from pathlib import Path
@@ -83,12 +83,21 @@ def get_call_parameters(
83
83
  # a FieldInfo object when the user writes `param: T = Field(default=..., ...)`.
84
84
  # Unwrap those to their actual default values.
85
85
  for key, value in arguments.items():
86
- if isinstance(value, pydantic.fields.FieldInfo):
87
- arguments[key] = value.default
86
+ arguments[key] = _resolve_field_info_default(value)
88
87
 
89
88
  return arguments
90
89
 
91
90
 
91
+ def _resolve_field_info_default(value: Any) -> Any:
92
+ """
93
+ Resolve a `pydantic.Field(...)` used as a signature default to its actual
94
+ default value. Other values are returned unchanged.
95
+ """
96
+ if isinstance(value, pydantic.fields.FieldInfo):
97
+ return value.default
98
+ return value
99
+
100
+
92
101
  def get_parameter_defaults(
93
102
  fn: Callable[..., Any],
94
103
  ) -> dict[str, Any]:
@@ -101,7 +110,7 @@ def get_parameter_defaults(
101
110
 
102
111
  for name, param in signature.parameters.items():
103
112
  if param.default is not signature.empty:
104
- parameter_defaults[name] = param.default
113
+ parameter_defaults[name] = _resolve_field_info_default(param.default)
105
114
 
106
115
  return parameter_defaults
107
116
 
@@ -289,12 +298,51 @@ def parameters_to_args_kwargs(
289
298
  # Skip the rewrite entirely when the exposed signature contains a
290
299
  # VAR_POSITIONAL (*args) parameter because inserting KEYWORD_ONLY params
291
300
  # before *args would produce an invalid parameter ordering.
292
- has_var_positional = any(
293
- p.kind == inspect.Parameter.VAR_POSITIONAL for p in sig.parameters.values()
301
+ var_positional = next(
302
+ (
303
+ p
304
+ for p in sig.parameters.values()
305
+ if p.kind == inspect.Parameter.VAR_POSITIONAL
306
+ ),
307
+ None,
294
308
  )
295
309
 
296
- if has_var_positional:
310
+ if var_positional is not None:
297
311
  modified_sig = sig
312
+ # Values for `*args` can only be passed positionally, so every positional
313
+ # parameter before it must be bound too, otherwise `*args` is passed as a
314
+ # keyword. Drop an empty `*args` and fill omitted parameters with their
315
+ # defaults otherwise. Other values, such as `None`, strings, or mappings,
316
+ # are left for validation to reject.
317
+ var_positional_value = parameters.get(var_positional.name)
318
+ if isiterable(var_positional_value) and not isinstance(
319
+ var_positional_value, Mapping
320
+ ):
321
+ var_positional_values = tuple(cast(Iterable[Any], var_positional_value))
322
+ if not var_positional_values:
323
+ parameters = {
324
+ k: v for k, v in parameters.items() if k != var_positional.name
325
+ }
326
+ else:
327
+ parameters = (
328
+ {
329
+ p.name: (
330
+ p.default.get_default(call_default_factory=True)
331
+ if isinstance(p.default, pydantic.fields.FieldInfo)
332
+ else p.default
333
+ )
334
+ for p in sig.parameters.values()
335
+ if p.kind
336
+ in (
337
+ inspect.Parameter.POSITIONAL_ONLY,
338
+ inspect.Parameter.POSITIONAL_OR_KEYWORD,
339
+ )
340
+ and p.default is not p.empty
341
+ and p.name not in parameters
342
+ }
343
+ | parameters
344
+ | {var_positional.name: var_positional_values}
345
+ )
298
346
  elif hasattr(fn, "__wrapped__") or (
299
347
  isinstance(fn, partial) and hasattr(fn.func, "__wrapped__")
300
348
  ):
@@ -443,11 +491,20 @@ def process_v1_params(
443
491
 
444
492
  type_ = Any if param.annotation is inspect.Parameter.empty else param.annotation
445
493
 
494
+ default = ... if param.default is param.empty else param.default
495
+ # `*args` and `**kwargs` accept any number of values, including none
496
+ if param.kind is inspect.Parameter.VAR_POSITIONAL:
497
+ type_ = list[type_]
498
+ default = []
499
+ elif param.kind is inspect.Parameter.VAR_KEYWORD:
500
+ type_ = dict[str, type_]
501
+ default = {}
502
+
446
503
  with warnings.catch_warnings():
447
504
  # Note: pydantic.v1 doesn't have the warnings module, so we can't suppress them
448
505
  warnings.filterwarnings("ignore", category=DeprecationWarning)
449
506
  field: Any = pydantic_v1.Field(
450
- default=... if param.default is param.empty else param.default,
507
+ default=default,
451
508
  title=param.name,
452
509
  description=docstrings.get(param.name, None),
453
510
  alias=aliases.get(name),
@@ -604,6 +661,23 @@ def raise_for_reserved_arguments(
604
661
  )
605
662
 
606
663
 
664
+ def _evaluate_annotation(arg: ast.arg, namespace: dict[str, Any]) -> Any:
665
+ """
666
+ Evaluate the annotation of a function argument parsed from source code.
667
+
668
+ Returns `inspect.Parameter.empty`, equivalent to no annotation, if the argument
669
+ is not annotated or the annotation can't be evaluated.
670
+ """
671
+ if arg.annotation is None:
672
+ return inspect.Parameter.empty
673
+ try:
674
+ ann_code = compile(ast.Expression(arg.annotation), "<string>", "eval")
675
+ return eval(ann_code, namespace)
676
+ except Exception as e:
677
+ logger.debug("Failed to evaluate annotation for %s: %s", arg.arg, e)
678
+ return inspect.Parameter.empty
679
+
680
+
607
681
  def _generate_signature_from_source(
608
682
  source_code: str, func_name: str, filepath: Optional[str] = None
609
683
  ) -> inspect.Signature:
@@ -647,16 +721,7 @@ def _generate_signature_from_source(
647
721
  # Handle annotations for positional only args e.g. def func(a, /, b, c)
648
722
  for arg in func_def.args.posonlyargs:
649
723
  name = arg.arg
650
- annotation = arg.annotation
651
- if annotation is not None:
652
- try:
653
- ann_code = compile(ast.Expression(annotation), "<string>", "eval")
654
- annotation = eval(ann_code, namespace)
655
- except Exception as e:
656
- logger.debug("Failed to evaluate annotation for %s: %s", name, e)
657
- annotation = inspect.Parameter.empty
658
- else:
659
- annotation = inspect.Parameter.empty
724
+ annotation = _evaluate_annotation(arg, namespace)
660
725
 
661
726
  param = inspect.Parameter(
662
727
  name, inspect.Parameter.POSITIONAL_ONLY, annotation=annotation
@@ -666,20 +731,7 @@ def _generate_signature_from_source(
666
731
  # Determine the annotations for args e.g. def func(a: int, b: str, c: float)
667
732
  for arg in func_def.args.args:
668
733
  name = arg.arg
669
- annotation = arg.annotation
670
- if annotation is not None:
671
- try:
672
- # Compile and evaluate the annotation
673
- ann_code = compile(ast.Expression(annotation), "<string>", "eval")
674
- annotation = eval(ann_code, namespace)
675
- except Exception as e:
676
- # Don't raise an error if the annotation evaluation fails. Set the
677
- # annotation to `inspect.Parameter.empty` instead which is equivalent to
678
- # not having an annotation.
679
- logger.debug("Failed to evaluate annotation for %s: %s", name, e)
680
- annotation = inspect.Parameter.empty
681
- else:
682
- annotation = inspect.Parameter.empty
734
+ annotation = _evaluate_annotation(arg, namespace)
683
735
 
684
736
  param = inspect.Parameter(
685
737
  name, inspect.Parameter.POSITIONAL_OR_KEYWORD, annotation=annotation
@@ -705,16 +757,7 @@ def _generate_signature_from_source(
705
757
  # Handle annotations for keyword only args e.g. def func(*, a: int, b: str)
706
758
  for kwarg in func_def.args.kwonlyargs:
707
759
  name = kwarg.arg
708
- annotation = kwarg.annotation
709
- if annotation is not None:
710
- try:
711
- ann_code = compile(ast.Expression(annotation), "<string>", "eval")
712
- annotation = eval(ann_code, namespace)
713
- except Exception as e:
714
- logger.debug("Failed to evaluate annotation for %s: %s", name, e)
715
- annotation = inspect.Parameter.empty
716
- else:
717
- annotation = inspect.Parameter.empty
760
+ annotation = _evaluate_annotation(kwarg, namespace)
718
761
 
719
762
  param = inspect.Parameter(
720
763
  name, inspect.Parameter.KEYWORD_ONLY, annotation=annotation
@@ -738,15 +781,21 @@ def _generate_signature_from_source(
738
781
  parameters[parameters.index(param)] = param.replace(default=default)
739
782
 
740
783
  # Handle annotations for varargs and kwargs e.g. def func(*args: int, **kwargs: str)
741
- if func_def.args.vararg:
784
+ if vararg := func_def.args.vararg:
742
785
  parameters.append(
743
786
  inspect.Parameter(
744
- func_def.args.vararg.arg, inspect.Parameter.VAR_POSITIONAL
787
+ vararg.arg,
788
+ inspect.Parameter.VAR_POSITIONAL,
789
+ annotation=_evaluate_annotation(vararg, namespace),
745
790
  )
746
791
  )
747
- if func_def.args.kwarg:
792
+ if varkw := func_def.args.kwarg:
748
793
  parameters.append(
749
- inspect.Parameter(func_def.args.kwarg.arg, inspect.Parameter.VAR_KEYWORD)
794
+ inspect.Parameter(
795
+ varkw.arg,
796
+ inspect.Parameter.VAR_KEYWORD,
797
+ annotation=_evaluate_annotation(varkw, namespace),
798
+ )
750
799
  )
751
800
 
752
801
  # Handle return annotation e.g. def func() -> int
@@ -208,7 +208,7 @@ def extract_instances(
208
208
 
209
209
  if len(types_collection) == 1:
210
210
  [type_] = types_collection
211
- return ret[type_]
211
+ return ret.get(type_, [])
212
212
 
213
213
  return ret
214
214
 
@@ -1,5 +0,0 @@
1
- # Generated by versioningit
2
- __version__ = "3.8.9.dev5"
3
- __build_date__ = "2026-10-17 08:16:48.982485+00:00"
4
- __git_commit__ = "e29ee8a50c54aa3b41c1566827f6223997e7153c"
5
- __dirty__ = False