prefect-client 3.4.1.dev4__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.dev4 → prefect_client-3.4.2}/PKG-INFO +2 -2
  2. {prefect_client-3.4.1.dev4 → 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.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/bases.py +11 -1
  6. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/validators.py +0 -102
  7. prefect_client-3.4.2/src/prefect/_internal/uuid7.py +119 -0
  8. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/webhook.py +15 -7
  9. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/actions.py +13 -35
  10. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/objects.py +26 -22
  11. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/runner.py +3 -1
  12. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/filters.py +25 -11
  13. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/automations.py +3 -1
  14. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/events.py +3 -2
  15. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/flows.py +1 -1
  16. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/results.py +24 -35
  17. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/runner.py +3 -10
  18. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/serializers.py +9 -0
  19. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/workers.py +3 -2
  20. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/tasks.py +3 -2
  21. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_runners.py +2 -1
  22. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_worker.py +95 -14
  23. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/tasks.py +8 -3
  24. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/types/__init__.py +70 -36
  25. prefect_client-3.4.2/src/prefect/types/names.py +139 -0
  26. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/callables.py +4 -0
  27. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/base.py +32 -10
  28. prefect_client-3.4.1.dev4/src/prefect/_build_info.py +0 -5
  29. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/.gitignore +0 -0
  30. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/LICENSE +0 -0
  31. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/README.md +0 -0
  32. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/.prefectignore +0 -0
  33. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/__init__.py +0 -0
  34. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/__main__.py +0 -0
  35. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/__init__.py +0 -0
  36. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/bundles/__init__.py +0 -0
  37. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/bundles/execute.py +0 -0
  38. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/lineage.py +0 -0
  39. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/sla/__init__.py +0 -0
  40. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/sla/client.py +0 -0
  41. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/sla/objects.py +0 -0
  42. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/__init__.py +0 -0
  43. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/_logging.py +0 -0
  44. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/__init__.py +0 -0
  45. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  46. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  47. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/migration.py +0 -0
  48. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/__init__.py +0 -0
  49. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/api.py +0 -0
  50. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/calls.py +0 -0
  51. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  52. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  53. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/inspection.py +0 -0
  54. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/primitives.py +0 -0
  55. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/services.py +0 -0
  56. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/threads.py +0 -0
  57. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/waiters.py +0 -0
  58. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/integrations.py +0 -0
  59. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/__init__.py +0 -0
  60. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/schemas.py +0 -0
  61. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  62. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  63. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  64. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pytz.py +0 -0
  65. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/retries.py +0 -0
  66. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/__init__.py +0 -0
  67. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/fields.py +0 -0
  68. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/serializers.py +0 -0
  69. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_result_records.py +0 -0
  70. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_vendor/croniter/__init__.py +0 -0
  71. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_vendor/croniter/croniter.py +0 -0
  72. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_versioning.py +0 -0
  73. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_waiters.py +0 -0
  74. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/agent.py +0 -0
  75. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/artifacts.py +0 -0
  76. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/automations.py +0 -0
  77. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/__init__.py +0 -0
  78. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/abstract.py +0 -0
  79. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/core.py +0 -0
  80. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/fields.py +0 -0
  81. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/notifications.py +0 -0
  82. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/redis.py +0 -0
  83. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/system.py +0 -0
  84. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/cache_policies.py +0 -0
  85. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/__init__.py +0 -0
  86. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/base.py +0 -0
  87. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/cloud.py +0 -0
  88. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/collections.py +0 -0
  89. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/constants.py +0 -0
  90. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/__init__.py +0 -0
  91. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  92. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  93. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  94. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_automations/client.py +0 -0
  95. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  96. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  97. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  98. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  99. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  100. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  101. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  102. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  103. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  104. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  105. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  106. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  107. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  108. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flows/client.py +0 -0
  109. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  110. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_logs/client.py +0 -0
  111. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  112. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_variables/client.py +0 -0
  113. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  114. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  115. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/base.py +0 -0
  116. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/routes.py +0 -0
  117. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/__init__.py +0 -0
  118. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/filters.py +0 -0
  119. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/responses.py +0 -0
  120. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/schedules.py +0 -0
  121. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/sorting.py +0 -0
  122. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/subscriptions.py +0 -0
  123. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/types/__init__.py +0 -0
  124. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  125. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/utilities.py +0 -0
  126. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/__init__.py +0 -0
  127. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/_asyncio.py +0 -0
  128. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/_events.py +0 -0
  129. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/asyncio.py +0 -0
  130. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/context.py +0 -0
  131. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/services.py +0 -0
  132. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/sync.py +0 -0
  133. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/__init__.py +0 -0
  134. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  135. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/_events.py +0 -0
  136. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/asyncio.py +0 -0
  137. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/context.py +0 -0
  138. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/services.py +0 -0
  139. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/sync.py +0 -0
  140. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/context.py +0 -0
  141. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/__init__.py +0 -0
  142. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/base.py +0 -0
  143. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/deployments.py +0 -0
  144. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/flow_runs.py +0 -0
  145. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/schedules.py +0 -0
  146. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/__init__.py +0 -0
  147. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/core.py +0 -0
  148. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/pull.py +0 -0
  149. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/utility.py +0 -0
  150. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/docker/__init__.py +0 -0
  151. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/docker/docker_image.py +0 -0
  152. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/engine.py +0 -0
  153. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/__init__.py +0 -0
  154. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/actions.py +0 -0
  155. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/cli/__init__.py +0 -0
  156. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/cli/automations.py +0 -0
  157. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/clients.py +0 -0
  158. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/related.py +0 -0
  159. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/__init__.py +0 -0
  160. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  161. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/labelling.py +0 -0
  162. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/utilities.py +0 -0
  163. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/worker.py +0 -0
  164. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/exceptions.py +0 -0
  165. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/filesystems.py +0 -0
  166. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/flow_engine.py +0 -0
  167. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/flow_runs.py +0 -0
  168. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/futures.py +0 -0
  169. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/__init__.py +0 -0
  170. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/base.py +0 -0
  171. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  172. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  173. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  174. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  175. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  176. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  177. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/input/__init__.py +0 -0
  178. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/input/actions.py +0 -0
  179. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/input/run_input.py +0 -0
  180. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/__init__.py +0 -0
  181. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/filesystem.py +0 -0
  182. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/memory.py +0 -0
  183. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/protocol.py +0 -0
  184. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/__init__.py +0 -0
  185. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/configuration.py +0 -0
  186. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/filters.py +0 -0
  187. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/formatters.py +0 -0
  188. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/handlers.py +0 -0
  189. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/highlighters.py +0 -0
  190. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/loggers.py +0 -0
  191. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/logging.yml +0 -0
  192. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/main.py +0 -0
  193. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/plugins.py +0 -0
  194. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/py.typed +0 -0
  195. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/__init__.py +0 -0
  196. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/_observers.py +0 -0
  197. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/server.py +0 -0
  198. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/storage.py +0 -0
  199. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/submit.py +0 -0
  200. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/utils.py +0 -0
  201. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/__init__.py +0 -0
  202. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/deployment.py +0 -0
  203. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/flow_run.py +0 -0
  204. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/task_run.py +0 -0
  205. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/schedules.py +0 -0
  206. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/__init__.py +0 -0
  207. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/admin.py +0 -0
  208. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/artifacts.py +0 -0
  209. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/automations.py +0 -0
  210. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_capabilities.py +0 -0
  211. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_documents.py +0 -0
  212. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_schemas.py +0 -0
  213. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_types.py +0 -0
  214. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/clients.py +0 -0
  215. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/collections.py +0 -0
  216. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  217. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/concurrency_limits.py +0 -0
  218. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  219. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/csrf_token.py +0 -0
  220. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/dependencies.py +0 -0
  221. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/deployments.py +0 -0
  222. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/events.py +0 -0
  223. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/flow_run_states.py +0 -0
  224. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/flow_runs.py +0 -0
  225. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/flows.py +0 -0
  226. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/logs.py +0 -0
  227. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/middleware.py +0 -0
  228. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/root.py +0 -0
  229. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/run_history.py +0 -0
  230. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/saved_searches.py +0 -0
  231. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/server.py +0 -0
  232. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  233. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/task_run_states.py +0 -0
  234. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/task_runs.py +0 -0
  235. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/task_workers.py +0 -0
  236. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/templates.py +0 -0
  237. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/__init__.py +0 -0
  238. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/flow_runs.py +0 -0
  239. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/flows.py +0 -0
  240. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/schemas.py +0 -0
  241. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/task_runs.py +0 -0
  242. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/validation.py +0 -0
  243. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/variables.py +0 -0
  244. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/work_queues.py +0 -0
  245. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/__init__.py +0 -0
  246. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/base.py +0 -0
  247. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/constants.py +0 -0
  248. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/context.py +0 -0
  249. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/legacy.py +0 -0
  250. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/__init__.py +0 -0
  251. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/api.py +0 -0
  252. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/cli.py +0 -0
  253. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/client.py +0 -0
  254. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/cloud.py +0 -0
  255. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/deployments.py +0 -0
  256. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/experiments.py +0 -0
  257. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/flows.py +0 -0
  258. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/internal.py +0 -0
  259. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/logging.py +0 -0
  260. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/results.py +0 -0
  261. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/root.py +0 -0
  262. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/runner.py +0 -0
  263. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/__init__.py +0 -0
  264. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/api.py +0 -0
  265. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/database.py +0 -0
  266. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/deployments.py +0 -0
  267. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/ephemeral.py +0 -0
  268. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/events.py +0 -0
  269. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  270. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/root.py +0 -0
  271. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/services.py +0 -0
  272. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/tasks.py +0 -0
  273. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/ui.py +0 -0
  274. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/testing.py +0 -0
  275. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/worker.py +0 -0
  276. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/profiles.py +0 -0
  277. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/profiles.toml +0 -0
  278. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/sources.py +0 -0
  279. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/states.py +0 -0
  280. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_engine.py +0 -0
  281. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_runs.py +0 -0
  282. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/__init__.py +0 -0
  283. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/bootstrap.py +0 -0
  284. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/instrumentation.py +0 -0
  285. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/logging.py +0 -0
  286. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/processors.py +0 -0
  287. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/run_telemetry.py +0 -0
  288. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/services.py +0 -0
  289. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/transactions.py +0 -0
  290. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/types/_datetime.py +0 -0
  291. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/types/entrypoint.py +0 -0
  292. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/__init__.py +0 -0
  293. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_ast.py +0 -0
  294. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_deprecated.py +0 -0
  295. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_engine.py +0 -0
  296. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_git.py +0 -0
  297. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/annotations.py +0 -0
  298. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/asyncutils.py +0 -0
  299. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/collections.py +0 -0
  300. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/compat.py +0 -0
  301. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/context.py +0 -0
  302. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/dispatch.py +0 -0
  303. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/dockerutils.py +0 -0
  304. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/engine.py +0 -0
  305. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/filesystem.py +0 -0
  306. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/generics.py +0 -0
  307. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/hashing.py +0 -0
  308. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/importtools.py +0 -0
  309. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/math.py +0 -0
  310. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/names.py +0 -0
  311. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/processutils.py +0 -0
  312. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/pydantic.py +0 -0
  313. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/render_swagger.py +0 -0
  314. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  315. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  316. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/validation.py +0 -0
  317. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/services.py +0 -0
  318. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/slugify.py +0 -0
  319. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/templating.py +0 -0
  320. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/text.py +0 -0
  321. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/timeout.py +0 -0
  322. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/urls.py +0 -0
  323. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/visualization.py +0 -0
  324. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/variables.py +0 -0
  325. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/__init__.py +0 -0
  326. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/block.py +0 -0
  327. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/cloud.py +0 -0
  328. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/process.py +0 -0
  329. {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/server.py +0 -0
  330. {prefect_client-3.4.1.dev4 → 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.dev4
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 /
@@ -10,7 +10,6 @@ from __future__ import annotations
10
10
 
11
11
  import datetime
12
12
  import os
13
- import re
14
13
  import urllib.parse
15
14
  import warnings
16
15
  from collections.abc import Iterable, Mapping, MutableMapping
@@ -36,60 +35,6 @@ M = TypeVar("M", bound=Mapping[str, Any])
36
35
  MM = TypeVar("MM", bound=MutableMapping[str, Any])
37
36
 
38
37
 
39
- LOWERCASE_LETTERS_NUMBERS_AND_DASHES_ONLY_REGEX = "^[a-z0-9-]*$"
40
- LOWERCASE_LETTERS_NUMBERS_AND_UNDERSCORES_REGEX = "^[a-z0-9_]*$"
41
- SLUG_REGEX = "^[a-z0-9]+([_-]+[a-z0-9]+)*$"
42
-
43
-
44
- @overload
45
- def raise_on_name_alphanumeric_dashes_only(
46
- value: str, field_name: str = ...
47
- ) -> str: ...
48
-
49
-
50
- @overload
51
- def raise_on_name_alphanumeric_dashes_only(
52
- value: None, field_name: str = ...
53
- ) -> None: ...
54
-
55
-
56
- def raise_on_name_alphanumeric_dashes_only(
57
- value: Optional[str], field_name: str = "value"
58
- ) -> Optional[str]:
59
- if value is not None and not bool(
60
- re.match(LOWERCASE_LETTERS_NUMBERS_AND_DASHES_ONLY_REGEX, value)
61
- ):
62
- raise ValueError(
63
- f"{field_name} must only contain lowercase letters, numbers, and dashes."
64
- )
65
- return value
66
-
67
-
68
- @overload
69
- def raise_on_name_alphanumeric_underscores_only(
70
- value: str, field_name: str = ...
71
- ) -> str: ...
72
-
73
-
74
- @overload
75
- def raise_on_name_alphanumeric_underscores_only(
76
- value: None, field_name: str = ...
77
- ) -> None: ...
78
-
79
-
80
- def raise_on_name_alphanumeric_underscores_only(
81
- value: Optional[str], field_name: str = "value"
82
- ) -> Optional[str]:
83
- if value is not None and not re.match(
84
- LOWERCASE_LETTERS_NUMBERS_AND_UNDERSCORES_REGEX, value
85
- ):
86
- raise ValueError(
87
- f"{field_name} must only contain lowercase letters, numbers, and"
88
- " underscores."
89
- )
90
- return value
91
-
92
-
93
38
  def validate_values_conform_to_schema(
94
39
  values: Optional[Mapping[str, Any]],
95
40
  schema: Optional[Mapping[str, Any]],
@@ -611,50 +556,3 @@ def validate_working_dir(v: Optional[Path | str]) -> Optional[Path]:
611
556
  if isinstance(v, str):
612
557
  return relative_path_to_current_platform(v)
613
558
  return v
614
-
615
-
616
- ### UNCATEGORIZED VALIDATORS ###
617
-
618
- # the above categories seem to be getting a bit unwieldy, so this is a temporary
619
- # catch-all for validators until we organize these into files
620
-
621
-
622
- @overload
623
- def validate_block_document_name(value: str) -> str: ...
624
-
625
-
626
- @overload
627
- def validate_block_document_name(value: None) -> None: ...
628
-
629
-
630
- def validate_block_document_name(value: Optional[str]) -> Optional[str]:
631
- if value is not None:
632
- raise_on_name_alphanumeric_dashes_only(value, field_name="Block document name")
633
- return value
634
-
635
-
636
- def validate_artifact_key(value: str) -> str:
637
- raise_on_name_alphanumeric_dashes_only(value, field_name="Artifact key")
638
- return value
639
-
640
-
641
- @overload
642
- def validate_variable_name(value: str) -> str: ...
643
-
644
-
645
- @overload
646
- def validate_variable_name(value: None) -> None: ...
647
-
648
-
649
- def validate_variable_name(value: Optional[str]) -> Optional[str]:
650
- if value is not None:
651
- if not bool(re.match(SLUG_REGEX, value)):
652
- raise ValueError(
653
- "Variable name must only contain lowercase letters, numbers, dashes, and underscores"
654
- )
655
- return value
656
-
657
-
658
- def validate_block_type_slug(value: str):
659
- raise_on_name_alphanumeric_dashes_only(value, field_name="Block type slug")
660
- return value
@@ -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
+ )
@@ -12,12 +12,8 @@ from prefect._internal.schemas.bases import ActionBaseModel
12
12
  from prefect._internal.schemas.validators import (
13
13
  convert_to_strings,
14
14
  remove_old_deployment_fields,
15
- validate_artifact_key,
16
- validate_block_document_name,
17
- validate_block_type_slug,
18
15
  validate_name_present_on_nonanonymous_blocks,
19
16
  validate_schedule_max_scheduled_runs,
20
- validate_variable_name,
21
17
  )
22
18
  from prefect.client.schemas.objects import (
23
19
  StateDetails,
@@ -34,7 +30,6 @@ from prefect.client.schemas.schedules import (
34
30
  from prefect.schedules import Schedule
35
31
  from prefect.settings import PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS
36
32
  from prefect.types import (
37
- MAX_VARIABLE_NAME_LENGTH,
38
33
  DateTime,
39
34
  KeyValueLabelsField,
40
35
  Name,
@@ -45,6 +40,12 @@ from prefect.types import (
45
40
  PositiveInteger,
46
41
  StrictVariableValue,
47
42
  )
43
+ from prefect.types.names import (
44
+ ArtifactKey,
45
+ BlockDocumentName,
46
+ BlockTypeSlug,
47
+ VariableName,
48
+ )
48
49
  from prefect.utilities.collections import visit_collection
49
50
  from prefect.utilities.pydantic import get_class_fields_only
50
51
 
@@ -216,7 +217,7 @@ class DeploymentCreate(ActionBaseModel):
216
217
  flow_id: UUID = Field(..., description="The ID of the flow to deploy.")
217
218
  paused: Optional[bool] = Field(default=None)
218
219
  schedules: list[DeploymentScheduleCreate] = Field(
219
- default_factory=list,
220
+ default_factory=lambda: [],
220
221
  description="A list of schedules for the deployment.",
221
222
  )
222
223
  concurrency_limit: Optional[int] = Field(
@@ -537,7 +538,7 @@ class SavedSearchCreate(ActionBaseModel):
537
538
 
538
539
  name: str = Field(default=..., description="The name of the saved search.")
539
540
  filters: list[objects.SavedSearchFilter] = Field(
540
- default_factory=list, description="The filter set for the saved search."
541
+ default_factory=lambda: [], description="The filter set for the saved search."
541
542
  )
542
543
 
543
544
 
@@ -585,7 +586,7 @@ class BlockTypeCreate(ActionBaseModel):
585
586
  """Data used by the Prefect REST API to create a block type."""
586
587
 
587
588
  name: str = Field(default=..., description="A block type's name")
588
- slug: str = Field(default=..., description="A block type's slug")
589
+ slug: BlockTypeSlug = Field(default=..., description="A block type's slug")
589
590
  logo_url: Optional[objects.HttpUrl] = Field(
590
591
  default=None, description="Web URL for the block type's logo"
591
592
  )
@@ -601,9 +602,6 @@ class BlockTypeCreate(ActionBaseModel):
601
602
  description="A code snippet demonstrating use of the corresponding block",
602
603
  )
603
604
 
604
- # validators
605
- _validate_slug_format = field_validator("slug")(validate_block_type_slug)
606
-
607
605
 
608
606
  class BlockTypeUpdate(ActionBaseModel):
609
607
  """Data used by the Prefect REST API to update a block type."""
@@ -638,7 +636,7 @@ class BlockSchemaCreate(ActionBaseModel):
638
636
  class BlockDocumentCreate(ActionBaseModel):
639
637
  """Data used by the Prefect REST API to create a block document."""
640
638
 
641
- name: Optional[Name] = Field(
639
+ name: Optional[BlockDocumentName] = Field(
642
640
  default=None, description="The name of the block document"
643
641
  )
644
642
  data: dict[str, Any] = Field(
@@ -658,8 +656,6 @@ class BlockDocumentCreate(ActionBaseModel):
658
656
  ),
659
657
  )
660
658
 
661
- _validate_name_format = field_validator("name")(validate_block_document_name)
662
-
663
659
  @model_validator(mode="before")
664
660
  def validate_name_is_present_if_not_anonymous(
665
661
  cls, values: dict[str, Any]
@@ -814,7 +810,7 @@ class WorkQueueUpdate(ActionBaseModel):
814
810
  class ArtifactCreate(ActionBaseModel):
815
811
  """Data used by the Prefect REST API to create an artifact."""
816
812
 
817
- key: Optional[str] = Field(default=None)
813
+ key: Optional[ArtifactKey] = Field(default=None)
818
814
  type: Optional[str] = Field(default=None)
819
815
  description: Optional[str] = Field(default=None)
820
816
  data: Optional[Union[dict[str, Any], Any]] = Field(default=None)
@@ -822,8 +818,6 @@ class ArtifactCreate(ActionBaseModel):
822
818
  flow_run_id: Optional[UUID] = Field(default=None)
823
819
  task_run_id: Optional[UUID] = Field(default=None)
824
820
 
825
- _validate_artifact_format = field_validator("key")(validate_artifact_key)
826
-
827
821
 
828
822
  class ArtifactUpdate(ActionBaseModel):
829
823
  """Data used by the Prefect REST API to update an artifact."""
@@ -836,12 +830,7 @@ class ArtifactUpdate(ActionBaseModel):
836
830
  class VariableCreate(ActionBaseModel):
837
831
  """Data used by the Prefect REST API to create a Variable."""
838
832
 
839
- name: str = Field(
840
- default=...,
841
- description="The name of the variable",
842
- examples=["my_variable"],
843
- max_length=MAX_VARIABLE_NAME_LENGTH,
844
- )
833
+ name: VariableName = Field(default=...)
845
834
  value: StrictVariableValue = Field(
846
835
  default=...,
847
836
  description="The value of the variable",
@@ -849,19 +838,11 @@ class VariableCreate(ActionBaseModel):
849
838
  )
850
839
  tags: Optional[list[str]] = Field(default=None)
851
840
 
852
- # validators
853
- _validate_name_format = field_validator("name")(validate_variable_name)
854
-
855
841
 
856
842
  class VariableUpdate(ActionBaseModel):
857
843
  """Data used by the Prefect REST API to update a Variable."""
858
844
 
859
- name: Optional[str] = Field(
860
- default=None,
861
- description="The name of the variable",
862
- examples=["my_variable"],
863
- max_length=MAX_VARIABLE_NAME_LENGTH,
864
- )
845
+ name: Optional[VariableName] = Field(default=None)
865
846
  value: StrictVariableValue = Field(
866
847
  default=None,
867
848
  description="The value of the variable",
@@ -869,9 +850,6 @@ class VariableUpdate(ActionBaseModel):
869
850
  )
870
851
  tags: Optional[list[str]] = Field(default=None)
871
852
 
872
- # validators
873
- _validate_name_format = field_validator("name")(validate_variable_name)
874
-
875
853
 
876
854
  class GlobalConcurrencyLimitCreate(ActionBaseModel):
877
855
  """Data used by the Prefect REST API to create a global concurrency limit."""
@@ -15,10 +15,11 @@ 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 (
22
+ AfterValidator,
22
23
  ConfigDict,
23
24
  Discriminator,
24
25
  Field,
@@ -35,20 +36,23 @@ from typing_extensions import Literal, Self, TypeVar
35
36
 
36
37
  from prefect._internal.compatibility.async_dispatch import async_dispatch
37
38
  from prefect._internal.compatibility.migration import getattr_migration
38
- from prefect._internal.schemas.bases import ObjectBaseModel, PrefectBaseModel
39
+ from prefect._internal.schemas.bases import (
40
+ ObjectBaseModel,
41
+ PrefectBaseModel,
42
+ TimeSeriesBaseModel,
43
+ )
39
44
  from prefect._internal.schemas.fields import CreatedBy, UpdatedBy
40
45
  from prefect._internal.schemas.validators import (
41
46
  get_or_create_run_name,
42
47
  list_length_50_or_less,
43
- raise_on_name_alphanumeric_dashes_only,
44
48
  set_run_policy_deprecated_fields,
45
- validate_block_document_name,
46
49
  validate_default_queue_id_not_none,
47
50
  validate_max_metadata_length,
48
51
  validate_name_present_on_nonanonymous_blocks,
49
52
  validate_not_negative,
50
53
  validate_parent_and_ref_diff,
51
54
  )
55
+ from prefect._internal.uuid7 import uuid7
52
56
  from prefect._result_records import ResultRecordMetadata
53
57
  from prefect.client.schemas.schedules import SCHEDULE_TYPES
54
58
  from prefect.settings import PREFECT_CLOUD_API_URL, PREFECT_CLOUD_UI_URL
@@ -61,6 +65,10 @@ from prefect.types import (
61
65
  StrictVariableValue,
62
66
  )
63
67
  from prefect.types._datetime import DateTime, now
68
+ from prefect.types.names import (
69
+ BlockDocumentName,
70
+ raise_on_name_alphanumeric_dashes_only,
71
+ )
64
72
  from prefect.utilities.asyncutils import run_coro_as_sync
65
73
  from prefect.utilities.collections import AutoEnum, visit_collection
66
74
  from prefect.utilities.names import generate_slug
@@ -181,7 +189,7 @@ def data_discriminator(x: Any) -> str:
181
189
  return "Any"
182
190
 
183
191
 
184
- class State(ObjectBaseModel, Generic[R]):
192
+ class State(TimeSeriesBaseModel, ObjectBaseModel, Generic[R]):
185
193
  """
186
194
  The state of a run.
187
195
  """
@@ -412,7 +420,7 @@ class State(ObjectBaseModel, Generic[R]):
412
420
  """
413
421
  return self.model_copy(
414
422
  update={
415
- "id": uuid4(),
423
+ "id": uuid7(),
416
424
  "created": now("UTC"),
417
425
  "updated": now("UTC"),
418
426
  "timestamp": now("UTC"),
@@ -508,7 +516,7 @@ class FlowRunPolicy(PrefectBaseModel):
508
516
  return values
509
517
 
510
518
 
511
- class FlowRun(ObjectBaseModel):
519
+ class FlowRun(TimeSeriesBaseModel, ObjectBaseModel):
512
520
  name: str = Field(
513
521
  default_factory=lambda: generate_slug(2),
514
522
  description=(
@@ -764,7 +772,7 @@ class Constant(TaskRunInput):
764
772
  type: str
765
773
 
766
774
 
767
- class TaskRun(ObjectBaseModel):
775
+ class TaskRun(TimeSeriesBaseModel, ObjectBaseModel):
768
776
  name: str = Field(
769
777
  default_factory=lambda: generate_slug(2), examples=["my-task-run"]
770
778
  )
@@ -1000,7 +1008,7 @@ class BlockSchema(ObjectBaseModel):
1000
1008
  class BlockDocument(ObjectBaseModel):
1001
1009
  """An ORM representation of a block document."""
1002
1010
 
1003
- name: Optional[Name] = Field(
1011
+ name: Optional[BlockDocumentName] = Field(
1004
1012
  default=None,
1005
1013
  description=(
1006
1014
  "The block document's name. Not required for anonymous block documents."
@@ -1029,8 +1037,6 @@ class BlockDocument(ObjectBaseModel):
1029
1037
  ),
1030
1038
  )
1031
1039
 
1032
- _validate_name_format = field_validator("name")(validate_block_document_name)
1033
-
1034
1040
  @model_validator(mode="before")
1035
1041
  @classmethod
1036
1042
  def validate_name_is_present_if_not_anonymous(
@@ -1133,7 +1139,8 @@ class Deployment(ObjectBaseModel):
1133
1139
  default=None, description="The concurrency limit for the deployment."
1134
1140
  )
1135
1141
  schedules: list[DeploymentSchedule] = Field(
1136
- default_factory=list, description="A list of schedules for the deployment."
1142
+ default_factory=lambda: [],
1143
+ description="A list of schedules for the deployment.",
1137
1144
  )
1138
1145
  job_variables: dict[str, Any] = Field(
1139
1146
  default_factory=dict,
@@ -1219,7 +1226,7 @@ class ConcurrencyLimit(ObjectBaseModel):
1219
1226
  )
1220
1227
  concurrency_limit: int = Field(default=..., description="The concurrency limit.")
1221
1228
  active_slots: list[UUID] = Field(
1222
- default_factory=list,
1229
+ default_factory=lambda: [],
1223
1230
  description="A list of active run ids using a concurrency slot",
1224
1231
  )
1225
1232
 
@@ -1300,11 +1307,12 @@ class SavedSearch(ObjectBaseModel):
1300
1307
 
1301
1308
  name: str = Field(default=..., description="The name of the saved search.")
1302
1309
  filters: list[SavedSearchFilter] = Field(
1303
- default_factory=list, description="The filter set for the saved search."
1310
+ default_factory=lambda: [],
1311
+ description="The filter set for the saved search.",
1304
1312
  )
1305
1313
 
1306
1314
 
1307
- class Log(ObjectBaseModel):
1315
+ class Log(TimeSeriesBaseModel, ObjectBaseModel):
1308
1316
  """An ORM representation of log data."""
1309
1317
 
1310
1318
  name: str = Field(default=..., description="The logger name.")
@@ -1644,7 +1652,9 @@ class Variable(ObjectBaseModel):
1644
1652
 
1645
1653
  class FlowRunInput(ObjectBaseModel):
1646
1654
  flow_run_id: UUID = Field(description="The flow run ID associated with the input.")
1647
- key: str = Field(description="The key of the input.")
1655
+ key: Annotated[str, AfterValidator(raise_on_name_alphanumeric_dashes_only)] = Field(
1656
+ description="The key of the input."
1657
+ )
1648
1658
  value: str = Field(description="The value of the input.")
1649
1659
  sender: Optional[str] = Field(default=None, description="The sender of the input.")
1650
1660
 
@@ -1658,12 +1668,6 @@ class FlowRunInput(ObjectBaseModel):
1658
1668
  """
1659
1669
  return orjson.loads(self.value)
1660
1670
 
1661
- @field_validator("key", check_fields=False)
1662
- @classmethod
1663
- def validate_name_characters(cls, v: str) -> str:
1664
- raise_on_name_alphanumeric_dashes_only(v)
1665
- return v
1666
-
1667
1671
 
1668
1672
  class GlobalConcurrencyLimit(ObjectBaseModel):
1669
1673
  """An ORM representation of a global concurrency limit"""
@@ -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 = "."