prefect-client 3.4.5.dev5__tar.gz → 3.4.6.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/PKG-INFO +2 -2
  2. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/pyproject.toml +1 -1
  3. prefect_client-3.4.6.dev2/src/prefect/_build_info.py +5 -0
  4. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/assets/core.py +5 -1
  5. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/context.py +56 -36
  6. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/clients.py +2 -2
  7. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/profiles.py +41 -30
  8. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/task_engine.py +56 -26
  9. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/tasks.py +27 -28
  10. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/types/_datetime.py +2 -2
  11. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/callables.py +13 -11
  12. prefect_client-3.4.5.dev5/src/prefect/_build_info.py +0 -5
  13. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/.gitignore +0 -0
  14. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/LICENSE +0 -0
  15. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/README.md +0 -0
  16. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/.prefectignore +0 -0
  17. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/__init__.py +0 -0
  18. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/__main__.py +0 -0
  19. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/__init__.py +0 -0
  20. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/bundles/__init__.py +0 -0
  21. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/bundles/execute.py +0 -0
  22. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/lineage.py +0 -0
  23. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/sla/__init__.py +0 -0
  24. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/sla/client.py +0 -0
  25. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_experimental/sla/objects.py +0 -0
  26. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/__init__.py +0 -0
  27. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/_logging.py +0 -0
  28. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/compatibility/__init__.py +0 -0
  29. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  30. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/compatibility/blocks.py +0 -0
  31. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  32. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/compatibility/migration.py +0 -0
  33. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/__init__.py +0 -0
  34. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/api.py +0 -0
  35. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/calls.py +0 -0
  36. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  37. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  38. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/inspection.py +0 -0
  39. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/primitives.py +0 -0
  40. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/services.py +0 -0
  41. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/threads.py +0 -0
  42. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/concurrency/waiters.py +0 -0
  43. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/integrations.py +0 -0
  44. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/pydantic/__init__.py +0 -0
  45. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/pydantic/schemas.py +0 -0
  46. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  47. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  48. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  49. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/pytz.py +0 -0
  50. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/retries.py +0 -0
  51. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/schemas/__init__.py +0 -0
  52. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/schemas/bases.py +0 -0
  53. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/schemas/fields.py +0 -0
  54. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/schemas/serializers.py +0 -0
  55. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/schemas/validators.py +0 -0
  56. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_internal/uuid7.py +0 -0
  57. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_result_records.py +0 -0
  58. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_vendor/croniter/__init__.py +0 -0
  59. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_vendor/croniter/croniter.py +0 -0
  60. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_versioning.py +0 -0
  61. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/_waiters.py +0 -0
  62. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/agent.py +0 -0
  63. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/artifacts.py +0 -0
  64. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/assets/__init__.py +0 -0
  65. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/assets/materialize.py +0 -0
  66. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/automations.py +0 -0
  67. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/__init__.py +0 -0
  68. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/abstract.py +0 -0
  69. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/core.py +0 -0
  70. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/fields.py +0 -0
  71. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/notifications.py +0 -0
  72. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/redis.py +0 -0
  73. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/system.py +0 -0
  74. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/blocks/webhook.py +0 -0
  75. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/cache_policies.py +0 -0
  76. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/__init__.py +0 -0
  77. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/base.py +0 -0
  78. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/cloud.py +0 -0
  79. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/collections.py +0 -0
  80. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/constants.py +0 -0
  81. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/__init__.py +0 -0
  82. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  83. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  84. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  85. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_automations/client.py +0 -0
  86. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  87. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  88. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  89. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  90. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  91. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  92. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  93. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  94. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  95. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  96. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  97. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  98. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  99. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_flows/client.py +0 -0
  100. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  101. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_logs/client.py +0 -0
  102. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  103. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_variables/client.py +0 -0
  104. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  105. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  106. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/base.py +0 -0
  107. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/orchestration/routes.py +0 -0
  108. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/__init__.py +0 -0
  109. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/actions.py +0 -0
  110. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/filters.py +0 -0
  111. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/objects.py +0 -0
  112. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/responses.py +0 -0
  113. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/schedules.py +0 -0
  114. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/schemas/sorting.py +0 -0
  115. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/subscriptions.py +0 -0
  116. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/types/__init__.py +0 -0
  117. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  118. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/client/utilities.py +0 -0
  119. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/__init__.py +0 -0
  120. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/_asyncio.py +0 -0
  121. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/_events.py +0 -0
  122. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/asyncio.py +0 -0
  123. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/context.py +0 -0
  124. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/services.py +0 -0
  125. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/sync.py +0 -0
  126. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/__init__.py +0 -0
  127. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  128. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/_events.py +0 -0
  129. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/asyncio.py +0 -0
  130. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/context.py +0 -0
  131. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/services.py +0 -0
  132. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/concurrency/v1/sync.py +0 -0
  133. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/__init__.py +0 -0
  134. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/base.py +0 -0
  135. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/deployments.py +0 -0
  136. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/flow_runs.py +0 -0
  137. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/runner.py +0 -0
  138. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/schedules.py +0 -0
  139. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/steps/__init__.py +0 -0
  140. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/steps/core.py +0 -0
  141. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/steps/pull.py +0 -0
  142. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/deployments/steps/utility.py +0 -0
  143. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/docker/__init__.py +0 -0
  144. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/docker/docker_image.py +0 -0
  145. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/engine.py +0 -0
  146. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/__init__.py +0 -0
  147. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/actions.py +0 -0
  148. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/cli/__init__.py +0 -0
  149. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/cli/automations.py +0 -0
  150. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/filters.py +0 -0
  151. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/related.py +0 -0
  152. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/schemas/__init__.py +0 -0
  153. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/schemas/automations.py +0 -0
  154. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  155. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/schemas/events.py +0 -0
  156. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/schemas/labelling.py +0 -0
  157. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/utilities.py +0 -0
  158. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/events/worker.py +0 -0
  159. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/exceptions.py +0 -0
  160. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/filesystems.py +0 -0
  161. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/flow_engine.py +0 -0
  162. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/flow_runs.py +0 -0
  163. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/flows.py +0 -0
  164. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/futures.py +0 -0
  165. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/__init__.py +0 -0
  166. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/base.py +0 -0
  167. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  168. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  169. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  170. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  171. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  172. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  173. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/input/__init__.py +0 -0
  174. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/input/actions.py +0 -0
  175. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/input/run_input.py +0 -0
  176. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/locking/__init__.py +0 -0
  177. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/locking/filesystem.py +0 -0
  178. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/locking/memory.py +0 -0
  179. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/locking/protocol.py +0 -0
  180. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/__init__.py +0 -0
  181. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/configuration.py +0 -0
  182. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/filters.py +0 -0
  183. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/formatters.py +0 -0
  184. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/handlers.py +0 -0
  185. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/highlighters.py +0 -0
  186. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/loggers.py +0 -0
  187. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/logging/logging.yml +0 -0
  188. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/main.py +0 -0
  189. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/plugins.py +0 -0
  190. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/py.typed +0 -0
  191. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/results.py +0 -0
  192. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/__init__.py +0 -0
  193. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/_observers.py +0 -0
  194. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/runner.py +0 -0
  195. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/server.py +0 -0
  196. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/storage.py +0 -0
  197. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/submit.py +0 -0
  198. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runner/utils.py +0 -0
  199. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runtime/__init__.py +0 -0
  200. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runtime/deployment.py +0 -0
  201. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runtime/flow_run.py +0 -0
  202. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/runtime/task_run.py +0 -0
  203. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/schedules.py +0 -0
  204. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/serializers.py +0 -0
  205. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/__init__.py +0 -0
  206. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/admin.py +0 -0
  207. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/artifacts.py +0 -0
  208. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/automations.py +0 -0
  209. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/block_capabilities.py +0 -0
  210. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/block_documents.py +0 -0
  211. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/block_schemas.py +0 -0
  212. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/block_types.py +0 -0
  213. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/clients.py +0 -0
  214. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/collections.py +0 -0
  215. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  216. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/concurrency_limits.py +0 -0
  217. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  218. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/csrf_token.py +0 -0
  219. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/dependencies.py +0 -0
  220. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/deployments.py +0 -0
  221. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/events.py +0 -0
  222. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/flow_run_states.py +0 -0
  223. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/flow_runs.py +0 -0
  224. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/flows.py +0 -0
  225. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/logs.py +0 -0
  226. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/middleware.py +0 -0
  227. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/root.py +0 -0
  228. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/run_history.py +0 -0
  229. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/saved_searches.py +0 -0
  230. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/server.py +0 -0
  231. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  232. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/task_run_states.py +0 -0
  233. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/task_runs.py +0 -0
  234. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/task_workers.py +0 -0
  235. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/templates.py +0 -0
  236. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/ui/__init__.py +0 -0
  237. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/ui/flow_runs.py +0 -0
  238. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/ui/flows.py +0 -0
  239. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/ui/schemas.py +0 -0
  240. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/ui/task_runs.py +0 -0
  241. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/validation.py +0 -0
  242. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/variables.py +0 -0
  243. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/work_queues.py +0 -0
  244. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/server/api/workers.py +0 -0
  245. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/__init__.py +0 -0
  246. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/base.py +0 -0
  247. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/constants.py +0 -0
  248. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/context.py +0 -0
  249. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/legacy.py +0 -0
  250. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/__init__.py +0 -0
  251. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/api.py +0 -0
  252. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/cli.py +0 -0
  253. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/client.py +0 -0
  254. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/cloud.py +0 -0
  255. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/deployments.py +0 -0
  256. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/experiments.py +0 -0
  257. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/flows.py +0 -0
  258. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/internal.py +0 -0
  259. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/logging.py +0 -0
  260. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/results.py +0 -0
  261. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/root.py +0 -0
  262. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/runner.py +0 -0
  263. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/__init__.py +0 -0
  264. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/api.py +0 -0
  265. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/database.py +0 -0
  266. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/deployments.py +0 -0
  267. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/ephemeral.py +0 -0
  268. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/events.py +0 -0
  269. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  270. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/root.py +0 -0
  271. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/services.py +0 -0
  272. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/tasks.py +0 -0
  273. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/server/ui.py +0 -0
  274. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/tasks.py +0 -0
  275. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/testing.py +0 -0
  276. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/models/worker.py +0 -0
  277. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/profiles.toml +0 -0
  278. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/settings/sources.py +0 -0
  279. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/states.py +0 -0
  280. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/task_runners.py +0 -0
  281. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/task_runs.py +0 -0
  282. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/task_worker.py +0 -0
  283. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/__init__.py +0 -0
  284. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/bootstrap.py +0 -0
  285. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/instrumentation.py +0 -0
  286. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/logging.py +0 -0
  287. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/processors.py +0 -0
  288. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/run_telemetry.py +0 -0
  289. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/telemetry/services.py +0 -0
  290. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/transactions.py +0 -0
  291. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/types/__init__.py +0 -0
  292. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/types/entrypoint.py +0 -0
  293. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/types/names.py +0 -0
  294. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/__init__.py +0 -0
  295. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/_ast.py +0 -0
  296. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/_deprecated.py +0 -0
  297. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/_engine.py +0 -0
  298. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/_git.py +0 -0
  299. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/annotations.py +0 -0
  300. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/asyncutils.py +0 -0
  301. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/collections.py +0 -0
  302. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/compat.py +0 -0
  303. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/context.py +0 -0
  304. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/dispatch.py +0 -0
  305. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/dockerutils.py +0 -0
  306. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/engine.py +0 -0
  307. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/filesystem.py +0 -0
  308. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/generics.py +0 -0
  309. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/hashing.py +0 -0
  310. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/importtools.py +0 -0
  311. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/math.py +0 -0
  312. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/names.py +0 -0
  313. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/processutils.py +0 -0
  314. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/pydantic.py +0 -0
  315. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/render_swagger.py +0 -0
  316. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  317. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  318. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/schema_tools/validation.py +0 -0
  319. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/services.py +0 -0
  320. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/slugify.py +0 -0
  321. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/templating.py +0 -0
  322. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/text.py +0 -0
  323. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/timeout.py +0 -0
  324. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/urls.py +0 -0
  325. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/utilities/visualization.py +0 -0
  326. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/variables.py +0 -0
  327. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/__init__.py +0 -0
  328. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/base.py +0 -0
  329. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/block.py +0 -0
  330. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/cloud.py +0 -0
  331. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/process.py +0 -0
  332. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/server.py +0 -0
  333. {prefect_client-3.4.5.dev5 → prefect_client-3.4.6.dev2}/src/prefect/workers/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefect-client
