prefect-client 3.0.0rc10__tar.gz → 3.0.0rc11__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 (205) hide show
  1. {prefect-client-3.0.0rc10/src/prefect_client.egg-info → prefect-client-3.0.0rc11}/PKG-INFO +1 -1
  2. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/requirements-client.txt +2 -2
  3. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/requirements-dev.txt +2 -1
  4. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/api.py +1 -1
  5. prefect-client-3.0.0rc11/src/prefect/_internal/retries.py +61 -0
  6. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/cloud.py +1 -1
  7. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/objects.py +1 -1
  8. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/concurrency/asyncio.py +3 -3
  9. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/concurrency/events.py +1 -1
  10. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/concurrency/services.py +3 -2
  11. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/concurrency/sync.py +19 -5
  12. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/context.py +8 -2
  13. prefect-client-3.0.0rc11/src/prefect/deployments/__init__.py +33 -0
  14. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/steps/pull.py +7 -0
  15. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/flow_engine.py +5 -7
  16. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/flows.py +179 -65
  17. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/futures.py +53 -7
  18. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/loggers.py +1 -1
  19. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runner/runner.py +93 -20
  20. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runner/server.py +20 -22
  21. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runner/submit.py +0 -8
  22. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runtime/flow_run.py +38 -3
  23. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/settings.py +9 -13
  24. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/task_worker.py +1 -1
  25. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/transactions.py +16 -0
  26. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/asyncutils.py +1 -0
  27. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/engine.py +34 -1
  28. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/workers/base.py +98 -208
  29. prefect-client-3.0.0rc11/src/prefect/workers/process.py +523 -0
  30. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/workers/server.py +27 -9
  31. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11/src/prefect_client.egg-info}/PKG-INFO +1 -1
  32. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect_client.egg-info/SOURCES.txt +1 -0
  33. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect_client.egg-info/requires.txt +2 -2
  34. prefect-client-3.0.0rc10/src/prefect/deployments/__init__.py +0 -20
  35. prefect-client-3.0.0rc10/src/prefect/workers/process.py +0 -265
  36. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/LICENSE +0 -0
  37. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/MANIFEST.in +0 -0
  38. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/README.md +0 -0
  39. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/requirements.txt +0 -0
  40. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/setup.cfg +0 -0
  41. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/setup.py +0 -0
  42. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/.prefectignore +0 -0
  43. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/__init__.py +0 -0
  44. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/__init__.py +0 -0
  45. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/_logging.py +0 -0
  46. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/compatibility/__init__.py +0 -0
  47. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  48. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/compatibility/experimental.py +0 -0
  49. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/compatibility/migration.py +0 -0
  50. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/__init__.py +0 -0
  51. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/calls.py +0 -0
  52. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  53. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  54. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/inspection.py +0 -0
  55. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/primitives.py +0 -0
  56. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/services.py +0 -0
  57. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/threads.py +0 -0
  58. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/concurrency/waiters.py +0 -0
  59. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/integrations.py +0 -0
  60. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/__init__.py +0 -0
  61. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
  62. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
  63. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/schemas.py +0 -0
  64. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  65. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  66. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  67. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/pytz.py +0 -0
  68. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/schemas/__init__.py +0 -0
  69. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/schemas/bases.py +0 -0
  70. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/schemas/fields.py +0 -0
  71. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/schemas/serializers.py +0 -0
  72. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_internal/schemas/validators.py +0 -0
  73. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/_version.py +0 -0
  74. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/agent.py +0 -0
  75. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/artifacts.py +0 -0
  76. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/automations.py +0 -0
  77. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/__init__.py +0 -0
  78. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/abstract.py +0 -0
  79. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/core.py +0 -0
  80. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/fields.py +0 -0
  81. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/notifications.py +0 -0
  82. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/redis.py +0 -0
  83. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/system.py +0 -0
  84. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/blocks/webhook.py +0 -0
  85. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/cache_policies.py +0 -0
  86. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/__init__.py +0 -0
  87. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/base.py +0 -0
  88. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/collections.py +0 -0
  89. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/constants.py +0 -0
  90. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/orchestration.py +0 -0
  91. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/__init__.py +0 -0
  92. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/actions.py +0 -0
  93. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/filters.py +0 -0
  94. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/responses.py +0 -0
  95. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/schedules.py +0 -0
  96. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/schemas/sorting.py +0 -0
  97. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/subscriptions.py +0 -0
  98. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/types/__init__.py +0 -0
  99. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/types/flexible_schedule_list.py +0 -0
  100. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/client/utilities.py +0 -0
  101. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/concurrency/__init__.py +0 -0
  102. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/base.py +0 -0
  103. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/deployments.py +0 -0
  104. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/flow_runs.py +0 -0
  105. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/runner.py +0 -0
  106. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/schedules.py +0 -0
  107. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/steps/__init__.py +0 -0
  108. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/steps/core.py +0 -0
  109. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/deployments/steps/utility.py +0 -0
  110. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/docker/__init__.py +0 -0
  111. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/docker/docker_image.py +0 -0
  112. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/engine.py +0 -0
  113. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/__init__.py +0 -0
  114. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/actions.py +0 -0
  115. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/cli/__init__.py +0 -0
  116. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/cli/automations.py +0 -0
  117. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/clients.py +0 -0
  118. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/filters.py +0 -0
  119. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/related.py +0 -0
  120. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/schemas/__init__.py +0 -0
  121. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/schemas/automations.py +0 -0
  122. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  123. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/schemas/events.py +0 -0
  124. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/schemas/labelling.py +0 -0
  125. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/utilities.py +0 -0
  126. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/events/worker.py +0 -0
  127. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/exceptions.py +0 -0
  128. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/filesystems.py +0 -0
  129. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/flow_runs.py +0 -0
  130. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/__init__.py +0 -0
  131. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/base.py +0 -0
  132. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  133. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  134. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  135. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  136. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  137. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/input/__init__.py +0 -0
  138. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/input/actions.py +0 -0
  139. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/input/run_input.py +0 -0
  140. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/__init__.py +0 -0
  141. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/configuration.py +0 -0
  142. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/filters.py +0 -0
  143. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/formatters.py +0 -0
  144. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/handlers.py +0 -0
  145. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/highlighters.py +0 -0
  146. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/logging/logging.yml +0 -0
  147. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/main.py +0 -0
  148. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/manifests.py +0 -0
  149. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/plugins.py +0 -0
  150. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/profiles.toml +0 -0
  151. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/py.typed +0 -0
  152. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/records/__init__.py +0 -0
  153. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/records/result_store.py +0 -0
  154. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/records/store.py +0 -0
  155. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/results.py +0 -0
  156. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runner/__init__.py +0 -0
  157. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runner/storage.py +0 -0
  158. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runner/utils.py +0 -0
  159. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runtime/__init__.py +0 -0
  160. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runtime/deployment.py +0 -0
  161. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/runtime/task_run.py +0 -0
  162. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/serializers.py +0 -0
  163. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  164. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  165. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/states.py +0 -0
  166. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/task_engine.py +0 -0
  167. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/task_runners.py +0 -0
  168. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/task_runs.py +0 -0
  169. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/tasks.py +0 -0
  170. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/types/__init__.py +0 -0
  171. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/types/entrypoint.py +0 -0
  172. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/__init__.py +0 -0
  173. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/annotations.py +0 -0
  174. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/callables.py +0 -0
  175. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/collections.py +0 -0
  176. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/compat.py +0 -0
  177. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/context.py +0 -0
  178. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/dispatch.py +0 -0
  179. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/dockerutils.py +0 -0
  180. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/filesystem.py +0 -0
  181. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/hashing.py +0 -0
  182. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/importtools.py +0 -0
  183. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/math.py +0 -0
  184. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/names.py +0 -0
  185. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/processutils.py +0 -0
  186. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/pydantic.py +0 -0
  187. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/render_swagger.py +0 -0
  188. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  189. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  190. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/schema_tools/validation.py +0 -0
  191. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/services.py +0 -0
  192. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/slugify.py +0 -0
  193. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/templating.py +0 -0
  194. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/text.py +0 -0
  195. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/timeout.py +0 -0
  196. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/urls.py +0 -0
  197. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/utilities/visualization.py +0 -0
  198. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/variables.py +0 -0
  199. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/workers/__init__.py +0 -0
  200. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/workers/block.py +0 -0
  201. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/workers/cloud.py +0 -0
  202. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect/workers/utilities.py +0 -0
  203. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect_client.egg-info/dependency_links.txt +0 -0
  204. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/src/prefect_client.egg-info/top_level.txt +0 -0
  205. {prefect-client-3.0.0rc10 → prefect-client-3.0.0rc11}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 3.0.0rc10
