prefect-client 3.4.7.dev3__tar.gz → 3.4.7.dev4__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 (338) hide show
  1. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/PKG-INFO +1 -1
  2. prefect_client-3.4.7.dev4/src/prefect/AGENTS.md +28 -0
  3. prefect_client-3.4.7.dev4/src/prefect/_build_info.py +5 -0
  4. prefect_client-3.4.7.dev4/src/prefect/_internal/websockets.py +106 -0
  5. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/clients.py +2 -76
  6. prefect_client-3.4.7.dev4/src/prefect/logging/clients.py +347 -0
  7. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/logs.py +20 -15
  8. prefect_client-3.4.7.dev3/src/prefect/AGENTS.md +0 -38
  9. prefect_client-3.4.7.dev3/src/prefect/_build_info.py +0 -5
  10. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/.gitignore +0 -0
  11. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/LICENSE +0 -0
  12. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/README.md +0 -0
  13. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/pyproject.toml +0 -0
  14. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/.prefectignore +0 -0
  15. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/__init__.py +0 -0
  16. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/__main__.py +0 -0
  17. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/__init__.py +0 -0
  18. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
  19. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
  20. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/lineage.py +0 -0
  21. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
  22. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/sla/client.py +0 -0
  23. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
  24. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/__init__.py +0 -0
  25. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/_logging.py +0 -0
  26. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
  27. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
  28. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
  29. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  30. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
  31. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
  32. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
  33. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
  34. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  35. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  36. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
  37. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
  38. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/services.py +0 -0
  39. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
  40. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
  41. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/integrations.py +0 -0
  42. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
  43. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
  44. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  45. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  46. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  47. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/pytz.py +0 -0
  48. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/retries.py +0 -0
  49. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
  50. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
  51. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
  52. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
  53. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/schemas/validators.py +0 -0
  54. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_internal/uuid7.py +0 -0
  55. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_result_records.py +0 -0
  56. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
  57. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
  58. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_versioning.py +0 -0
  59. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/_waiters.py +0 -0
  60. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/agent.py +0 -0
  61. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/artifacts.py +0 -0
  62. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/assets/__init__.py +0 -0
  63. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/assets/core.py +0 -0
  64. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/assets/materialize.py +0 -0
  65. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/automations.py +0 -0
  66. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/__init__.py +0 -0
  67. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/abstract.py +0 -0
  68. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/core.py +0 -0
  69. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/fields.py +0 -0
  70. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/notifications.py +0 -0
  71. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/redis.py +0 -0
  72. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/system.py +0 -0
  73. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/blocks/webhook.py +0 -0
  74. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/cache_policies.py +0 -0
  75. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/__init__.py +0 -0
  76. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/base.py +0 -0
  77. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/cloud.py +0 -0
  78. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/collections.py +0 -0
  79. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/constants.py +0 -0
  80. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
  81. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
  82. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
  83. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
  84. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
  85. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
  86. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
  87. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
  88. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
  89. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
  90. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
  91. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
  92. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
  93. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
  94. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
  95. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
  96. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
  97. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
  98. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
  99. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
  100. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
  101. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
  102. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
  103. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
  104. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
  105. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/base.py +0 -0
  106. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/orchestration/routes.py +0 -0
  107. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/__init__.py +0 -0
  108. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/actions.py +0 -0
  109. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/filters.py +0 -0
  110. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/objects.py +0 -0
  111. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/responses.py +0 -0
  112. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/schedules.py +0 -0
  113. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/schemas/sorting.py +0 -0
  114. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/subscriptions.py +0 -0
  115. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/types/__init__.py +0 -0
  116. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  117. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/client/utilities.py +0 -0
  118. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/__init__.py +0 -0
  119. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
  120. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/_events.py +0 -0
  121. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/asyncio.py +0 -0
  122. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/context.py +0 -0
  123. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/services.py +0 -0
  124. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/sync.py +0 -0
  125. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
  126. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
  127. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
  128. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
  129. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/context.py +0 -0
  130. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/services.py +0 -0
  131. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
  132. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/context.py +0 -0
  133. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/__init__.py +0 -0
  134. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/base.py +0 -0
  135. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/deployments.py +0 -0
  136. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/flow_runs.py +0 -0
  137. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/runner.py +0 -0
  138. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/schedules.py +0 -0
  139. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
  140. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/steps/core.py +0 -0
  141. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/steps/pull.py +0 -0
  142. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/deployments/steps/utility.py +0 -0
  143. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/docker/__init__.py +0 -0
  144. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/docker/docker_image.py +0 -0
  145. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/engine.py +0 -0
  146. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/__init__.py +0 -0
  147. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/actions.py +0 -0
  148. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/cli/__init__.py +0 -0
  149. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/cli/automations.py +0 -0
  150. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/filters.py +0 -0
  151. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/related.py +0 -0
  152. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/schemas/__init__.py +0 -0
  153. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/schemas/automations.py +0 -0
  154. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  155. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/schemas/events.py +0 -0
  156. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/schemas/labelling.py +0 -0
  157. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/utilities.py +0 -0
  158. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/events/worker.py +0 -0
  159. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/exceptions.py +0 -0
  160. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/filesystems.py +0 -0
  161. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/flow_engine.py +0 -0
  162. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/flow_runs.py +0 -0
  163. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/flows.py +0 -0
  164. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/futures.py +0 -0
  165. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/__init__.py +0 -0
  166. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/base.py +0 -0
  167. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  168. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  169. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
  170. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  171. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  172. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  173. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/input/__init__.py +0 -0
  174. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/input/actions.py +0 -0
  175. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/input/run_input.py +0 -0
  176. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/locking/__init__.py +0 -0
  177. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/locking/filesystem.py +0 -0
  178. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/locking/memory.py +0 -0
  179. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/locking/protocol.py +0 -0
  180. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/__init__.py +0 -0
  181. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/configuration.py +0 -0
  182. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/filters.py +0 -0
  183. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/formatters.py +0 -0
  184. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/handlers.py +0 -0
  185. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/highlighters.py +0 -0
  186. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/loggers.py +0 -0
  187. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/logging/logging.yml +0 -0
  188. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/main.py +0 -0
  189. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/plugins.py +0 -0
  190. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/py.typed +0 -0
  191. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/results.py +0 -0
  192. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/__init__.py +0 -0
  193. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/_observers.py +0 -0
  194. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/runner.py +0 -0
  195. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/server.py +0 -0
  196. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/storage.py +0 -0
  197. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/submit.py +0 -0
  198. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runner/utils.py +0 -0
  199. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runtime/__init__.py +0 -0
  200. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runtime/deployment.py +0 -0
  201. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runtime/flow_run.py +0 -0
  202. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/runtime/task_run.py +0 -0
  203. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/schedules.py +0 -0
  204. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/serializers.py +0 -0
  205. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/__init__.py +0 -0
  206. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/admin.py +0 -0
  207. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/artifacts.py +0 -0
  208. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/automations.py +0 -0
  209. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
  210. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/block_documents.py +0 -0
  211. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/block_schemas.py +0 -0
  212. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/block_types.py +0 -0
  213. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/clients.py +0 -0
  214. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/collections.py +0 -0
  215. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  216. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
  217. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
  218. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/csrf_token.py +0 -0
  219. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/dependencies.py +0 -0
  220. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/deployments.py +0 -0
  221. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/events.py +0 -0
  222. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
  223. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/flow_runs.py +0 -0
  224. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/flows.py +0 -0
  225. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/middleware.py +0 -0
  226. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/root.py +0 -0
  227. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/run_history.py +0 -0
  228. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/saved_searches.py +0 -0
  229. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/server.py +0 -0
  230. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  231. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/task_run_states.py +0 -0
  232. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/task_runs.py +0 -0
  233. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/task_workers.py +0 -0
  234. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/templates.py +0 -0
  235. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
  236. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
  237. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/ui/flows.py +0 -0
  238. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/ui/schemas.py +0 -0
  239. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
  240. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/validation.py +0 -0
  241. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/variables.py +0 -0
  242. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/work_queues.py +0 -0
  243. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/server/api/workers.py +0 -0
  244. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/__init__.py +0 -0
  245. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/base.py +0 -0
  246. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/constants.py +0 -0
  247. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/context.py +0 -0
  248. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/legacy.py +0 -0
  249. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/__init__.py +0 -0
  250. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/api.py +0 -0
  251. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/cli.py +0 -0
  252. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/client.py +0 -0
  253. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/cloud.py +0 -0
  254. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/deployments.py +0 -0
  255. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/experiments.py +0 -0
  256. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/flows.py +0 -0
  257. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/internal.py +0 -0
  258. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/logging.py +0 -0
  259. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/results.py +0 -0
  260. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/root.py +0 -0
  261. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/runner.py +0 -0
  262. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
  263. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/api.py +0 -0
  264. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/database.py +0 -0
  265. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
  266. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
  267. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/events.py +0 -0
  268. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
  269. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/logs.py +0 -0
  270. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/root.py +0 -0
  271. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/services.py +0 -0
  272. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
  273. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/server/ui.py +0 -0
  274. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/tasks.py +0 -0
  275. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/testing.py +0 -0
  276. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/models/worker.py +0 -0
  277. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/profiles.py +0 -0
  278. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/profiles.toml +0 -0
  279. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/settings/sources.py +0 -0
  280. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/states.py +0 -0
  281. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/task_engine.py +0 -0
  282. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/task_runners.py +0 -0
  283. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/task_runs.py +0 -0
  284. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/task_worker.py +0 -0
  285. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/tasks.py +0 -0
  286. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/__init__.py +0 -0
  287. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/bootstrap.py +0 -0
  288. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/instrumentation.py +0 -0
  289. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/logging.py +0 -0
  290. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/processors.py +0 -0
  291. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
  292. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/telemetry/services.py +0 -0
  293. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/transactions.py +0 -0
  294. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/types/__init__.py +0 -0
  295. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/types/_datetime.py +0 -0
  296. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/types/entrypoint.py +0 -0
  297. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/types/names.py +0 -0
  298. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/__init__.py +0 -0
  299. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/_ast.py +0 -0
  300. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/_deprecated.py +0 -0
  301. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/_engine.py +0 -0
  302. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/_git.py +0 -0
  303. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/annotations.py +0 -0
  304. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/asyncutils.py +0 -0
  305. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/callables.py +0 -0
  306. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/collections.py +0 -0
  307. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/compat.py +0 -0
  308. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/context.py +0 -0
  309. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/dispatch.py +0 -0
  310. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/dockerutils.py +0 -0
  311. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/engine.py +0 -0
  312. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/filesystem.py +0 -0
  313. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/generics.py +0 -0
  314. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/hashing.py +0 -0
  315. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/importtools.py +0 -0
  316. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/math.py +0 -0
  317. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/names.py +0 -0
  318. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/processutils.py +0 -0
  319. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/pydantic.py +0 -0
  320. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/render_swagger.py +0 -0
  321. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  322. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  323. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/schema_tools/validation.py +0 -0
  324. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/services.py +0 -0
  325. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/slugify.py +0 -0
  326. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/templating.py +0 -0
  327. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/text.py +0 -0
  328. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/timeout.py +0 -0
  329. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/urls.py +0 -0
  330. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/utilities/visualization.py +0 -0
  331. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/variables.py +0 -0
  332. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/workers/__init__.py +0 -0
  333. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/workers/base.py +0 -0
  334. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/workers/block.py +0 -0
  335. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/workers/cloud.py +0 -0
  336. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/workers/process.py +0 -0
  337. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/src/prefect/workers/server.py +0 -0
  338. {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev4}/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.7.dev3