3
- Version: 3.4.5.dev5
3
+ Version: 3.4.6.dev2
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -44,7 +44,7 @@ Requires-Dist: packaging<25.1,>=21.3
44
44
  Requires-Dist: pathspec>=0.8.0
45
45
  Requires-Dist: pendulum<4,>=3.0.0; python_version < '3.13'
46
46
  Requires-Dist: prometheus-client>=0.20.0
47
- Requires-Dist: pydantic!=2.10.0,<3.0.0,>=2.9
47
+ Requires-Dist: pydantic!=2.10.0,!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4,<3.0.0,>=2.9
48
48
  Requires-Dist: pydantic-core<3.0.0,>=2.12.0
49
49
  Requires-Dist: pydantic-extra-types<3.0.0,>=2.8.2
50
50
  Requires-Dist: pydantic-settings!=2.9.0,<3.0.0,>2.2.1
@@ -48,7 +48,7 @@ dependencies = [
48
48
  "pathspec>=0.8.0",
49
49
  "pendulum>=3.0.0,<4; python_version<'3.13'",
50
50
  "prometheus-client>=0.20.0",
51
- "pydantic>=2.9,<3.0.0,!=2.10.0",
51
+ "pydantic>=2.9,<3.0.0,!=2.10.0,!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4",
52
52
  "pydantic_core>=2.12.0,<3.0.0",
53
53
  "pydantic_extra_types>=2.8.2,<3.0.0",
54
54
  "pydantic_settings>2.2.1,<3.0.0,!=2.9.0",
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.4.6.dev2"
3
+ __build_date__ = "2025-06-11 08:09:26.576114+00:00"
4
+ __git_commit__ = "4e82c8d6b8d529a8d8804a58781a68023465c7d4"
5
+ __dirty__ = False
@@ -47,6 +47,9 @@ class Asset(PrefectBaseModel):
47
47
  def __repr__(self) -> str:
48
48
  return f"Asset(key={self.key!r})"
49
49
 
50
+ def __hash__(self) -> int:
51
+ return hash(self.key)
52
+
50
53
  def add_metadata(self, metadata: dict[str, Any]) -> None:
51
54
  from prefect.context import AssetContext
52
55
 
@@ -59,7 +62,7 @@ class Asset(PrefectBaseModel):
59
62
  asset_ctx.add_asset_metadata(self.key, metadata)
60
63
 
61
64
 
62
- def add_asset_metadata(asset_key: str, metadata: dict[str, Any]) -> None:
65
+ def add_asset_metadata(asset: str | Asset, metadata: dict[str, Any]) -> None:
63
66
  from prefect.context import AssetContext
64
67
 
65
68
  asset_ctx = AssetContext.get()
@@ -68,4 +71,5 @@ def add_asset_metadata(asset_key: str, metadata: dict[str, Any]) -> None:
68
71
  "Unable to call `add_asset_metadata` when not inside of an AssetContext"
69
72
  )