3
+ Version: 3.0.0rc11
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -1,4 +1,4 @@
1
- anyio >= 4.0.0, < 5.0.0
1
+ anyio >= 4.4.0, < 5.0.0
2
2
  asgi-lifespan >= 1.0, < 3.0
3
3
  cachetools >= 5.3, < 6.0
4
4
  cloudpickle >= 2.0, < 4.0
@@ -8,7 +8,7 @@ exceptiongroup >= 1.0.0
8
8
  fastapi >= 0.111.0, < 1.0.0
9
9
  fsspec >= 2022.5.0
10
10
  graphviz >= 0.20.1
11
- griffe >= 0.20.0
11
+ griffe >= 0.20.0, <0.48.0
12
12
  httpcore >=1.0.5, < 2.0.0
13
13
  httpx[http2] >= 0.23, != 0.23.2
14
14
  importlib_metadata >= 4.4; python_version < '3.10'
@@ -12,8 +12,9 @@ pre-commit
12
12
  pluggy >= 1.4.0
13
13
  pytest > 7, < 8 # Datadog's ddtrace does not support pytest 8 yet. See https://github.com/DataDog/dd-trace-py/issues/8220
14
14
  pytest-asyncio >= 0.18.2, != 0.22.0, < 0.23.0 # Cannot override event loop in 0.23.0. See https://github.com/pytest-dev/pytest-asyncio/issues/706 for more details.