3
+ Version: 3.4.7.dev4
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -0,0 +1,28 @@
1
+ # Core Prefect SDK
2
+
3
+ The foundation for building and executing workflows with Python.
4
+
5
+ ## Key Components
6
+
7
+ - **Flows & Tasks**: Workflow definition with `@flow` and `@task` decorators
8
+ - **States**: Execution status tracking (Pending, Running, Completed, Failed)
9
+ - **Context**: Runtime information and dependency injection
10
+ - **Results**: Task output persistence and retrieval
11
+ - **Deployments**: Packaging flows for scheduled/triggered execution
12
+ - **Blocks**: Reusable configuration for external systems
13
+
14
+ ## Main Modules
15
+
16
+ - `flows.py` - Flow lifecycle and execution
17
+ - `tasks.py` - Task definition and dependency resolution
18
+ - `engine.py` - Core execution engine
19
+ - `client/` - Server/Cloud API communication
20
+ - `deployments/` - Deployment management
21
+ - `blocks/` - Infrastructure and storage blocks
22
+
23
+ ## SDK-Specific Notes
24
+
25
+ - Async-first execution model with sync support
26
+ - Immutable flow/task definitions after creation
27
+ - State transitions handle retries and caching
28
+ - Backward compatibility required for public APIs
@@ -0,0 +1,5 @@
1
+ # Generated by versioningit
2
+ __version__ = "3.4.7.dev4"
3
+ __build_date__ = "2025-06-18 08:09:28.573646+00:00"
4
+ __git_commit__ = "f2a136e5b5fb96adfde1d9aa44fdedb5b11c97a0"
5
+ __dirty__ = False
@@ -0,0 +1,106 @@
1
+ """
2
+ Internal WebSocket proxy utilities for Prefect client connections.
3
+
4
+ This module provides shared WebSocket proxy connection logic and SSL configuration
5
+ to avoid duplication between events and logs clients.
6
+ """
7
+
8
+ import os
9
+ import ssl
10
+ from typing import Any, Generator, Optional
11
+ from urllib.parse import urlparse
12
+ from urllib.request import proxy_bypass
13
+
14
+ import certifi
15
+ from python_socks.async_.asyncio import Proxy
16
+ from typing_extensions import Self
17
+ from websockets.asyncio.client import ClientConnection, connect
18
+
19
+ from prefect.settings import get_current_settings
20
+
21
+
22
+ def create_ssl_context_for_websocket(uri: str) -> Optional[ssl.SSLContext]:
23
+ """Create SSL context for WebSocket connections based on URI scheme."""
24
+ u = urlparse(uri)
25
+
26
+ if u.scheme != "wss":
27
+ return None
28
+
29
+ if get_current_settings().api.tls_insecure_skip_verify:
30
+ # Create an unverified context for insecure connections
31
+ ctx = ssl.create_default_context()
32
+ ctx.check_hostname = False
33
+ ctx.verify_mode = ssl.CERT_NONE
34
+ return ctx
35
+ else:
36
+ # Create a verified context with the certificate file
37
+ cert_file = get_current_settings().api.ssl_cert_file
38
+ if not cert_file:
39
+ cert_file = certifi.where()
40
+ return ssl.create_default_context(cafile=cert_file)
41
+
42
+
43
+ class WebsocketProxyConnect(connect):
44
+ """
45
+ WebSocket connection class with proxy and SSL support.
46
+
47
+ Extends the websockets.asyncio.client.connect class to add HTTP/HTTPS
48
+ proxy support via environment variables, proxy bypass logic, and SSL
49
+ certificate verification.
50
+ """
51
+
52
+ def __init__(self: Self, uri: str, **kwargs: Any):
53
+ # super() is intentionally deferred to the _proxy_connect method
54
+ # to allow for the socket to be established first
55
+
56
+ self.uri = uri
57
+ self._kwargs = kwargs
58
+
59
+ u = urlparse(uri)
60
+ host = u.hostname
61
+
62
+ if not host:
63
+ raise ValueError(f"Invalid URI {uri}, no hostname found")
64
+
65
+ if u.scheme == "ws":
66
+ port = u.port or 80
67
+ proxy_url = os.environ.get("HTTP_PROXY")
68
+ elif u.scheme == "wss":
69
+ port = u.port or 443
70
+ proxy_url = os.environ.get("HTTPS_PROXY")
71
+ kwargs["server_hostname"] = host
72
+ else:
73
+ raise ValueError(
74
+ "Unsupported scheme %s. Expected 'ws' or 'wss'. " % u.scheme
75
+ )
76
+
77
+ self._proxy = (
78
+ Proxy.from_url(proxy_url) if proxy_url and not proxy_bypass(host) else None
79
+ )
80
+ self._host = host
81
+ self._port = port
82
+
83
+ # Configure SSL context for HTTPS connections
84
+ ssl_context = create_ssl_context_for_websocket(uri)
85
+ if ssl_context:
86
+ self._kwargs.setdefault("ssl", ssl_context)
87
+
88
+ async def _proxy_connect(self: Self) -> ClientConnection:
89
+ if self._proxy:
90
+ sock = await self._proxy.connect(
91
+ dest_host=self._host,
92
+ dest_port=self._port,
93
+ )
94
+ self._kwargs["sock"] = sock
95
+
96
+ super().__init__(self.uri, **self._kwargs)
97
+ proto = await self.__await_impl__()
98
+ return proto
99
+
100
+ def __await__(self: Self) -> Generator[Any, None, ClientConnection]:
101
+ return self._proxy_connect().__await__()
102
+
103
+
104
+ def websocket_connect(uri: str, **kwargs: Any) -> WebsocketProxyConnect:
105
+ """Create a WebSocket connection with proxy and SSL support."""
106
+ return WebsocketProxyConnect(uri, **kwargs)
@@ -1,7 +1,5 @@
1
1
  import abc