70
73
 
74
+ asset_key = asset if isinstance(asset, str) else asset.key
71
75
  asset_ctx.add_asset_metadata(asset_key, metadata)
@@ -400,7 +400,7 @@ class EngineContext(RunContext):
400
400
 
401
401
  # Tracking information needed to track asset linage between
402
402
  # tasks and materialization
403
- task_run_assets: dict[UUID, list[Asset]] = Field(default_factory=dict)
403
+ task_run_assets: dict[UUID, set[Asset]] = Field(default_factory=dict)
404
404
 
405
405
  # Events worker to emit events
406
406
  events: Optional[EventsWorker] = None
@@ -486,12 +486,13 @@ class AssetContext(ContextModel):
486
486
  materialization_metadata: Metadata for materialized assets
487
487
  """
488
488
 
489
- direct_asset_dependencies: list[Asset] = Field(default_factory=list)
490
- downstream_assets: list[Asset] = Field(default_factory=list)
491
- upstream_assets: list[Asset] = Field(default_factory=list)
489
+ direct_asset_dependencies: set[Asset] = Field(default_factory=set)
490
+ downstream_assets: set[Asset] = Field(default_factory=set)
491
+ upstream_assets: set[Asset] = Field(default_factory=set)
492
492
  materialized_by: Optional[str] = None
493
493
  task_run_id: Optional[UUID] = None
494
494
  materialization_metadata: dict[str, dict[str, Any]] = Field(default_factory=dict)
495
+ copy_to_child_ctx: bool = False
495
496
 
496
497
  __var__: ClassVar[ContextVar[Self]] = ContextVar("asset_context")
497
498
 
@@ -501,6 +502,7 @@ class AssetContext(ContextModel):
501
502
  task: "Task[Any, Any]",
502
503
  task_run_id: UUID,
503
504
  task_inputs: Optional[dict[str, set[Any]]] = None,
505
+ copy_to_child_ctx: bool = False,
504
506
  ) -> "AssetContext":
505
507
  """