15
- pytest-cov
16
15
  pytest-benchmark
16
+ pytest-codspeed
17
+ pytest-cov
17
18
  pytest-env
18
19
  pytest-flakefinder
19
20
  pytest-timeout
@@ -151,7 +151,7 @@ class from_async(_base):
151
151
  __call: Union[Callable[[], T], Call[T]],
152
152
  timeout: Optional[float] = None,
153
153
  done_callbacks: Optional[Iterable[Call]] = None,
154
- ) -> Call[T]:
154
+ ) -> T:
155
155
  call = _cast_to_call(__call)
156
156
  waiter = AsyncWaiter(call=call)
157
157
  for callback in done_callbacks or []:
@@ -0,0 +1,61 @@
1
+ import asyncio
2
+ from functools import wraps
3
+ from typing import Any, Callable, Tuple, Type
4
+
5
+ from prefect.logging.loggers import get_logger
6
+ from prefect.utilities.math import clamped_poisson_interval
7
+
8
+ logger = get_logger("retries")
9
+
10
+
11
+ def exponential_backoff_with_jitter(
12
+ attempt: int, base_delay: float, max_delay: float
13
+ ) -> float:
14
+ average_interval = min(base_delay * (2**attempt), max_delay)
15
+ return clamped_poisson_interval(average_interval, clamping_factor=0.3)
16
+
17
+
18
+ def retry_async_fn(
19
+ max_attempts: int = 3,
20
+ backoff_strategy: Callable[
21
+ [int, float, float], float
22
+ ] = exponential_backoff_with_jitter,
23
+ base_delay: float = 1,
24
+ max_delay: float = 10,
25
+ retry_on_exceptions: Tuple[Type[Exception], ...] = (Exception,),
26
+ ):
27
+ """A decorator for retrying an async function.
28
+
29
+ Args:
30
+ max_attempts: The maximum number of times to retry the function.
31
+ backoff_strategy: A function that takes in the number of attempts, the base
32
+ delay, and the maximum delay, and returns the delay to use for the next
33
+ attempt. Defaults to an exponential backoff with jitter.
34
+ base_delay: The base delay to use for the first attempt.
35
+ max_delay: The maximum delay to use for the last attempt.
36
+ retry_on_exceptions: A tuple of exception types to retry on. Defaults to
37
+ retrying on all exceptions.
38
+ """
39
+
40
+ def decorator(func):
41
+ @wraps(func)
42
+ async def wrapper(*args: Any, **kwargs: Any) -> Any:
43
+ for attempt in range(max_attempts):
44
+ try:
45
+ return await func(*args, **kwargs)
46
+ except retry_on_exceptions as e:
47
+ if attempt == max_attempts - 1:
48
+ logger.exception(
49
+ f"Function {func.__name__!r} failed after {max_attempts} attempts"
50
+ )
51
+ raise
52
+ delay = backoff_strategy(attempt, base_delay, max_delay)
53
+ logger.warning(
54
+ f"Attempt {attempt + 1} of function {func.__name__!r} failed with {type(e).__name__}. "
55
+ f"Retrying in {delay:.2f} seconds..."
56
+ )
57
+ await asyncio.sleep(delay)
58
+
59
+ return wrapper
60
+
61
+ return decorator
@@ -9,7 +9,7 @@ from starlette import status
9
9
  import prefect.context
