prefect-client 3.4.1.dev5__tar.gz → 3.4.2__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 (330) hide show
  1. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/PKG-INFO +2 -2
  2. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/pyproject.toml +1 -1
  3. prefect_client-3.4.2/src/prefect/_build_info.py +5 -0
  4. prefect_client-3.4.2/src/prefect/_internal/compatibility/blocks.py +27 -0
  5. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/schemas/bases.py +11 -1
  6. prefect_client-3.4.2/src/prefect/_internal/uuid7.py +119 -0
  7. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/webhook.py +15 -7
  8. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/objects.py +12 -7
  9. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/runner.py +3 -1
  10. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/filters.py +25 -11
  11. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/schemas/automations.py +3 -1
  12. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/schemas/events.py +3 -2
  13. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/flows.py +1 -1
  14. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/results.py +24 -35
  15. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/runner.py +3 -10
  16. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/serializers.py +9 -0
  17. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/workers.py +3 -2
  18. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/tasks.py +3 -2
  19. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/task_runners.py +2 -1
  20. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/task_worker.py +95 -14
  21. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/tasks.py +8 -3
  22. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/types/__init__.py +47 -1
  23. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/callables.py +4 -0
  24. prefect_client-3.4.1.dev5/src/prefect/_build_info.py +0 -5
  25. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/.gitignore +0 -0
  26. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/LICENSE +0 -0
  27. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/README.md +0 -0
  28. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/.prefectignore +0 -0
  29. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/__init__.py +0 -0
  30. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/__main__.py +0 -0
  31. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/__init__.py +0 -0
  32. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/bundles/__init__.py +0 -0
  33. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/bundles/execute.py +0 -0
  34. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/lineage.py +0 -0
  35. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/sla/__init__.py +0 -0
  36. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/sla/client.py +0 -0
  37. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_experimental/sla/objects.py +0 -0
  38. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/__init__.py +0 -0
  39. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/_logging.py +0 -0
  40. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/__init__.py +0 -0
  41. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  42. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  43. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/migration.py +0 -0
  44. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/__init__.py +0 -0
  45. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/api.py +0 -0
  46. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/calls.py +0 -0
  47. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  48. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  49. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/inspection.py +0 -0
  50. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/primitives.py +0 -0
  51. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/services.py +0 -0
  52. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/threads.py +0 -0
  53. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/waiters.py +0 -0
  54. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/integrations.py +0 -0
  55. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/__init__.py +0 -0
  56. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/schemas.py +0 -0
  57. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  58. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  59. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  60. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/pytz.py +0 -0
  61. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/retries.py +0 -0
  62. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/schemas/__init__.py +0 -0
  63. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/schemas/fields.py +0 -0
  64. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/schemas/serializers.py +0 -0
  65. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_internal/schemas/validators.py +0 -0
  66. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_result_records.py +0 -0
  67. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_vendor/croniter/__init__.py +0 -0
  68. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_vendor/croniter/croniter.py +0 -0
  69. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_versioning.py +0 -0
  70. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/_waiters.py +0 -0
  71. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/agent.py +0 -0
  72. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/artifacts.py +0 -0
  73. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/automations.py +0 -0
  74. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/__init__.py +0 -0
  75. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/abstract.py +0 -0
  76. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/core.py +0 -0
  77. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/fields.py +0 -0
  78. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/notifications.py +0 -0
  79. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/redis.py +0 -0
  80. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/blocks/system.py +0 -0
  81. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/cache_policies.py +0 -0
  82. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/__init__.py +0 -0
  83. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/base.py +0 -0
  84. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/cloud.py +0 -0
  85. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/collections.py +0 -0
  86. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/constants.py +0 -0
  87. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/__init__.py +0 -0
  88. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  89. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  90. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  91. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_automations/client.py +0 -0
  92. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  93. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  94. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  95. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  96. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  97. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  98. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  99. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  100. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  101. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  102. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  103. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  104. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  105. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flows/client.py +0 -0
  106. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  107. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_logs/client.py +0 -0
  108. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  109. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_variables/client.py +0 -0
  110. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  111. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  112. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/base.py +0 -0
  113. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/orchestration/routes.py +0 -0
  114. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/__init__.py +0 -0
  115. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/actions.py +0 -0
  116. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/filters.py +0 -0
  117. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/responses.py +0 -0
  118. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/schedules.py +0 -0
  119. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/schemas/sorting.py +0 -0
  120. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/subscriptions.py +0 -0
  121. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/types/__init__.py +0 -0
  122. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  123. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/client/utilities.py +0 -0
  124. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/__init__.py +0 -0
  125. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/_asyncio.py +0 -0
  126. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/_events.py +0 -0
  127. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/asyncio.py +0 -0
  128. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/context.py +0 -0
  129. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/services.py +0 -0
  130. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/sync.py +0 -0
  131. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/__init__.py +0 -0
  132. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  133. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/_events.py +0 -0
  134. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/asyncio.py +0 -0
  135. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/context.py +0 -0
  136. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/services.py +0 -0
  137. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/concurrency/v1/sync.py +0 -0
  138. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/context.py +0 -0
  139. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/__init__.py +0 -0
  140. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/base.py +0 -0
  141. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/deployments.py +0 -0
  142. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/flow_runs.py +0 -0
  143. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/schedules.py +0 -0
  144. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/steps/__init__.py +0 -0
  145. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/steps/core.py +0 -0
  146. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/steps/pull.py +0 -0
  147. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/deployments/steps/utility.py +0 -0
  148. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/docker/__init__.py +0 -0
  149. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/docker/docker_image.py +0 -0
  150. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/engine.py +0 -0
  151. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/__init__.py +0 -0
  152. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/actions.py +0 -0
  153. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/cli/__init__.py +0 -0
  154. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/cli/automations.py +0 -0
  155. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/clients.py +0 -0
  156. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/related.py +0 -0
  157. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/schemas/__init__.py +0 -0
  158. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  159. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/schemas/labelling.py +0 -0
  160. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/utilities.py +0 -0
  161. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/events/worker.py +0 -0
  162. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/exceptions.py +0 -0
  163. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/filesystems.py +0 -0
  164. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/flow_engine.py +0 -0
  165. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/flow_runs.py +0 -0
  166. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/futures.py +0 -0
  167. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/__init__.py +0 -0
  168. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/base.py +0 -0
  169. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  170. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  171. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  172. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  173. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  174. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  175. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/input/__init__.py +0 -0
  176. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/input/actions.py +0 -0
  177. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/input/run_input.py +0 -0
  178. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/locking/__init__.py +0 -0
  179. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/locking/filesystem.py +0 -0
  180. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/locking/memory.py +0 -0
  181. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/locking/protocol.py +0 -0
  182. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/__init__.py +0 -0
  183. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/configuration.py +0 -0
  184. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/filters.py +0 -0
  185. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/formatters.py +0 -0
  186. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/handlers.py +0 -0
  187. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/highlighters.py +0 -0
  188. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/loggers.py +0 -0
  189. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/logging/logging.yml +0 -0
  190. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/main.py +0 -0
  191. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/plugins.py +0 -0
  192. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/py.typed +0 -0
  193. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/__init__.py +0 -0
  194. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/_observers.py +0 -0
  195. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/server.py +0 -0
  196. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/storage.py +0 -0
  197. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/submit.py +0 -0
  198. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runner/utils.py +0 -0
  199. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runtime/__init__.py +0 -0
  200. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runtime/deployment.py +0 -0
  201. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runtime/flow_run.py +0 -0
  202. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/runtime/task_run.py +0 -0
  203. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/schedules.py +0 -0
  204. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/__init__.py +0 -0
  205. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/admin.py +0 -0
  206. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/artifacts.py +0 -0
  207. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/automations.py +0 -0
  208. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/block_capabilities.py +0 -0
  209. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/block_documents.py +0 -0
  210. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/block_schemas.py +0 -0
  211. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/block_types.py +0 -0
  212. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/clients.py +0 -0
  213. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/collections.py +0 -0
  214. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  215. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/concurrency_limits.py +0 -0
  216. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  217. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/csrf_token.py +0 -0
  218. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/dependencies.py +0 -0
  219. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/deployments.py +0 -0
  220. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/events.py +0 -0
  221. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/flow_run_states.py +0 -0
  222. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/flow_runs.py +0 -0
  223. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/flows.py +0 -0
  224. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/logs.py +0 -0
  225. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/middleware.py +0 -0
  226. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/root.py +0 -0
  227. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/run_history.py +0 -0
  228. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/saved_searches.py +0 -0
  229. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/server.py +0 -0
  230. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  231. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/task_run_states.py +0 -0
  232. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/task_runs.py +0 -0
  233. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/task_workers.py +0 -0
  234. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/templates.py +0 -0
  235. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/ui/__init__.py +0 -0
  236. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/ui/flow_runs.py +0 -0
  237. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/ui/flows.py +0 -0
  238. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/ui/schemas.py +0 -0
  239. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/ui/task_runs.py +0 -0
  240. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/validation.py +0 -0
  241. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/variables.py +0 -0
  242. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/server/api/work_queues.py +0 -0
  243. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/__init__.py +0 -0
  244. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/base.py +0 -0
  245. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/constants.py +0 -0
  246. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/context.py +0 -0
  247. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/legacy.py +0 -0
  248. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/__init__.py +0 -0
  249. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/api.py +0 -0
  250. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/cli.py +0 -0
  251. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/client.py +0 -0
  252. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/cloud.py +0 -0
  253. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/deployments.py +0 -0
  254. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/experiments.py +0 -0
  255. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/flows.py +0 -0
  256. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/internal.py +0 -0
  257. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/logging.py +0 -0
  258. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/results.py +0 -0
  259. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/root.py +0 -0
  260. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/runner.py +0 -0
  261. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/__init__.py +0 -0
  262. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/api.py +0 -0
  263. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/database.py +0 -0
  264. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/deployments.py +0 -0
  265. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/ephemeral.py +0 -0
  266. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/events.py +0 -0
  267. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  268. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/root.py +0 -0
  269. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/services.py +0 -0
  270. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/tasks.py +0 -0
  271. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/server/ui.py +0 -0
  272. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/testing.py +0 -0
  273. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/models/worker.py +0 -0
  274. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/profiles.py +0 -0
  275. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/profiles.toml +0 -0
  276. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/settings/sources.py +0 -0
  277. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/states.py +0 -0
  278. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/task_engine.py +0 -0
  279. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/task_runs.py +0 -0
  280. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/__init__.py +0 -0
  281. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/bootstrap.py +0 -0
  282. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/instrumentation.py +0 -0
  283. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/logging.py +0 -0
  284. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/processors.py +0 -0
  285. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/run_telemetry.py +0 -0
  286. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/telemetry/services.py +0 -0
  287. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/transactions.py +0 -0
  288. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/types/_datetime.py +0 -0
  289. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/types/entrypoint.py +0 -0
  290. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/types/names.py +0 -0
  291. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/__init__.py +0 -0
  292. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/_ast.py +0 -0
  293. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/_deprecated.py +0 -0
  294. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/_engine.py +0 -0
  295. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/_git.py +0 -0
  296. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/annotations.py +0 -0
  297. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/asyncutils.py +0 -0
  298. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/collections.py +0 -0
  299. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/compat.py +0 -0
  300. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/context.py +0 -0
  301. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/dispatch.py +0 -0
  302. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/dockerutils.py +0 -0
  303. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/engine.py +0 -0
  304. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/filesystem.py +0 -0
  305. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/generics.py +0 -0
  306. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/hashing.py +0 -0
  307. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/importtools.py +0 -0
  308. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/math.py +0 -0
  309. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/names.py +0 -0
  310. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/processutils.py +0 -0
  311. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/pydantic.py +0 -0
  312. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/render_swagger.py +0 -0
  313. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  314. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  315. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/validation.py +0 -0
  316. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/services.py +0 -0
  317. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/slugify.py +0 -0
  318. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/templating.py +0 -0
  319. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/text.py +0 -0
  320. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/timeout.py +0 -0
  321. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/urls.py +0 -0
  322. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/utilities/visualization.py +0 -0
  323. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/variables.py +0 -0
  324. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/workers/__init__.py +0 -0
  325. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/workers/base.py +0 -0
  326. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/workers/block.py +0 -0
  327. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/workers/cloud.py +0 -0
  328. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/workers/process.py +0 -0
  329. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/src/prefect/workers/server.py +0 -0
  330. {prefect_client-3.4.1.dev5 → prefect_client-3.4.2}/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.1.dev5