506
508
  Create an AssetContext from a task and its resolved inputs.
@@ -509,6 +511,7 @@ class AssetContext(ContextModel):
509
511
  task: The task instance
510
512
  task_run_id: The task run ID
511
513
  task_inputs: The resolved task inputs (TaskRunResult objects)
514
+ copy_to_child_ctx: Whether this context should be copied on a child AssetContext
512
515
 
513
516
  Returns:
514
517
  Configured AssetContext
@@ -516,29 +519,35 @@ class AssetContext(ContextModel):
516
519
  from prefect.client.schemas import TaskRunResult
517
520
  from prefect.tasks import MaterializingTask
518
521
 
519
- upstream_assets: list[Asset] = []
522
+ upstream_assets: set[Asset] = set()
520
523
 
521
- # Get upstream assets from engine context instead of TaskRunResult.assets
522
524
  flow_ctx = FlowRunContext.get()
523
525
  if task_inputs and flow_ctx:
524
- for inputs in task_inputs.values():
526
+ for name, inputs in task_inputs.items():
527
+ # Parent task runs are not dependencies
528
+ # that we want to track
529
+ if name == "__parents__":
530
+ continue
531
+
525
532
  for task_input in inputs:
526
533
  if isinstance(task_input, TaskRunResult):
527
- # Look up assets in the engine context
528
534
  task_assets = flow_ctx.task_run_assets.get(task_input.id)