10
10
  import prefect.settings
11
11
  from prefect.client.base import PrefectHttpxAsyncClient
12
- from prefect.client.schemas import Workspace
12
+ from prefect.client.schemas.objects import Workspace
13
13
  from prefect.exceptions import ObjectNotFound, PrefectException
14
14
  from prefect.settings import (
15
15
  PREFECT_API_KEY,
@@ -791,7 +791,7 @@ class TaskRun(ObjectBaseModel):
791
791
 
792
792
  state: Optional[State] = Field(
793
793
  default=None,
794
- description="The state of the flow run.",
794
+ description="The state of the task run.",
795
795
  examples=["State(type=StateType.COMPLETED)"],
796
796
  )
797
797
 
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
  from contextlib import asynccontextmanager
3
- from typing import List, Literal, Optional, Union, cast
3
+ from typing import AsyncGenerator, List, Literal, Optional, Union, cast
4
4
 
5
5
  import httpx
6
6
  import pendulum
@@ -34,7 +34,7 @@ async def concurrency(
34
34
  names: Union[str, List[str]],
35
35
  occupy: int = 1,
36
36
  timeout_seconds: Optional[float] = None,
37
- ):
37
+ ) -> AsyncGenerator[None, None]:
38
38
  """A context manager that acquires and releases concurrency slots from the
39
39
  given concurrency limits.
40
40
 
@@ -77,7 +77,7 @@ async def concurrency(
77
77
  _emit_concurrency_release_events(limits, occupy, emitted_events)
78
78
 
79
79
 
80
- async def rate_limit(names: Union[str, List[str]], occupy: int = 1):
80
+ async def rate_limit(names: Union[str, List[str]], occupy: int = 1) -> None:
81
81
  """Block execution until an `occupy` number of slots of the concurrency
82
82
  limits given in `names` are acquired. Requires that all given concurrency
83
83
  limits have a slot decay.
@@ -54,6 +54,6 @@ def _emit_concurrency_release_events(
54
54
  limits: List[MinimalConcurrencyLimitResponse],
55
55
  occupy: int,
56
56
  events: Dict[UUID, Optional[Event]],
57
- ):
57
+ ) -> None:
58
58
  for limit in limits:
59
59
  _emit_concurrency_event("released", limit, limits, occupy, events[limit.id])
@@ -3,6 +3,7 @@ import concurrent.futures
3
3
  from contextlib import asynccontextmanager