3
+ Version: 3.4.2
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
@@ -37,7 +37,7 @@ Requires-Dist: httpx[http2]!=0.23.2,>=0.23
37
37
  Requires-Dist: humanize<5.0.0,>=4.9.0
38
38
  Requires-Dist: importlib-metadata>=4.4; python_version < '3.10'
39
39
  Requires-Dist: jsonpatch<2.0,>=1.32
40
- Requires-Dist: jsonschema<5.0.0,>=4.0.0
40
+ Requires-Dist: jsonschema<5.0.0,>=4.18.0
41
41
  Requires-Dist: opentelemetry-api<2.0.0,>=1.27.0
42
42
  Requires-Dist: orjson<4.0,>=3.7
43
43
  Requires-Dist: packaging<25.1,>=21.3
@@ -41,7 +41,7 @@ dependencies = [
41
41
  "humanize>=4.9.0,<5.0.0",
42
42
  "importlib_metadata>=4.4;python_version<'3.10'",
43
43
  "jsonpatch>=1.32,<2.0",
44
- "jsonschema>=4.0.0,<5.0.0",
44
+ "jsonschema>=4.18.0,<5.0.0",
45
45
  "opentelemetry-api>=1.27.0,<2.0.0",
46
46
  "orjson>=3.7,<4.0",
47
47
  "packaging>=21.3,<25.1",
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.4.2"
3
+ __build_date__ = "2025-05-19 16:04:17.482728+00:00"
4
+ __git_commit__ = "c3c1c11938403c81deba5a32b39b8d997178b894"
5
+ __dirty__ = False
@@ -0,0 +1,27 @@
1
+ import inspect
2
+ from typing import Any, Union
3
+
4
+ from prefect.filesystems import NullFileSystem, WritableFileSystem
5
+
6
+
7
+ async def call_explicitly_async_block_method(
8
+ block: Union[WritableFileSystem, NullFileSystem],
9
+ method: str,
10
+ args: tuple[Any, ...],
11
+ kwargs: dict[str, Any],
12
+ ) -> Any:
13
+ """
14
+ TODO: remove this once we have explicit async methods on all storage blocks
15
+
16
+ see https://github.com/PrefectHQ/prefect/issues/15008
17
+ """
18
+ if hasattr(block, f"a{method}"): # explicit async method
19
+ return await getattr(block, f"a{method}")(*args, **kwargs)
20
+ elif hasattr(getattr(block, method, None), "aio"): # sync_compatible
21
+ return await getattr(block, method).aio(block, *args, **kwargs)
22
+ else: # should not happen in prefect, but users can override impls
23
+ maybe_coro = getattr(block, method)(*args, **kwargs)
24
+ if inspect.isawaitable(maybe_coro):
25
+ return await maybe_coro
26
+ else:
27
+ return maybe_coro
@@ -10,6 +10,7 @@ from pydantic import BaseModel, ConfigDict, Field
10
10
  from rich.repr import RichReprResult
11
11
  from typing_extensions import Self
12
12
 
13
+ from prefect._internal.uuid7 import uuid7
13
14
  from prefect.types._datetime import (
14
15
  DateTime,
15
16
  human_friendly_diff,
@@ -100,7 +101,7 @@ class PrefectBaseModel(BaseModel):
100
101
 
101
102
  class IDBaseModel(PrefectBaseModel):
102
103
  """
103
- A PrefectBaseModel with an auto-generated UUID ID value.
104
+ A PrefectBaseModel with a randomly-generated UUID ID value.
104
105
 
105
106
  The ID is reset on copy() and not included in equality comparisons.
106
107
  """
@@ -109,6 +110,15 @@ class IDBaseModel(PrefectBaseModel):
109
110
  id: UUID = Field(default_factory=uuid4)
110
111
 
111
112
 
113
+ class TimeSeriesBaseModel(IDBaseModel):
114
+ """
115
+ A PrefectBaseModel with a time-oriented UUIDv7 ID value. Used for models that
116
+ operate like timeseries, such as runs, states, and logs.
117
+ """
118
+
119
+ id: UUID = Field(default_factory=uuid7)
120
+
121
+
112
122
  class ObjectBaseModel(IDBaseModel):
113
123
  """
114
124
  A PrefectBaseModel with an auto-generated UUID ID value and created /
@@ -0,0 +1,119 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import time
5
+ import uuid
6
+ from typing import Callable, Optional
7
+
8
+
9
+ def _time_ms() -> int:
10
+ return time.time_ns() // 1_000_000
11
+
12
+
13
+ def uuid7(
14
+ ms: Optional[int] = None,
15
+ time_func: Callable[[], int] = _time_ms,
16
+ ) -> uuid.UUID:
17
+ """
18
+ UUID v7, following the proposed extension to RFC4122 described in
19
+ https://www.ietf.org/id/draft-peabody-dispatch-new-uuid-format-02.html.
20
+ All representations (string, byte array, int) sort chronologically,
21
+ with a potential time resolution of 50ns (if the system clock
22
+ supports this).
23
+
24
+ Parameters
25
+ ----------
26
+
27
+ ms - Optional integer with the whole number of milliseconds
28
+ since Unix epoch, to set the "as of" timestamp.
29
+
30
+ as_type - Optional string to return the UUID in a different format.
31
+ A uuid.UUID (version 7, variant 0x10) is returned unless
32
+ this is one of 'str', 'int', 'hex' or 'bytes'.
33
+
34
+ time_func - Set the time function, which must return integer
35
+ milliseconds since the Unix epoch, midnight on 1-Jan-1970.
36
+ Defaults to time.time_ns()/1e6. This is exposed because
37
+ time.time_ns() may have a low resolution on Windows.
38
+
39
+ Returns
40
+ -------
41
+
42
+ A UUID object, or if as_type is specified, a string, int or
43
+ bytes of length 16.
44
+
45
+ Implementation notes
46
+ --------------------
47
+
48
+ The 128 bits in the UUID are allocated as follows:
49
+ - 36 bits of whole seconds
50
+ - 24 bits of fractional seconds, giving approx 50ns resolution
51
+ - 14 bits of sequential counter, if called repeatedly in same time tick
52
+ - 48 bits of randomness
53
+ plus, at locations defined by RFC4122, 4 bits for the
54
+ uuid version (0b111) and 2 bits for the uuid variant (0b10).
55
+
56
+ 0 1 2 3
57
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
58
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59
+ | unix_ts_ms |
60
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
61
+ | unix_ts_ms | ver | rand_a |
62
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
63
+ |var| rand_b |
64
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
65
+ | rand_b |
66
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67
+
68
+ Indicative timings:
69
+ - uuid.uuid4() 2.4us
70
+ - uuid7() 3.7us
71
+ - uuid7(as_type='int') 1.6us
72
+ - uuid7(as_type='str') 2.5us
73
+
74
+ Examples
75
+ --------
76
+
77
+ >>> uuid7()
78
+ UUID('061cb26a-54b8-7a52-8000-2124e7041024')
79
+
80
+ >>> for fmt in ('bytes', 'hex', 'int', 'str', 'uuid', None):
81
+ ... print(fmt, repr(uuid7(as_type=fmt)))
82
+ bytes b'\x06\x1c\xb8\xfe\x0f\x0b|9\x80\x00\tjt\x85\xb3\xbb'
83
+ hex '061cb8fe0f0b7c3980011863b956b758'
84
+ int 8124504378724980906989670469352026642
85
+ str '061cb8fe-0f0b-7c39-8003-d44a7ee0bdf6'
86
+ uuid UUID('061cb8fe-0f0b-7c39-8004-0489578299f6')
87
+ None UUID('061cb8fe-0f0f-7df2-8000-afd57c2bf446')
88
+ """
89
+ if ms is None:
90
+ ms = time_func()
91
+ else:
92
+ ms = int(ms) # Fail fast if not an int
93
+
94
+ rand_a = int.from_bytes(bytes=os.urandom(2), byteorder="big")
95
+ rand_b = int.from_bytes(bytes=os.urandom(8), byteorder="big")
96
+ uuid_bytes = uuidfromvalues(ms, rand_a, rand_b)
97
+
98
+ uuid_int = int.from_bytes(bytes=uuid_bytes, byteorder="big")
99
+ return uuid.UUID(int=uuid_int)
100
+
101
+
102
+ def uuidfromvalues(unix_ts_ms: int, rand_a: int, rand_b: int):
103
+ version = 0x07
104
+ var = 2
105
+ rand_a &= 0xFFF
106
+ rand_b &= 0x3FFFFFFFFFFFFFFF
107
+
108
+ final_bytes = unix_ts_ms.to_bytes(length=6, byteorder="big")
109
+ final_bytes += ((version << 12) + rand_a).to_bytes(length=2, byteorder="big")
110
+ final_bytes += ((var << 62) + rand_b).to_bytes(length=8, byteorder="big")
111
+
112
+ return final_bytes
113
+
114
+
115
+ def format_byte_array_as_uuid(arr: bytes):
116
+ return f"{arr[:4].hex()}-{arr[4:6].hex()}-{arr[6:8].hex()}-{arr[8:10].hex()}-{arr[10:].hex()}"
117
+
118
+
119
+ __all__ = ("uuid7",)
@@ -58,7 +58,7 @@ class Webhook(Block):
58
58
  else:
59
59
  self._client = AsyncClient(transport=_insecure_http_transport)
60
60
 
61
- async def call(self, payload: dict[str, Any] | None = None) -> Response:
61
+ async def call(self, payload: dict[str, Any] | str | None = None) -> Response:
62
62
  """
63
63
  Call the webhook.
64
64
 
@@ -69,9 +69,17 @@ class Webhook(Block):
69
69
  validate_restricted_url(self.url.get_secret_value())
70
70
 
71
71
  async with self._client:
72
- return await self._client.request(
73
- method=self.method,
74
- url=self.url.get_secret_value(),
75
- headers=self.headers.get_secret_value(),
76
- json=payload,
77
- )
72
+ if isinstance(payload, str):
73
+ return await self._client.request(
74
+ method=self.method,
75
+ url=self.url.get_secret_value(),
76
+ headers=self.headers.get_secret_value(),
77
+ content=payload,
78
+ )
79
+ else:
80
+ return await self._client.request(
81
+ method=self.method,
82
+ url=self.url.get_secret_value(),
83
+ headers=self.headers.get_secret_value(),
84
+ json=payload,
85
+ )
@@ -15,7 +15,7 @@ from typing import (
15
15
  Union,
16
16
  overload,
17
17
  )
18
- from uuid import UUID, uuid4
18
+ from uuid import UUID
19
19
 
20
20
  import orjson
21
21
  from pydantic import (
@@ -36,7 +36,11 @@ from typing_extensions import Literal, Self, TypeVar
36
36
 
37
37
  from prefect._internal.compatibility.async_dispatch import async_dispatch
38
38
  from prefect._internal.compatibility.migration import getattr_migration
39
- from prefect._internal.schemas.bases import ObjectBaseModel, PrefectBaseModel
39
+ from prefect._internal.schemas.bases import (
40
+ ObjectBaseModel,
41
+ PrefectBaseModel,
42
+ TimeSeriesBaseModel,
43
+ )
40
44
  from prefect._internal.schemas.fields import CreatedBy, UpdatedBy
41
45
  from prefect._internal.schemas.validators import (
42
46
  get_or_create_run_name,
@@ -48,6 +52,7 @@ from prefect._internal.schemas.validators import (
48
52
  validate_not_negative,
49
53
  validate_parent_and_ref_diff,
50
54
  )
55
+ from prefect._internal.uuid7 import uuid7
51
56
  from prefect._result_records import ResultRecordMetadata
52
57
  from prefect.client.schemas.schedules import SCHEDULE_TYPES
53
58
  from prefect.settings import PREFECT_CLOUD_API_URL, PREFECT_CLOUD_UI_URL
@@ -184,7 +189,7 @@ def data_discriminator(x: Any) -> str:
184
189
  return "Any"
185
190
 
186
191
 
187
- class State(ObjectBaseModel, Generic[R]):
192
+ class State(TimeSeriesBaseModel, ObjectBaseModel, Generic[R]):
188
193
  """
189
194
  The state of a run.
190
195
  """
@@ -415,7 +420,7 @@ class State(ObjectBaseModel, Generic[R]):
415
420
  """
416
421
  return self.model_copy(
417
422
  update={
418
- "id": uuid4(),
423
+ "id": uuid7(),
419
424
  "created": now("UTC"),
420
425
  "updated": now("UTC"),
421
426
  "timestamp": now("UTC"),
@@ -511,7 +516,7 @@ class FlowRunPolicy(PrefectBaseModel):
511
516
  return values
512
517
 
513
518
 
514
- class FlowRun(ObjectBaseModel):
519
+ class FlowRun(TimeSeriesBaseModel, ObjectBaseModel):
515
520
  name: str = Field(
516
521
  default_factory=lambda: generate_slug(2),
517
522
  description=(
@@ -767,7 +772,7 @@ class Constant(TaskRunInput):
767
772
  type: str
768
773
 
769
774
 
770
- class TaskRun(ObjectBaseModel):
775
+ class TaskRun(TimeSeriesBaseModel, ObjectBaseModel):
771
776
  name: str = Field(
772
777
  default_factory=lambda: generate_slug(2), examples=["my-task-run"]
773
778
  )
@@ -1307,7 +1312,7 @@ class SavedSearch(ObjectBaseModel):
1307
1312
  )
1308
1313
 
1309
1314
 
1310
- class Log(ObjectBaseModel):
1315
+ class Log(TimeSeriesBaseModel, ObjectBaseModel):
1311
1316
  """An ORM representation of log data."""
1312
1317
 
1313
1318
  name: str = Field(default=..., description="The logger name.")
@@ -743,7 +743,9 @@ class RunnerDeployment(BaseModel):
743
743
  entry_path = (
744
744
  Path(flow_file).absolute().relative_to(Path.cwd().absolute())
745
745
  )
746
- deployment.entrypoint = f"{entry_path}:{flow.fn.__name__}"
746
+ deployment.entrypoint = (
747
+ f"{entry_path}:{getattr(flow.fn, '__qualname__', flow.fn.__name__)}"
748
+ )
747
749
 
748
750
  if entrypoint_type == EntrypointType.FILE_PATH and not deployment._path:
749
751
  deployment._path = "."
@@ -1,5 +1,7 @@
1
+ from __future__ import annotations
2
+
1
3
  import datetime
2
- from typing import Optional
4
+ from typing import Optional, Union
3
5
  from uuid import UUID
4
6
 
5
7
  from pydantic import Field
@@ -43,11 +45,21 @@ class EventDataFilter(PrefectBaseModel, extra="forbid"): # type: ignore[call-ar
43
45
  """A base class for filtering event data."""
44
46
 
45
47
  def get_filters(self) -> list["EventDataFilter"]:
46
- filters: list["EventDataFilter"] = [
47
- filter
48
- for filter in [getattr(self, name) for name in type(self).model_fields]
49
- if isinstance(filter, EventDataFilter)
50
- ]
48
+ filters: list[EventDataFilter] = []
49
+ for filter in [
50
+ getattr(self, name) for name in self.__class__.model_fields.keys()
51
+ ]:
52
+ # Any embedded list of filters are flattened and thus ANDed together
53
+ subfilters: list[EventDataFilter] = (
54
+ filter if isinstance(filter, list) else [filter]
55
+ )
56
+
57
+ for subfilter in subfilters:
58
+ if not isinstance(subfilter, EventDataFilter):
59
+ continue
60
+
61
+ filters.append(subfilter)
62
+
51
63
  return filters
52
64
 
53
65
  def includes(self, event: Event) -> bool:
@@ -233,18 +245,20 @@ class EventFilter(EventDataFilter):
233
245
  default=None,
234
246
  description="Filter criteria for the event name",
235
247
  )
236
- any_resource: Optional[EventAnyResourceFilter] = Field(
237
- default=None,
238
- description="Filter criteria for any resource involved in the event",
239
- )
240
248
  resource: Optional[EventResourceFilter] = Field(
241
249
  default=None,
242
250
  description="Filter criteria for the resource of the event",
243
251
  )
244
- related: Optional[EventRelatedFilter] = Field(
252
+ related: Optional[Union[EventRelatedFilter, list[EventRelatedFilter]]] = Field(
245
253
  default=None,
246
254
  description="Filter criteria for the related resources of the event",
247
255
  )
256
+ any_resource: Optional[
257
+ Union[EventAnyResourceFilter, list[EventAnyResourceFilter]]
258
+ ] = Field(
259
+ default=None,
260
+ description="Filter criteria for any resource involved in the event",
261
+ )
248
262
  id: EventIDFilter = Field(
249
263
  default_factory=lambda: EventIDFilter(id=[]),
250
264
  description="Filter criteria for the events' ID",
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import abc
2
4
  import textwrap
3
5
  from datetime import timedelta
@@ -103,7 +105,7 @@ class ResourceTrigger(Trigger, abc.ABC):
103
105
  default_factory=lambda: ResourceSpecification.model_validate({}),
104
106
  description="Labels for resources which this trigger will match.",
105
107
  )
106
- match_related: ResourceSpecification = Field(
108
+ match_related: Union[ResourceSpecification, list[ResourceSpecification]] = Field(
107
109
  default_factory=lambda: ResourceSpecification.model_validate({}),
108
110
  description="Labels for related resources which this trigger will match.",
109
111
  )
@@ -13,7 +13,7 @@ from typing import (
13
13
  Tuple,
14
14
  Union,
15
15
  )
16
- from uuid import UUID, uuid4
16
+ from uuid import UUID
17
17
 
18
18
  from pydantic import (
19
19
  AfterValidator,
@@ -26,6 +26,7 @@ from typing_extensions import Annotated, Self
26
26
 
27
27
  import prefect.types._datetime
28
28
  from prefect._internal.schemas.bases import PrefectBaseModel
29
+ from prefect._internal.uuid7 import uuid7
29
30
  from prefect.logging import get_logger
30
31
  from prefect.settings import (
31
32
  PREFECT_EVENTS_MAXIMUM_LABELS_PER_RESOURCE,
@@ -135,7 +136,7 @@ class Event(PrefectBaseModel):
135
136
  description="An open-ended set of data describing what happened",
136
137
  )
137
138
  id: UUID = Field(
138
- default_factory=uuid4,
139
+ default_factory=uuid7,
139
140
  description="The client-provided identifier of this event",
140
141
  )
141
142
  follows: Optional[UUID] = Field(
@@ -404,7 +404,7 @@ class Flow(Generic[P, R]):
404
404
  module_name = inspect.getfile(fn)
405
405
  module = module_name if module_name != "__main__" else module
406
406
 
407
- self._entrypoint = f"{module}:{fn.__name__}"
407
+ self._entrypoint = f"{module}:{getattr(fn, '__qualname__', fn.__name__)}"
408
408
 
409
409
  @property
410
410
  def ismethod(self) -> bool:
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- import inspect
5
4
  import os
6
5
  import socket
7
6
  import threading
8
7
  import uuid
8
+ from datetime import datetime
9
9
  from functools import partial
10
10
  from operator import methodcaller
11
11
  from pathlib import Path
@@ -34,6 +34,8 @@ from typing_extensions import ParamSpec, Self
34
34
  import prefect
35
35
  import prefect.types._datetime
36
36
  from prefect._internal.compatibility.async_dispatch import async_dispatch
37
+ from prefect._internal.compatibility.blocks import call_explicitly_async_block_method
38
+ from prefect._internal.compatibility.deprecated import deprecated_callable
37
39
  from prefect._internal.concurrency.event_loop import get_running_loop
38
40
  from prefect._result_records import R, ResultRecord, ResultRecordMetadata
39
41
  from prefect.blocks.core import Block
@@ -285,29 +287,6 @@ def _format_user_supplied_storage_key(key: str) -> str:
285
287
  return key.format(**runtime_vars, parameters=prefect.runtime.task_run.parameters)
286
288
 
287
289
 
288
- async def _call_explicitly_async_block_method(
289
- block: WritableFileSystem | NullFileSystem,
290
- method: str,
291
- args: tuple[Any, ...],
292
- kwargs: dict[str, Any],
293
- ) -> Any:
294
- """
295
- TODO: remove this once we have explicit async methods on all storage blocks
296
-
297
- see https://github.com/PrefectHQ/prefect/issues/15008
298
- """
299
- if hasattr(block, f"a{method}"): # explicit async method
300
- return await getattr(block, f"a{method}")(*args, **kwargs)
301
- elif hasattr(getattr(block, method, None), "aio"): # sync_compatible
302
- return await getattr(block, method).aio(block, *args, **kwargs)
303
- else: # should not happen in prefect, but users can override impls
304
- maybe_coro = getattr(block, method)(*args, **kwargs)
305
- if inspect.isawaitable(maybe_coro):
306
- return await maybe_coro
307
- else:
308
- return maybe_coro
309
-
310
-
311
290
  T = TypeVar("T")
312
291
 
313
292
 
@@ -505,7 +484,7 @@ class ResultStore(BaseModel):
505
484
  # TODO: Add an `exists` method to commonly used storage blocks
506
485
  # so the entire payload doesn't need to be read
507
486
  try:
508
- metadata_content = await _call_explicitly_async_block_method(
487
+ metadata_content = await call_explicitly_async_block_method(
509
488
  self.metadata_storage, "read_path", (key,), {}
510
489
  )
511
490
  if metadata_content is None:
@@ -516,7 +495,7 @@ class ResultStore(BaseModel):
516
495
  return False
517
496
  else:
518
497
  try:
519
- content = await _call_explicitly_async_block_method(
498
+ content = await call_explicitly_async_block_method(
520
499
  self.result_storage, "read_path", (key,), {}
521
500
  )
522
501
  if content is None:
@@ -601,7 +580,7 @@ class ResultStore(BaseModel):
601
580
  self.result_storage = await aget_default_result_storage()
602
581
 
603
582
  if self.metadata_storage is not None:
604
- metadata_content = await _call_explicitly_async_block_method(
583
+ metadata_content = await call_explicitly_async_block_method(
605
584
  self.metadata_storage,
606
585
  "read_path",
607
586
  (key,),
@@ -611,7 +590,7 @@ class ResultStore(BaseModel):
611
590
  assert metadata.storage_key is not None, (
612
591
  "Did not find storage key in metadata"
613
592
  )
614
- result_content = await _call_explicitly_async_block_method(
593
+ result_content = await call_explicitly_async_block_method(
615
594
  self.result_storage,
616
595
  "read_path",
617
596
  (metadata.storage_key,),
@@ -624,7 +603,7 @@ class ResultStore(BaseModel):
624
603
  )
625
604
  await emit_result_read_event(self, resolved_key_path)
626
605
  else:
627
- content = await _call_explicitly_async_block_method(
606
+ content = await call_explicitly_async_block_method(
628
607
  self.result_storage,
629
608
  "read_path",
630
609
  (key,),
@@ -806,13 +785,13 @@ class ResultStore(BaseModel):
806
785
 
807
786
  # If metadata storage is configured, write result and metadata separately
808
787
  if self.metadata_storage is not None:
809
- await _call_explicitly_async_block_method(
788
+ await call_explicitly_async_block_method(
810
789
  self.result_storage,
811
790
  "write_path",
812
791
  (result_record.metadata.storage_key,),
813
792
  {"content": result_record.serialize_result()},
814
793
  )
815
- await _call_explicitly_async_block_method(
794
+ await call_explicitly_async_block_method(
816
795
  self.metadata_storage,
817
796
  "write_path",
818
797
  (base_key,),
@@ -821,7 +800,7 @@ class ResultStore(BaseModel):
821
800
  await emit_result_write_event(self, result_record.metadata.storage_key)
822
801
  # Otherwise, write the result metadata and result together
823
802
  else:
824
- await _call_explicitly_async_block_method(
803
+ await call_explicitly_async_block_method(
825
804
  self.result_storage,
826
805
  "write_path",
827
806
  (result_record.metadata.storage_key,),
@@ -998,6 +977,11 @@ class ResultStore(BaseModel):
998
977
 
999
978
  # TODO: These two methods need to find a new home
1000
979
 
980
+ @deprecated_callable(
981
+ start_date=datetime(2025, 5, 10),
982
+ end_date=datetime(2025, 11, 10),
983
+ help="Use `store_parameters` from `prefect.task_worker` instead.",
984
+ )
1001
985
  @sync_compatible
1002
986
  async def store_parameters(self, identifier: UUID, parameters: dict[str, Any]):
1003
987
  record = ResultRecord(
@@ -1007,21 +991,26 @@ class ResultStore(BaseModel):
1007
991
  ),
1008
992
  )
1009
993
 
1010
- await _call_explicitly_async_block_method(
994
+ await call_explicitly_async_block_method(
1011
995
  self.result_storage,
1012
996
  "write_path",
1013
997
  (f"parameters/{identifier}",),
1014
998
  {"content": record.serialize()},
1015
999
  )
1016
1000
 
1001
+ @deprecated_callable(
1002
+ start_date=datetime(2025, 5, 10),
1003
+ end_date=datetime(2025, 11, 10),
1004
+ help="Use `read_parameters` from `prefect.task_worker` instead.",
1005
+ )
1017
1006
  @sync_compatible
1018
1007
  async def read_parameters(self, identifier: UUID) -> dict[str, Any]:
1019
1008
  if self.result_storage is None:
1020
1009
  raise ValueError(
1021
1010
  "Result store is not configured - must have a result storage block to read parameters"
1022
1011
  )
1023
- record: ResultRecord[Any] = ResultRecord.deserialize(
1024
- await _call_explicitly_async_block_method(
1012
+ record: ResultRecord[Any] = ResultRecord[Any].deserialize(
1013
+ await call_explicitly_async_block_method(
1025
1014
  self.result_storage,
1026
1015
  "read_path",
1027
1016
  (f"parameters/{identifier}",),
@@ -968,16 +968,9 @@ class Runner:
968
968
 
969
969
  pid = process_map_entry.get("pid") if process_map_entry else None
970
970
  if not pid:
971
- if flow_run.state:
972
- await self._run_on_cancellation_hooks(flow_run, flow_run.state)
973
- await self._mark_flow_run_as_cancelled(
974
- flow_run,
975
- state_updates={
976
- "message": (
977
- "Could not find process ID for flow run"
978
- " and cancellation cannot be guaranteed."
979
- )
980
- },
971
+ self._logger.debug(
972
+ "Received cancellation request for flow run %s but no process was found.",
973
+ flow_run.id,
981
974
  )
982
975
  return
983
976
 
@@ -12,6 +12,7 @@ bytes to an object respectively.
12
12
  """
13
13
 
14
14
  import base64
15
+ import io
15
16
  from typing import Any, ClassVar, Generic, Optional, Union, overload
16
17
 
17
18
  from pydantic import (
@@ -46,6 +47,14 @@ def prefect_json_object_encoder(obj: Any) -> Any:
46
47
  """
47
48
  if isinstance(obj, BaseException):
48
49
  return {"__exc_type__": to_qualified_name(obj.__class__), "message": str(obj)}
50
+ elif isinstance(obj, io.IOBase):
51
+ return {
52
+ "__class__": to_qualified_name(obj.__class__),
53
+ "data": (
54
+ f"<Prefect IOStream Placeholder: type={obj.__class__.__name__}, "
55
+ f"repr={repr(obj)} (original content not read)>"
56
+ ),
57
+ }
49
58
  else:
50
59
  return {
51
60
  "__class__": to_qualified_name(obj.__class__),