2
2
  import asyncio
3
- import os
4
- import ssl
5
3
  from datetime import timedelta
6
4
  from types import TracebackType
7
5
  from typing import (
@@ -9,7 +7,6 @@ from typing import (
9
7
  Any,
10
8
  ClassVar,
11
9
  Dict,
12
- Generator,
13
10
  List,
14
11
  MutableMapping,
15
12
  Optional,
@@ -17,18 +14,14 @@ from typing import (
17
14
  Type,
18
15
  cast,
19
16
  )
20
- from urllib.parse import urlparse
21
- from urllib.request import proxy_bypass
22
17
  from uuid import UUID
23
18
 
24
- import certifi
25
19
  import orjson
26
20
  from cachetools import TTLCache
27
21
  from prometheus_client import Counter
28
- from python_socks.async_.asyncio import Proxy
29
22
  from typing_extensions import Self
30
23
  from websockets import Subprotocol
31
- from websockets.asyncio.client import ClientConnection, connect
24
+ from websockets.asyncio.client import ClientConnection
32
25
  from websockets.exceptions import (
33
26
  ConnectionClosed,
34
27
  ConnectionClosedError,
@@ -36,13 +29,12 @@ from websockets.exceptions import (
36
29
  )
37
30
 
38
31
  import prefect.types._datetime
32
+ from prefect._internal.websockets import websocket_connect
39
33
  from prefect.events import Event
40
34
  from prefect.logging import get_logger
41
35
  from prefect.settings import (
42
36
  PREFECT_API_AUTH_STRING,
43
37
  PREFECT_API_KEY,
44
- PREFECT_API_SSL_CERT_FILE,
45
- PREFECT_API_TLS_INSECURE_SKIP_VERIFY,
46
38
  PREFECT_API_URL,
47
39
  PREFECT_CLOUD_API_URL,
48
40
  PREFECT_DEBUG_MODE,
@@ -94,72 +86,6 @@ def events_out_socket_from_api_url(url: str) -> str:
94
86
  return http_to_ws(url) + "/events/out"
95
87
 
96
88
 
97
- class WebsocketProxyConnect(connect):
98
- def __init__(self: Self, uri: str, **kwargs: Any):
99
- # super() is intentionally deferred to the _proxy_connect method
100
- # to allow for the socket to be established first
101
-
102
- self.uri = uri
103
- self._kwargs = kwargs
104
-
105
- u = urlparse(uri)
106
- host = u.hostname
107
-
108
- if not host:
109
- raise ValueError(f"Invalid URI {uri}, no hostname found")
110
-
111
- if u.scheme == "ws":
112
- port = u.port or 80
113
- proxy_url = os.environ.get("HTTP_PROXY")
114
- elif u.scheme == "wss":
115
- port = u.port or 443
116
- proxy_url = os.environ.get("HTTPS_PROXY")
117
- kwargs["server_hostname"] = host
118
- else:
119
- raise ValueError(
120
- "Unsupported scheme %s. Expected 'ws' or 'wss'. " % u.scheme
121
- )
122
-
123
- self._proxy = (
124
- Proxy.from_url(proxy_url) if proxy_url and not proxy_bypass(host) else None
125
- )
126
- self._host = host
127
- self._port = port
128
-
129
- if PREFECT_API_TLS_INSECURE_SKIP_VERIFY and u.scheme == "wss":
130
- # Create an unverified context for insecure connections
131
- ctx = ssl.create_default_context()
132
- ctx.check_hostname = False
133
- ctx.verify_mode = ssl.CERT_NONE
134
- self._kwargs.setdefault("ssl", ctx)
135
- elif u.scheme == "wss":
136
- cert_file = PREFECT_API_SSL_CERT_FILE.value()
137
- if not cert_file:
138
- cert_file = certifi.where()
139
- # Create a verified context with the certificate file
140
- ctx = ssl.create_default_context(cafile=cert_file)
141
- self._kwargs.setdefault("ssl", ctx)
142
-
143
- async def _proxy_connect(self: Self) -> ClientConnection:
144
- if self._proxy:
145
- sock = await self._proxy.connect(
146
- dest_host=self._host,
147
- dest_port=self._port,
148
- )
149
- self._kwargs["sock"] = sock
150
-
151
- super().__init__(self.uri, **self._kwargs)
152
- proto = await self.__await_impl__()
153
- return proto
154
-
155
- def __await__(self: Self) -> Generator[Any, None, ClientConnection]:
156
- return self._proxy_connect().__await__()
157
-
158
-
159
- def websocket_connect(uri: str, **kwargs: Any) -> WebsocketProxyConnect:
160
- return WebsocketProxyConnect(uri, **kwargs)
161
-
162
-
163
89
  def get_events_client(
164
90
  reconnection_attempts: int = 10,
165
91
  checkpoint_every: int = 700,
@@ -0,0 +1,347 @@
1
+ import asyncio
2
+ from datetime import timedelta
3
+ from types import TracebackType
4
+ from typing import (
5
+ TYPE_CHECKING,
6
+ Any,
7
+ MutableMapping,
8
+ Optional,
9
+ Tuple,
10
+ Type,
11
+ cast,
12
+ )
13
+ from uuid import UUID
14
+
15
+ import orjson
16
+ from cachetools import TTLCache
17
+ from prometheus_client import Counter
18
+ from typing_extensions import Self
19
+ from websockets import Subprotocol
20
+ from websockets.asyncio.client import ClientConnection
21
+ from websockets.exceptions import (
22
+ ConnectionClosed,
23
+ ConnectionClosedError,
24
+ ConnectionClosedOK,
25
+ )
26
+
27
+ from prefect._internal.websockets import (
28
+ create_ssl_context_for_websocket,
29
+ websocket_connect,
30
+ )
31
+ from prefect.client.schemas.objects import Log
32
+ from prefect.logging import get_logger
33
+ from prefect.settings import (
34
+ PREFECT_API_AUTH_STRING,
35
+ PREFECT_API_KEY,
36
+ PREFECT_API_URL,
37
+ PREFECT_CLOUD_API_URL,
38
+ PREFECT_SERVER_ALLOW_EPHEMERAL_MODE,
39
+ )
40
+ from prefect.types._datetime import now
41
+
42
+ if TYPE_CHECKING:
43
+ import logging
44
+
45
+ from prefect.client.schemas.filters import LogFilter
46
+
47
+ logger: "logging.Logger" = get_logger(__name__)
48
+
49
+ LOGS_OBSERVED = Counter(
50
+ "prefect_logs_observed",
51
+ "The number of logs observed by Prefect log subscribers",
52
+ labelnames=["client"],
53
+ )
54
+ LOG_WEBSOCKET_CONNECTIONS = Counter(
55
+ "prefect_log_websocket_connections",
56
+ (
57
+ "The number of times Prefect log clients have connected to a log stream, "
58
+ "broken down by direction (in/out) and connection (initial/reconnect)"
59
+ ),
60
+ labelnames=["client", "direction", "connection"],
61
+ )
62
+
63
+ SEEN_LOGS_SIZE = 500_000
64
+ SEEN_LOGS_TTL = 120
65
+
66
+
67
+ def http_to_ws(url: str) -> str:
68
+ return url.replace("https://", "wss://").replace("http://", "ws://").rstrip("/")
69
+
70
+
71
+ def logs_out_socket_from_api_url(url: str) -> str:
72
+ return http_to_ws(url) + "/logs/out"
73
+
74
+
75
+ def _get_api_url_and_key(
76
+ api_url: Optional[str], api_key: Optional[str]
77
+ ) -> Tuple[str, str]:
78
+ api_url = api_url or PREFECT_API_URL.value()
79
+ api_key = api_key or PREFECT_API_KEY.value()
80
+
81
+ if not api_url or not api_key:
82
+ raise ValueError(
83
+ "api_url and api_key must be provided or set in the Prefect configuration"
84
+ )
85
+
86
+ return api_url, api_key
87
+
88
+
89
+ def get_logs_subscriber(
90
+ filter: Optional["LogFilter"] = None,
91
+ reconnection_attempts: int = 10,
92
+ ) -> "PrefectLogsSubscriber":
93
+ """
94
+ Get a logs subscriber based on the current Prefect configuration.
95
+
96
+ Similar to get_events_subscriber, this automatically detects whether
97
+ you're using Prefect Cloud or OSS and returns the appropriate subscriber.
98
+ """
99
+ api_url = PREFECT_API_URL.value()
100
+
101
+ if isinstance(api_url, str) and api_url.startswith(PREFECT_CLOUD_API_URL.value()):
102
+ return PrefectCloudLogsSubscriber(
103
+ filter=filter, reconnection_attempts=reconnection_attempts
104
+ )
105
+ elif api_url:
106
+ return PrefectLogsSubscriber(
107
+ api_url=api_url,
108
+ filter=filter,
109
+ reconnection_attempts=reconnection_attempts,
110
+ )
111
+ elif PREFECT_SERVER_ALLOW_EPHEMERAL_MODE:
112
+ from prefect.server.api.server import SubprocessASGIServer
113
+
114
+ server = SubprocessASGIServer()
115
+ server.start()
116
+ return PrefectLogsSubscriber(
117
+ api_url=server.api_url,
118
+ filter=filter,
119
+ reconnection_attempts=reconnection_attempts,
120
+ )
121
+ else:
122
+ raise ValueError(
123
+ "No Prefect API URL provided. Please set PREFECT_API_URL to the address of a running Prefect server."
124
+ )
125
+
126
+
127
+ class PrefectLogsSubscriber:
128
+ """
129
+ Subscribes to a Prefect logs stream, yielding logs as they occur.
130
+
131
+ Example:
132
+
133
+ from prefect.logging.clients import PrefectLogsSubscriber
134
+ from prefect.client.schemas.filters import LogFilter, LogFilterLevel
135
+ import logging
136
+
137
+ filter = LogFilter(level=LogFilterLevel(ge_=logging.INFO))
138
+
139
+ async with PrefectLogsSubscriber(filter=filter) as subscriber:
140
+ async for log in subscriber:
141
+ print(log.timestamp, log.level, log.message)
142
+
143
+ """
144
+
145
+ _websocket: Optional[ClientConnection]
146
+ _filter: "LogFilter"
147
+ _seen_logs: MutableMapping[UUID, bool]
148
+
149
+ _api_key: Optional[str]
150
+ _auth_token: Optional[str]
151
+
152
+ def __init__(
153
+ self,
154
+ api_url: Optional[str] = None,
155
+ filter: Optional["LogFilter"] = None,
156
+ reconnection_attempts: int = 10,
157
+ ):
158
+ """
159
+ Args:
160
+ api_url: The base URL for a Prefect workspace
161
+ filter: Log filter to apply
162
+ reconnection_attempts: When the client is disconnected, how many times
163
+ the client should attempt to reconnect
164
+ """
165
+ self._api_key = None
166
+ self._auth_token = PREFECT_API_AUTH_STRING.value()
167
+
168
+ if not api_url:
169
+ api_url = cast(str, PREFECT_API_URL.value())
170
+
171
+ from prefect.client.schemas.filters import LogFilter
172
+
173
+ self._filter = filter or LogFilter() # type: ignore[call-arg]
174
+ self._seen_logs = TTLCache(maxsize=SEEN_LOGS_SIZE, ttl=SEEN_LOGS_TTL)
175
+
176
+ socket_url = logs_out_socket_from_api_url(api_url)
177
+
178
+ logger.debug("Connecting to %s", socket_url)
179
+
180
+ # Configure SSL context for the connection
181
+ ssl_context = create_ssl_context_for_websocket(socket_url)
182
+ connect_kwargs: dict[str, Any] = {"subprotocols": [Subprotocol("prefect")]}
183
+ if ssl_context:
184
+ connect_kwargs["ssl"] = ssl_context
185
+
186
+ self._connect = websocket_connect(socket_url, **connect_kwargs)
187
+ self._websocket = None
188
+ self._reconnection_attempts = reconnection_attempts
189
+ if self._reconnection_attempts < 0:
190
+ raise ValueError("reconnection_attempts must be a non-negative integer")
191
+
192
+ @property
193
+ def client_name(self) -> str:
194
+ return self.__class__.__name__
195
+
196
+ async def __aenter__(self) -> Self:
197
+ # Don't handle any errors in the initial connection, because these are most
198
+ # likely a permission or configuration issue that should propagate
199
+ try:
200
+ await self._reconnect()
201
+ finally:
202
+ LOG_WEBSOCKET_CONNECTIONS.labels(self.client_name, "out", "initial").inc()
203
+ return self
204
+
205
+ async def _reconnect(self) -> None:
206
+ logger.debug("Reconnecting...")
207
+ if self._websocket:
208
+ self._websocket = None
209
+ await self._connect.__aexit__(None, None, None)
210
+
211
+ self._websocket = await self._connect.__aenter__()
212
+
213
+ # make sure we have actually connected
214
+ logger.debug(" pinging...")
215
+ pong = await self._websocket.ping()
216
+ await pong
217
+
218
+ # Send authentication message - logs WebSocket requires auth handshake
219
+ auth_token = self._api_key or self._auth_token
220
+ auth_message = {"type": "auth", "token": auth_token}
221
+ logger.debug(" authenticating...")
222
+ await self._websocket.send(orjson.dumps(auth_message).decode())
223
+
224
+ # Wait for auth response
225
+ try:
226
+ message = orjson.loads(await self._websocket.recv())
227
+ logger.debug(" auth result %s", message)
228
+ assert message["type"] == "auth_success", message.get("reason", "")
229
+ except AssertionError as e:
230
+ raise Exception(
231
+ "Unable to authenticate to the log stream. Please ensure the "
232
+ "provided api_key or auth_token you are using is valid for this environment. "
233
+ f"Reason: {e.args[0]}"
234
+ )
235
+ except ConnectionClosedError as e:
236
+ reason = getattr(e.rcvd, "reason", None)
237
+ msg = "Unable to authenticate to the log stream. Please ensure the "
238
+ msg += "provided api_key or auth_token you are using is valid for this environment. "
239
+ msg += f"Reason: {reason}" if reason else ""
240
+ raise Exception(msg) from e
241
+
242
+ from prefect.client.schemas.filters import LogFilterTimestamp
243
+
244
+ current_time = now("UTC")
245
+ self._filter.timestamp = LogFilterTimestamp(
246
+ after_=current_time - timedelta(minutes=1), # type: ignore[arg-type]
247
+ before_=current_time + timedelta(days=365), # type: ignore[arg-type]
248
+ )
249
+
250
+ logger.debug(" filtering logs since %s...", self._filter.timestamp.after_)
251
+ filter_message = {
252
+ "type": "filter",
253
+ "filter": self._filter.model_dump(mode="json"),
254
+ }
255
+ await self._websocket.send(orjson.dumps(filter_message).decode())
256
+
257
+ async def __aexit__(
258
+ self,
259
+ exc_type: Optional[Type[BaseException]],
260
+ exc_val: Optional[BaseException],
261
+ exc_tb: Optional[TracebackType],
262
+ ) -> None:
263
+ self._websocket = None
264
+ await self._connect.__aexit__(exc_type, exc_val, exc_tb)
265
+
266
+ def __aiter__(self) -> Self:
267
+ return self
268
+
269
+ async def __anext__(self) -> Log:
270
+ assert self._reconnection_attempts >= 0
271
+ for i in range(self._reconnection_attempts + 1): # pragma: no branch
272
+ try:
273
+ # If we're here and the websocket is None, then we've had a failure in a
274
+ # previous reconnection attempt.
275
+ #
276
+ # Otherwise, after the first time through this loop, we're recovering
277
+ # from a ConnectionClosed, so reconnect now.
278
+ if not self._websocket or i > 0:
279
+ try:
280
+ await self._reconnect()
281
+ finally:
282
+ LOG_WEBSOCKET_CONNECTIONS.labels(
283
+ self.client_name, "out", "reconnect"
284
+ ).inc()
285
+ assert self._websocket
286
+
287
+ while True:
288
+ message = orjson.loads(await self._websocket.recv())
289
+ log: Log = Log.model_validate(message["log"])
290
+
291
+ if log.id in self._seen_logs:
292
+ continue
293
+ self._seen_logs[log.id] = True
294
+
295
+ try:
296
+ return log
297
+ finally:
298
+ LOGS_OBSERVED.labels(self.client_name).inc()
299
+
300
+ except ConnectionClosedOK:
301
+ logger.debug('Connection closed with "OK" status')
302
+ raise StopAsyncIteration
303
+ except ConnectionClosed:
304
+ logger.debug(
305
+ "Connection closed with %s/%s attempts",
306
+ i + 1,
307
+ self._reconnection_attempts,
308
+ )
309
+ if i == self._reconnection_attempts:
310
+ # this was our final chance, raise the most recent error
311
+ raise
312
+
313
+ if i > 2:
314
+ # let the first two attempts happen quickly in case this is just
315
+ # a standard load balancer timeout, but after that, just take a
316
+ # beat to let things come back around.
317
+ await asyncio.sleep(1)
318
+ raise StopAsyncIteration
319
+
320
+
321
+ class PrefectCloudLogsSubscriber(PrefectLogsSubscriber):
322
+ """Logs subscriber for Prefect Cloud"""
323
+
324
+ def __init__(
325
+ self,
326
+ api_url: Optional[str] = None,
327
+ api_key: Optional[str] = None,
328
+ filter: Optional["LogFilter"] = None,
329
+ reconnection_attempts: int = 10,
330
+ ):
331
+ """
332
+ Args:
333
+ api_url: The base URL for a Prefect Cloud workspace
334
+ api_key: The API key of an actor with the see_flows scope
335
+ filter: Log filter to apply
336
+ reconnection_attempts: When the client is disconnected, how many times
337
+ the client should attempt to reconnect
338
+ """
339
+ api_url, api_key = _get_api_url_and_key(api_url, api_key)
340
+
341
+ super().__init__(
342
+ api_url=api_url,
343
+ filter=filter,
344
+ reconnection_attempts=reconnection_attempts,
345
+ )
346
+
347
+ self._api_key = api_key