529
535
  if task_assets:
530
- upstream_assets.extend(task_assets)
536
+ upstream_assets.update(task_assets)
531
537
 
532
538
  ctx = cls(
533
- direct_asset_dependencies=task.asset_deps[:] if task.asset_deps else [],
534
- downstream_assets=task.assets[:]
539
+ direct_asset_dependencies=set(task.asset_deps)
540
+ if task.asset_deps
541
+ else set(),
542
+ downstream_assets=set(task.assets)
535
543
  if isinstance(task, MaterializingTask) and task.assets
536
- else [],
544
+ else set(),
537
545
  upstream_assets=upstream_assets,
538
546
  materialized_by=task.materialized_by
539
547
  if isinstance(task, MaterializingTask)
540
548
  else None,
541
549
  task_run_id=task_run_id,
550
+ copy_to_child_ctx=copy_to_child_ctx,
542
551
  )
543
552
  ctx.update_tracked_assets()
544
553
 
@@ -551,7 +560,15 @@ class AssetContext(ContextModel):
551
560
  Args:
552
561
  asset_key: The asset key
553
562
  metadata: Metadata dictionary to add
563
+
564
+ Raises:
565
+ ValueError: If asset_key is not in downstream_assets
554
566
  """
567
+ downstream_keys = {asset.key for asset in self.downstream_assets}
568
+ if asset_key not in downstream_keys:
569
+ raise ValueError(
570
+ "Can only add metadata to assets that are arguments to @materialize"
571
+ )
555
572
 
556
573
  existing = self.materialization_metadata.get(asset_key, {})
557
574
  self.materialization_metadata[asset_key] = existing | metadata
@@ -596,46 +613,46 @@ class AssetContext(ContextModel):
596
613
 
597
614
  def emit_events(self, state: State) -> None:
598
615
  """
599
- Emit asset reference and materialization events based on task completion.
616
+ Emit asset events
600
617
  """
601
618
 
602
619
  from prefect.events import emit_event
603
620
 
604
621
  if state.name == "Cached":
605
622
  return
606
- if state.is_failed():
623
+ elif state.is_failed():
607
624
  event_status = "failed"
608
625
  elif state.is_completed():
609
626
  event_status = "succeeded"
610
627
  else:
611
628
  return
612
629
 
613
- asset_deps_related: list[Asset] = []
630
+ # If we have no downstream assets, this not a materialization
631
+ if not self.downstream_assets:
632
+ return
614
633
 
615
- # Emit reference events for direct asset dependencies
616
- for asset in self.direct_asset_dependencies:
634
+ # Emit reference events for all upstream assets (direct + inherited)
635
+ all_upstream_assets = self.upstream_assets | self.direct_asset_dependencies
636
+ for asset in all_upstream_assets:
617
637
  emit_event(
618
- event=f"prefect.asset.reference.{event_status}",
638
+ event="prefect.asset.referenced",
619
639
  resource=self.asset_as_resource(asset),
620
640
  related=[],
621
641
  )
622
- asset_deps_related.append(self.asset_as_related(asset))
623
642
 
624
643
  # Emit materialization events for downstream assets
625
- if self.downstream_assets:
626
- upstream_related = [self.asset_as_related(a) for a in self.upstream_assets]
627
- all_related = upstream_related + asset_deps_related
628
-
629
- if self.materialized_by:
630
- all_related.append(self.related_materialized_by(self.materialized_by))
631
-
632
- for asset in self.downstream_assets:
633
- emit_event(
634
- event=f"prefect.asset.materialization.{event_status}",
635
- resource=self.asset_as_resource(asset),
636
- related=all_related,
637
- payload=self.materialization_metadata.get(asset.key),
638
- )
644
+ upstream_related = [self.asset_as_related(a) for a in all_upstream_assets]
645
+
646
+ if self.materialized_by:
647
+ upstream_related.append(self.related_materialized_by(self.materialized_by))
648
+
649
+ for asset in self.downstream_assets:
650
+ emit_event(
651
+ event=f"prefect.asset.materialization.{event_status}",
652
+ resource=self.asset_as_resource(asset),
653
+ related=upstream_related,
654
+ payload=self.materialization_metadata.get(asset.key),
655
+ )
639
656
 
640
657
  def update_tracked_assets(self) -> None:
641
658
  """
@@ -649,11 +666,11 @@ class AssetContext(ContextModel):
649
666
 