4
4
  from typing import (
5
5
  TYPE_CHECKING,
6
+ AsyncGenerator,
6
7
  FrozenSet,
7
8
  Optional,
8
9
  Tuple,
@@ -27,14 +28,14 @@ class ConcurrencySlotAcquisitionService(QueueService):
27
28
  self.concurrency_limit_names = sorted(list(concurrency_limit_names))
28
29
 
29
30
  @asynccontextmanager
30
- async def _lifespan(self):
31
+ async def _lifespan(self) -> AsyncGenerator[None, None]:
31
32
  async with get_client() as client:
32
33
  self._client = client
33
34
  yield
34
35
 
35
36
  async def _handle(
36
37
  self, item: Tuple[int, str, Optional[float], concurrent.futures.Future]
37
- ):
38
+ ) -> None:
38
39
  occupy, mode, timeout_seconds, future = item
39
40
  try:
40
41
  response = await self.acquire_slots(occupy, mode, timeout_seconds)
@@ -1,5 +1,15 @@
1
1
  from contextlib import contextmanager
2
- from typing import List, Optional, Union, cast
2
+ from typing import (
3
+ Any,
4
+ Awaitable,
5
+ Callable,
6
+ Generator,
7
+ List,
8
+ Optional,
9
+ TypeVar,
10
+ Union,
11
+ cast,
12
+ )
3
13
 
4
14
  import pendulum
5
15
 
@@ -22,13 +32,15 @@ from .events import (
22
32
  _emit_concurrency_release_events,
23
33
  )
24
34
 
35
+ T = TypeVar("T")
36
+
25
37
 
26
38
  @contextmanager
27
39
  def concurrency(
28
40
  names: Union[str, List[str]],
29
41
  occupy: int = 1,
30
42
  timeout_seconds: Optional[float] = None,
31
- ):
43
+ ) -> Generator[None, None, None]:
32
44
  """A context manager that acquires and releases concurrency slots from the
33
45
  given concurrency limits.
34
46
 
@@ -75,7 +87,7 @@ def concurrency(
75
87
  _emit_concurrency_release_events(limits, occupy, emitted_events)
76
88
 
77
89
 
78
- def rate_limit(names: Union[str, List[str]], occupy: int = 1):
90
+ def rate_limit(names: Union[str, List[str]], occupy: int = 1) -> None:
79
91
  """Block execution until an `occupy` number of slots of the concurrency
80
92
  limits given in `names` are acquired. Requires that all given concurrency
81
93
  limits have a slot decay.
@@ -91,11 +103,13 @@ def rate_limit(names: Union[str, List[str]], occupy: int = 1):
91
103
  _emit_concurrency_acquisition_events(limits, occupy)
92
104
 
93
105
 
94
- def _call_async_function_from_sync(fn, *args, **kwargs):
106
+ def _call_async_function_from_sync(
107
+ fn: Callable[..., Awaitable[T]], *args: Any, **kwargs: Any
108
+ ) -> T:
95
109
  loop = get_running_loop()
96
110
  call = create_call(fn, *args, **kwargs)
97
111
 
98
112
  if loop is not None:
99
113
  return from_sync.call_soon_in_loop_thread(call).result()
100
114
  else:
101
- return call()
115
+ return call() # type: ignore [return-value]
@@ -9,6 +9,7 @@ For more user-accessible information about the current run, see [`prefect.runtim
9
9
  import os
10
10
  import sys
11
11
  import warnings
12
+ import weakref
12
13
  from contextlib import ExitStack, contextmanager
13
14
  from contextvars import ContextVar, Token
14
15
  from pathlib import Path
@@ -17,6 +18,7 @@ from typing import (
17
18
  Any,
18
19
  Dict,
19
20
  Generator,
21
+ Mapping,
20
22
  Optional,
21
23
  Set,
22
24
  Type,
@@ -291,8 +293,12 @@ class EngineContext(RunContext):
291
293
  # Counter for flow pauses
292
294
  observed_flow_pauses: Dict[str, int] = Field(default_factory=dict)
293
295
 
294
- # Tracking for result from task runs in this flow run
295
- task_run_results: Dict[int, State] = Field(default_factory=dict)
296
+ # Tracking for result from task runs in this flow run for dependency tracking
297
+ # Holds the ID of the object returned by the task run and task run state
298
+ # This is a weakref dictionary to avoid undermining garbage collection
299
+ task_run_results: Mapping[int, State] = Field(
300
+ default_factory=weakref.WeakValueDictionary
301
+ )
296
302
 
297
303
  # Events worker to emit events to Prefect Cloud
298
304
  events: Optional[EventsWorker] = None
@@ -0,0 +1,33 @@
1
+ from typing import TYPE_CHECKING
2
+ from prefect._internal.compatibility.migration import getattr_migration
3
+
4
+
5
+ if TYPE_CHECKING:
6
+ from .flow_runs import run_deployment
7
+ from .base import initialize_project
8
+ from .runner import deploy
9
+
10
+ _public_api: dict[str, tuple[str, str]] = {
11
+ "initialize_project": (__spec__.parent, ".base"),
12
+ "run_deployment": (__spec__.parent, ".flow_runs"),
13
+ "deploy": (__spec__.parent, ".runner"),
14
+ }
15
+
16
+ # Declare API for type-checkers
17
+ __all__ = ["initialize_project", "deploy", "run_deployment"]
18
+
19
+
20
+ def __getattr__(attr_name: str) -> object:
21
+ dynamic_attr = _public_api.get(attr_name)
22
+ if dynamic_attr is None:
23
+ return getattr_migration(__name__)(attr_name)
24
+
25
+ package, module_name = dynamic_attr
26
+
27
+ from importlib import import_module
28
+
29
+ if module_name == "__module__":
30
+ return import_module(f".{attr_name}", package=package)
31
+ else:
32
+ module = import_module(module_name, package=package)
33
+ return getattr(module, attr_name)
@@ -6,6 +6,7 @@ import os
6
6
  from pathlib import Path
7
7
  from typing import TYPE_CHECKING, Any, Optional
8
8
 
9
+ from prefect._internal.retries import retry_async_fn
9
10
  from prefect.logging.loggers import get_logger
10
11
  from prefect.runner.storage import BlockStorageAdapter, GitRepository, RemoteStorage
11
12
  from prefect.utilities.asyncutils import sync_compatible
@@ -31,6 +32,12 @@ def set_working_directory(directory: str) -> dict:
31
32
  return dict(directory=directory)
32
33
 
33
34
 
35
+ @retry_async_fn(
36
+ max_attempts=3,
37
+ base_delay=1,
38
+ max_delay=10,
39
+ retry_on_exceptions=(RuntimeError,),
40
+ )
34
41
  @sync_compatible
35
42
  async def git_clone(
36
43
  repository: str,
@@ -7,7 +7,6 @@ from dataclasses import dataclass, field
7
7
  from typing import (
8
8
  Any,
9
9
  AsyncGenerator,
10
- Callable,
11
10
  Coroutine,
12
11
  Dict,
13
12
  Generator,
@@ -415,7 +414,7 @@ class FlowRunEngine(Generic[P, R]):
415
414
 
416
415
  return flow_run
417
416
 
418
- def call_hooks(self, state: Optional[State] = None) -> Iterable[Callable]:
417
+ def call_hooks(self, state: Optional[State] = None):
419
418
  if state is None:
420
419
  state = self.state
421
420
  flow = self.flow
@@ -613,11 +612,7 @@ class FlowRunEngine(Generic[P, R]):
613
612
 
614
613
  if self.state.is_running():
615
614
  self.call_hooks()
616
- try:
617
- yield
618
- finally:
619
- if self.state.is_final() or self.state.is_cancelling():
620
- self.call_hooks()
615
+ yield
621
616
 
622
617
  @contextmanager
623
618
  def run_context(self):
@@ -638,6 +633,9 @@ class FlowRunEngine(Generic[P, R]):
638
633
  except Exception as exc:
639
634
  self.logger.exception("Encountered exception during execution: %r", exc)
640
635
  self.handle_exception(exc)
636
+ finally:
637
+ if self.state.is_final() or self.state.is_cancelling():
638
+ self.call_hooks()
641
639
 
642
640
  def call_flow_fn(self) -> Union[R, Coroutine[Any, Any, R]]:
643
641
  """