650
667
  if self.downstream_assets:
651
668
  # MaterializingTask: propagate the downstream assets (what we create)
652
- assets_for_downstream = self.downstream_assets[:]
669
+ assets_for_downstream = set(self.downstream_assets)
653
670
  else:
654
671
  # Regular task: propagate upstream assets + direct dependencies
655
- assets_for_downstream = (
656
- list(self.upstream_assets) + self.direct_asset_dependencies
672
+ assets_for_downstream = set(
673
+ self.upstream_assets | self.direct_asset_dependencies
657
674
  )
658
675
 
659
676
  flow_run_context.task_run_assets[self.task_run_id] = assets_for_downstream
@@ -661,6 +678,9 @@ class AssetContext(ContextModel):
661
678
  def serialize(self: Self, include_secrets: bool = True) -> dict[str, Any]:
662
679
  """Serialize the AssetContext for distributed execution."""
663
680
  return self.model_dump(
681
+ # use json serialization so fields that are
682
+ # sets of pydantic models are serialized
683
+ mode="json",
664
684
  exclude_unset=True,
665
685
  serialize_as_any=True,
666
686
  context={"include_secrets": include_secrets},
@@ -628,7 +628,7 @@ class PrefectEventSubscriber:
628
628
  try:
629
629
  await self._reconnect()
630
630
  finally:
631
- EVENT_WEBSOCKET_CONNECTIONS.labels(self.client_name, "out", "initial")
631
+ EVENT_WEBSOCKET_CONNECTIONS.labels(self.client_name, "out", "initial").inc()
632
632
  return self
633
633
 
634
634
  async def _reconnect(self) -> None:
@@ -709,7 +709,7 @@ class PrefectEventSubscriber:
709
709
  finally:
710
710
  EVENT_WEBSOCKET_CONNECTIONS.labels(
711
711
  self.client_name, "out", "reconnect"
712
- )
712
+ ).inc()
713
713
  assert self._websocket
714
714
 
715
715
  while True:
@@ -1,17 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
- import inspect
4
3
  import warnings
5
4
  from pathlib import Path
6
5
  from typing import (
7
6
  Annotated,
8
7
  Any,
9
8
  ClassVar,
10
- Dict,
11
9
  Iterable,
12
10
  Iterator,
13
11
  Optional,
14
- Union,
15
12
  )
16
13
 
17
14
  import toml
@@ -20,16 +17,15 @@ from pydantic import (
20
17
  BeforeValidator,
21
18
  ConfigDict,
22
19
  Field,
23
- TypeAdapter,
24
20
  ValidationError,
25
21
  )
26
- from pydantic_settings import BaseSettings
27
22
 
28
23
  from prefect.exceptions import ProfileSettingsValidationError
29
24
  from prefect.settings.constants import DEFAULT_PROFILES_PATH
30
25
  from prefect.settings.context import get_current_settings
31
26
  from prefect.settings.legacy import Setting, _get_settings_fields
32
27
  from prefect.settings.models.root import Settings
28
+ from prefect.utilities.collections import set_in_dict
33
29
 
34
30
 
35
31
  def _cast_settings(
@@ -69,7 +65,7 @@ class Profile(BaseModel):
69
65
  )
70
66
  source: Optional[Path] = None
71
67
 
72
- def to_environment_variables(self) -> Dict[str, str]:
68
+ def to_environment_variables(self) -> dict[str, str]:
73
69
  """Convert the profile settings to a dictionary of environment variables."""
74
70
  return {
75
71
  setting.name: str(value)
@@ -78,23 +74,40 @@ class Profile(BaseModel):
78
74
  }
79
75
 
80
76
  def validate_settings(self) -> None:
81
- errors: list[tuple[Setting, ValidationError]] = []
77
+ """
78
+ Validate all settings in this profile by creating a partial Settings object
79
+ with the nested structure properly constructed using accessor paths.
80
+ """
81
+ if not self.settings:
82
+ return
83
+
84
+ nested_settings: dict[str, Any] = {}
85
+
82
86
  for setting, value in self.settings.items():
83
- try:
84
- model_fields = Settings.model_fields
85
- annotation = None
86
- for section in setting.accessor.split("."):
87
- annotation = model_fields[section].annotation
88
- if inspect.isclass(annotation) and issubclass(
89
- annotation, BaseSettings
90
- ):
91
- model_fields = annotation.model_fields
92
-
93
- TypeAdapter(annotation).validate_python(value)
94
- except ValidationError as e:
95
- errors.append((setting, e))
96
- if errors:
97
- raise ProfileSettingsValidationError(errors)
87
+ set_in_dict(nested_settings, setting.accessor, value)
88
+
89
+ try:
90
+ Settings.model_validate(nested_settings)
91
+ except ValidationError as e:
92
+ errors: list[tuple[Setting, ValidationError]] = []
93
+
94
+ for error in e.errors():
95
+ error_path = ".".join(str(loc) for loc in error["loc"])
96
+
97
+ for setting in self.settings.keys():
98
+ if setting.accessor == error_path:
99
+ errors.append(
100
+ (
101
+ setting,
102
+ ValidationError.from_exception_data(
103
+ "ValidationError", [error]
104
+ ),
105
+ )
106
+ )
107
+ break
108
+
109
+ if errors:
110
+ raise ProfileSettingsValidationError(errors)
98
111
 
99
112
 
100
113
  class ProfilesCollection:
@@ -106,9 +119,7 @@ class ProfilesCollection:
106
119
  The collection may store the name of the active profile.
107
120
  """
108
121
 
109
- def __init__(
110
- self, profiles: Iterable[Profile], active: Optional[str] = None
111
- ) -> None:
122
+ def __init__(self, profiles: Iterable[Profile], active: str | None = None) -> None:
112
123
  self.profiles_by_name: dict[str, Profile] = {
113
124
  profile.name: profile for profile in profiles
114
125
  }
@@ -122,7 +133,7 @@ class ProfilesCollection:
122
133
  return set(self.profiles_by_name.keys())
123
134
 
124
135
  @property
125
- def active_profile(self) -> Optional[Profile]:
136
+ def active_profile(self) -> Profile | None:
126
137
  """
127
138
  Retrieve the active profile in this collection.
128
139
  """
@@ -130,7 +141,7 @@ class ProfilesCollection:
130
141
  return None
131
142
  return self[self.active_name]
132
143
 
133
- def set_active(self, name: Optional[str], check: bool = True) -> None:
144
+ def set_active(self, name: str | None, check: bool = True) -> None:
134
145
  """
135
146
  Set the active profile name in the collection.
136
147
 
@@ -145,7 +156,7 @@ class ProfilesCollection:
145
156
  self,
146
157
  name: str,
147
158
  settings: dict[Setting, Any],
148
- source: Optional[Path] = None,
159
+ source: Path | None = None,
149
160
  ) -> Profile:
150
161
  """
151
162
  Add a profile to the collection or update the existing on if the name is already
@@ -201,7 +212,7 @@ class ProfilesCollection:
201
212
  """
202
213
  self.profiles_by_name.pop(name)
203
214
 
204
- def without_profile_source(self, path: Optional[Path]) -> "ProfilesCollection":
215
+ def without_profile_source(self, path: Path | None) -> "ProfilesCollection":
205
216
  """
206
217
  Remove profiles that were loaded from a given path.
207
218
 
@@ -367,7 +378,7 @@ def load_profile(name: str) -> Profile:
367
378
 
368
379
 
369
380
  def update_current_profile(
370
- settings: Dict[Union[str, Setting], Any],
381
+ settings: dict[str | Setting, Any],
371
382
  ) -> Profile:
372
383
  """
373
384
  Update the persisted data for the profile currently in-use.
@@ -454,8 +454,6 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
454
454
  result = state.data
455
455
 
456
456
  link_state_to_result(new_state, result)
457
- if asset_context := AssetContext.get():
458
- asset_context.emit_events(new_state)
459
457
 
460
458
  # emit a state change event
461
459
  self._last_event = emit_task_run_state_change_event(
@@ -641,15 +639,6 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
641
639
  else:
642
640
  persist_result = should_persist_result()
643
641
 
644
- asset_context = AssetContext.get()
645
- if not asset_context:
646
- asset_context = AssetContext.from_task_and_inputs(
647
- task=self.task,
648
- task_run_id=self.task_run.id,
649
- task_inputs=self.task_run.task_inputs,
650
- )
651
- stack.enter_context(asset_context)
652
-
653
642
  stack.enter_context(
654
643
  TaskRunContext(
655
644
  task=self.task,
@@ -672,6 +661,24 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
672
661
 
673
662
  yield
674
663
 
664
+ @contextmanager
665
+ def asset_context(self):
666
+ parent_asset_ctx = AssetContext.get()
667
+
668
+ if parent_asset_ctx and parent_asset_ctx.copy_to_child_ctx:
669
+ asset_ctx = parent_asset_ctx.model_copy()
670
+ asset_ctx.copy_to_child_ctx = False
671
+ else:
672
+ asset_ctx = AssetContext.from_task_and_inputs(
673
+ self.task, self.task_run.id, self.task_run.task_inputs
674
+ )
675
+
676
+ with asset_ctx as ctx:
677
+ try:
678
+ yield
679
+ finally:
680
+ ctx.emit_events(self.state)
681
+
675
682
  @contextmanager
676
683
  def initialize_run(
677
684
  self,
@@ -1032,8 +1039,6 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1032
1039
  result = new_state.data
1033
1040
 
1034
1041
  link_state_to_result(new_state, result)
1035
- if asset_context := AssetContext.get():
1036
- asset_context.emit_events(new_state)
1037
1042
 
1038
1043
  # emit a state change event
1039
1044
  self._last_event = emit_task_run_state_change_event(
@@ -1219,15 +1224,6 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1219
1224
  else:
1220
1225
  persist_result = should_persist_result()
1221
1226
 
1222
- asset_context = AssetContext.get()
1223
- if not asset_context:
1224
- asset_context = AssetContext.from_task_and_inputs(
1225
- task=self.task,
1226
- task_run_id=self.task_run.id,
1227
- task_inputs=self.task_run.task_inputs,
1228
- )
1229
- stack.enter_context(asset_context)
1230
-
1231
1227
  stack.enter_context(
1232
1228
  TaskRunContext(
1233
1229
  task=self.task,
@@ -1249,6 +1245,24 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1249
1245
 
1250
1246
  yield
1251
1247
 
1248
+ @asynccontextmanager
1249
+ async def asset_context(self):
1250
+ parent_asset_ctx = AssetContext.get()
1251
+
1252
+ if parent_asset_ctx and parent_asset_ctx.copy_to_child_ctx:
1253
+ asset_ctx = parent_asset_ctx.model_copy()
1254
+ asset_ctx.copy_to_child_ctx = False
1255
+ else:
1256
+ asset_ctx = AssetContext.from_task_and_inputs(
1257
+ self.task, self.task_run.id, self.task_run.task_inputs
1258
+ )
1259
+
1260
+ with asset_ctx as ctx:
1261
+ try:
1262
+ yield
1263
+ finally:
1264
+ ctx.emit_events(self.state)
1265
+
1252
1266
  @asynccontextmanager
1253
1267
  async def initialize_run(
1254
1268
  self,
@@ -1465,7 +1479,11 @@ def run_task_sync(
1465
1479
  with engine.start(task_run_id=task_run_id, dependencies=dependencies):
1466
1480
  while engine.is_running():
1467
1481
  run_coro_as_sync(engine.wait_until_ready())
1468
- with engine.run_context(), engine.transaction_context() as txn:
1482
+ with (
1483
+ engine.asset_context(),
1484
+ engine.run_context(),
1485
+ engine.transaction_context() as txn,
1486
+ ):
1469
1487
  engine.call_task_fn(txn)
1470
1488
 
1471
1489
  return engine.state if return_type == "state" else engine.result()
@@ -1492,7 +1510,11 @@ async def run_task_async(
1492
1510
  async with engine.start(task_run_id=task_run_id, dependencies=dependencies):
1493
1511
  while engine.is_running():
1494
1512
  await engine.wait_until_ready()
1495
- async with engine.run_context(), engine.transaction_context() as txn:
1513
+ async with (
1514
+ engine.asset_context(),
1515
+ engine.run_context(),
1516
+ engine.transaction_context() as txn,
1517
+ ):
1496
1518
  await engine.call_task_fn(txn)
1497
1519
 
1498
1520
  return engine.state if return_type == "state" else await engine.result()
@@ -1522,7 +1544,11 @@ def run_generator_task_sync(
1522
1544
  with engine.start(task_run_id=task_run_id, dependencies=dependencies):
1523
1545
  while engine.is_running():
1524
1546
  run_coro_as_sync(engine.wait_until_ready())
1525
- with engine.run_context(), engine.transaction_context() as txn:
1547
+ with (
1548
+ engine.asset_context(),
1549
+ engine.run_context(),
1550
+ engine.transaction_context() as txn,
1551
+ ):
1526
1552
  # TODO: generators should default to commit_mode=OFF
1527
1553
  # because they are dynamic by definition
1528
1554
  # for now we just prevent this branch explicitly
@@ -1576,7 +1602,11 @@ async def run_generator_task_async(
1576
1602
  async with engine.start(task_run_id=task_run_id, dependencies=dependencies):
1577
1603
  while engine.is_running():
1578
1604
  await engine.wait_until_ready()
1579
- async with engine.run_context(), engine.transaction_context() as txn:
1605
+ async with (
1606
+ engine.asset_context(),
1607
+ engine.run_context(),
1608
+ engine.transaction_context() as txn,
1609
+ ):
1580
1610
  # TODO: generators should default to commit_mode=OFF
1581
1611
  # because they are dynamic by definition
1582
1612
  # for now we just prevent this branch explicitly