prefect-client 2.20.5__tar.gz → 2.20.7__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 (331) hide show
  1. {prefect_client-2.20.5/src/prefect_client.egg-info → prefect_client-2.20.7}/PKG-INFO +2 -2
  2. {prefect_client-2.20.5 → prefect_client-2.20.7}/requirements-client.txt +1 -1
  3. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/engine.py +22 -1
  4. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/logging.yml +1 -0
  5. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/settings.py +6 -1
  6. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/importtools.py +1 -0
  7. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/workers/base.py +6 -0
  8. {prefect_client-2.20.5 → prefect_client-2.20.7/src/prefect_client.egg-info}/PKG-INFO +2 -2
  9. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect_client.egg-info/requires.txt +1 -1
  10. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_tasks.py +85 -0
  11. {prefect_client-2.20.5 → prefect_client-2.20.7}/LICENSE +0 -0
  12. {prefect_client-2.20.5 → prefect_client-2.20.7}/MANIFEST.in +0 -0
  13. {prefect_client-2.20.5 → prefect_client-2.20.7}/README.md +0 -0
  14. {prefect_client-2.20.5 → prefect_client-2.20.7}/requirements-dev.txt +0 -0
  15. {prefect_client-2.20.5 → prefect_client-2.20.7}/requirements.txt +0 -0
  16. {prefect_client-2.20.5 → prefect_client-2.20.7}/setup.cfg +0 -0
  17. {prefect_client-2.20.5 → prefect_client-2.20.7}/setup.py +0 -0
  18. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/.prefectignore +0 -0
  19. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/__init__.py +0 -0
  20. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/__init__.py +0 -0
  21. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/_logging.py +0 -0
  22. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/compatibility/__init__.py +0 -0
  23. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  24. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/compatibility/experimental.py +0 -0
  25. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/__init__.py +0 -0
  26. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/api.py +0 -0
  27. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/calls.py +0 -0
  28. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  29. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  30. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/inspection.py +0 -0
  31. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/primitives.py +0 -0
  32. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/services.py +0 -0
  33. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/threads.py +0 -0
  34. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/concurrency/waiters.py +0 -0
  35. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/integrations.py +0 -0
  36. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/__init__.py +0 -0
  37. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/_base_model.py +0 -0
  38. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/_compat.py +0 -0
  39. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/_flags.py +0 -0
  40. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/_types.py +0 -0
  41. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
  42. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
  43. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/schemas.py +0 -0
  44. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/__init__.py +0 -0
  45. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/config_dict.py +0 -0
  46. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/field_validator.py +0 -0
  47. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_construct.py +0 -0
  48. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_copy.py +0 -0
  49. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_dump.py +0 -0
  50. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_dump_json.py +0 -0
  51. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_fields.py +0 -0
  52. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_fields_set.py +0 -0
  53. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_json_schema.py +0 -0
  54. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_rebuild.py +0 -0
  55. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_validate.py +0 -0
  56. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_validate_json.py +0 -0
  57. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/model_validator.py +0 -0
  58. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/utilities/type_adapter.py +0 -0
  59. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  60. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  61. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  62. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/pytz.py +0 -0
  63. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/schemas/__init__.py +0 -0
  64. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/schemas/bases.py +0 -0
  65. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/schemas/fields.py +0 -0
  66. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/schemas/serializers.py +0 -0
  67. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_internal/schemas/validators.py +0 -0
  68. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/__init__.py +0 -0
  69. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/__init__.py +0 -0
  70. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/applications.py +0 -0
  71. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/background.py +0 -0
  72. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/concurrency.py +0 -0
  73. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/datastructures.py +0 -0
  74. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
  75. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/dependencies/models.py +0 -0
  76. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/dependencies/utils.py +0 -0
  77. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/encoders.py +0 -0
  78. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/exception_handlers.py +0 -0
  79. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/exceptions.py +0 -0
  80. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/logger.py +0 -0
  81. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/__init__.py +0 -0
  82. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -0
  83. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/cors.py +0 -0
  84. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/gzip.py +0 -0
  85. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -0
  86. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/trustedhost.py +0 -0
  87. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/middleware/wsgi.py +0 -0
  88. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/openapi/__init__.py +0 -0
  89. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/openapi/constants.py +0 -0
  90. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/openapi/docs.py +0 -0
  91. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/openapi/models.py +0 -0
  92. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/openapi/utils.py +0 -0
  93. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/param_functions.py +0 -0
  94. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/params.py +0 -0
  95. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/py.typed +0 -0
  96. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/requests.py +0 -0
  97. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/responses.py +0 -0
  98. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/routing.py +0 -0
  99. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/__init__.py +0 -0
  100. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/api_key.py +0 -0
  101. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/base.py +0 -0
  102. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/http.py +0 -0
  103. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/oauth2.py +0 -0
  104. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -0
  105. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/security/utils.py +0 -0
  106. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/staticfiles.py +0 -0
  107. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/templating.py +0 -0
  108. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/testclient.py +0 -0
  109. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/types.py +0 -0
  110. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/utils.py +0 -0
  111. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/fastapi/websockets.py +0 -0
  112. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/__init__.py +0 -0
  113. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/_compat.py +0 -0
  114. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/_exception_handler.py +0 -0
  115. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/_utils.py +0 -0
  116. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/applications.py +0 -0
  117. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/authentication.py +0 -0
  118. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/background.py +0 -0
  119. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/concurrency.py +0 -0
  120. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/config.py +0 -0
  121. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/convertors.py +0 -0
  122. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/datastructures.py +0 -0
  123. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/endpoints.py +0 -0
  124. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/exceptions.py +0 -0
  125. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/formparsers.py +0 -0
  126. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/__init__.py +0 -0
  127. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/authentication.py +0 -0
  128. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/base.py +0 -0
  129. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/cors.py +0 -0
  130. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/errors.py +0 -0
  131. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/exceptions.py +0 -0
  132. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/gzip.py +0 -0
  133. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/httpsredirect.py +0 -0
  134. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/sessions.py +0 -0
  135. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/trustedhost.py +0 -0
  136. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/middleware/wsgi.py +0 -0
  137. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/py.typed +0 -0
  138. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/requests.py +0 -0
  139. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/responses.py +0 -0
  140. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/routing.py +0 -0
  141. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/schemas.py +0 -0
  142. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/staticfiles.py +0 -0
  143. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/status.py +0 -0
  144. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/templating.py +0 -0
  145. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/testclient.py +0 -0
  146. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/types.py +0 -0
  147. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_vendor/starlette/websockets.py +0 -0
  148. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/_version.py +0 -0
  149. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/agent.py +0 -0
  150. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/artifacts.py +0 -0
  151. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/automations.py +0 -0
  152. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/__init__.py +0 -0
  153. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/abstract.py +0 -0
  154. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/core.py +0 -0
  155. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/fields.py +0 -0
  156. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/kubernetes.py +0 -0
  157. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/notifications.py +0 -0
  158. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/system.py +0 -0
  159. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/blocks/webhook.py +0 -0
  160. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/__init__.py +0 -0
  161. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/base.py +0 -0
  162. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/cloud.py +0 -0
  163. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/collections.py +0 -0
  164. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/constants.py +0 -0
  165. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/orchestration.py +0 -0
  166. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/__init__.py +0 -0
  167. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/actions.py +0 -0
  168. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/filters.py +0 -0
  169. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/objects.py +0 -0
  170. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/responses.py +0 -0
  171. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/schedules.py +0 -0
  172. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/schemas/sorting.py +0 -0
  173. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/subscriptions.py +0 -0
  174. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/client/utilities.py +0 -0
  175. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/concurrency/__init__.py +0 -0
  176. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/concurrency/asyncio.py +0 -0
  177. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/concurrency/events.py +0 -0
  178. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/concurrency/services.py +0 -0
  179. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/concurrency/sync.py +0 -0
  180. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/context.py +0 -0
  181. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/__init__.py +0 -0
  182. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/base.py +0 -0
  183. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/deployments.py +0 -0
  184. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/runner.py +0 -0
  185. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/schedules.py +0 -0
  186. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/steps/__init__.py +0 -0
  187. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/steps/core.py +0 -0
  188. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/steps/pull.py +0 -0
  189. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deployments/steps/utility.py +0 -0
  190. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/__init__.py +0 -0
  191. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/data_documents.py +0 -0
  192. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/packaging/__init__.py +0 -0
  193. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/packaging/base.py +0 -0
  194. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/packaging/docker.py +0 -0
  195. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/packaging/file.py +0 -0
  196. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/packaging/orion.py +0 -0
  197. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/deprecated/packaging/serializers.py +0 -0
  198. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/__init__.py +0 -0
  199. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/actions.py +0 -0
  200. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/cli/__init__.py +0 -0
  201. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/cli/automations.py +0 -0
  202. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/clients.py +0 -0
  203. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/filters.py +0 -0
  204. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/instrument.py +0 -0
  205. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/related.py +0 -0
  206. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/schemas/__init__.py +0 -0
  207. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/schemas/automations.py +0 -0
  208. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  209. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/schemas/events.py +0 -0
  210. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/schemas/labelling.py +0 -0
  211. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/utilities.py +0 -0
  212. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/events/worker.py +0 -0
  213. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/exceptions.py +0 -0
  214. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/filesystems.py +0 -0
  215. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/flow_runs.py +0 -0
  216. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/flows.py +0 -0
  217. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/futures.py +0 -0
  218. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/__init__.py +0 -0
  219. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/base.py +0 -0
  220. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/container.py +0 -0
  221. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/kubernetes.py +0 -0
  222. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/process.py +0 -0
  223. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  224. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  225. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  226. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  227. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  228. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/input/__init__.py +0 -0
  229. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/input/actions.py +0 -0
  230. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/input/run_input.py +0 -0
  231. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/__init__.py +0 -0
  232. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/configuration.py +0 -0
  233. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/filters.py +0 -0
  234. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/formatters.py +0 -0
  235. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/handlers.py +0 -0
  236. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/highlighters.py +0 -0
  237. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/logging/loggers.py +0 -0
  238. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/manifests.py +0 -0
  239. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/new_flow_engine.py +0 -0
  240. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/new_task_engine.py +0 -0
  241. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/plugins.py +0 -0
  242. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/profiles.toml +0 -0
  243. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/py.typed +0 -0
  244. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/pydantic/__init__.py +0 -0
  245. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/pydantic/main.py +0 -0
  246. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/results.py +0 -0
  247. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runner/__init__.py +0 -0
  248. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runner/runner.py +0 -0
  249. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runner/server.py +0 -0
  250. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runner/storage.py +0 -0
  251. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runner/submit.py +0 -0
  252. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runner/utils.py +0 -0
  253. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runtime/__init__.py +0 -0
  254. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runtime/deployment.py +0 -0
  255. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runtime/flow_run.py +0 -0
  256. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/runtime/task_run.py +0 -0
  257. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/serializers.py +0 -0
  258. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  259. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  260. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/software/__init__.py +0 -0
  261. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/software/base.py +0 -0
  262. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/software/conda.py +0 -0
  263. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/software/pip.py +0 -0
  264. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/software/python.py +0 -0
  265. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/states.py +0 -0
  266. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/task_engine.py +0 -0
  267. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/task_runners.py +0 -0
  268. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/task_server.py +0 -0
  269. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/tasks.py +0 -0
  270. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/types/__init__.py +0 -0
  271. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/__init__.py +0 -0
  272. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/annotations.py +0 -0
  273. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/asyncutils.py +0 -0
  274. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/callables.py +0 -0
  275. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/collections.py +0 -0
  276. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/compat.py +0 -0
  277. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/context.py +0 -0
  278. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/dispatch.py +0 -0
  279. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/dockerutils.py +0 -0
  280. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/engine.py +0 -0
  281. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/filesystem.py +0 -0
  282. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/hashing.py +0 -0
  283. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/math.py +0 -0
  284. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/names.py +0 -0
  285. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/processutils.py +0 -0
  286. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/pydantic.py +0 -0
  287. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/render_swagger.py +0 -0
  288. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  289. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  290. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/schema_tools/validation.py +0 -0
  291. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/services.py +0 -0
  292. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/slugify.py +0 -0
  293. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/templating.py +0 -0
  294. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/text.py +0 -0
  295. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/timeout.py +0 -0
  296. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/utilities/visualization.py +0 -0
  297. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/variables.py +0 -0
  298. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/workers/__init__.py +0 -0
  299. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/workers/block.py +0 -0
  300. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/workers/process.py +0 -0
  301. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/workers/server.py +0 -0
  302. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect/workers/utilities.py +0 -0
  303. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect_client.egg-info/SOURCES.txt +0 -0
  304. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect_client.egg-info/dependency_links.txt +0 -0
  305. {prefect_client-2.20.5 → prefect_client-2.20.7}/src/prefect_client.egg-info/top_level.txt +0 -0
  306. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_artifacts.py +0 -0
  307. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_automations.py +0 -0
  308. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_background_tasks.py +0 -0
  309. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_context.py +0 -0
  310. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_deployments.py +0 -0
  311. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_engine.py +0 -0
  312. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_exceptions.py +0 -0
  313. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_filesystems.py +0 -0
  314. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_flow_runs.py +0 -0
  315. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_flows.py +0 -0
  316. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_flows_compat.py +0 -0
  317. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_futures.py +0 -0
  318. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_highlighters.py +0 -0
  319. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_import_interceptor.py +0 -0
  320. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_log_prints.py +0 -0
  321. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_logging.py +0 -0
  322. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_new_flow_engine.py +0 -0
  323. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_new_task_engine.py +0 -0
  324. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_plugins.py +0 -0
  325. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_serializers.py +0 -0
  326. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_settings.py +0 -0
  327. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_states.py +0 -0
  328. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_task_runners.py +0 -0
  329. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_task_server.py +0 -0
  330. {prefect_client-2.20.5 → prefect_client-2.20.7}/tests/test_variables.py +0 -0
  331. {prefect_client-2.20.5 → prefect_client-2.20.7}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 2.20.5
3
+ Version: 2.20.7
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -43,7 +43,7 @@ Requires-Dist: packaging<24.3,>=21.3
43
43
  Requires-Dist: pathspec>=0.8.0
44
44
  Requires-Dist: pendulum<3.0; python_version < "3.12"
45
45
  Requires-Dist: pendulum<4,>=3.0.0; python_version >= "3.12"
46
- Requires-Dist: pydantic[email]!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.10.0
46
+ Requires-Dist: pydantic[email]!=2.0.0,!=2.0.1,!=2.1.0,<2.9.0,>=1.10.0
47
47
  Requires-Dist: pydantic_core<3.0.0,>=2.12.0
48
48
  Requires-Dist: python_dateutil<3.0.0,>=2.8.2
49
49
  Requires-Dist: python-slugify<9.0,>=5.0
@@ -21,7 +21,7 @@ pathspec >= 0.8.0
21
21
  pendulum < 3.0; python_version < '3.12'
22
22
  pendulum >= 3.0.0, <4; python_version >= '3.12'
23
23
  # the version constraints for pydantic are merged with those from fastapi 0.103.2
24
- pydantic[email]>=1.10.0,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0
24
+ pydantic[email]>=1.10.0,!=2.0.0,!=2.0.1,!=2.1.0,<2.9.0
25
25
  pydantic_core >= 2.12.0, < 3.0.0
26
26
  python_dateutil >= 2.8.2, < 3.0.0
27
27
  python-slugify >= 5.0, < 9.0
@@ -167,6 +167,7 @@ from prefect.results import ResultFactory, UnknownResult
167
167
  from prefect.settings import (
168
168
  PREFECT_DEBUG_MODE,
169
169
  PREFECT_EXPERIMENTAL_ENABLE_NEW_ENGINE,
170
+ PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED,
170
171
  PREFECT_TASK_INTROSPECTION_WARN_THRESHOLD,
171
172
  PREFECT_TASKS_REFRESH_CACHE,
172
173
  PREFECT_UI_URL,
@@ -2117,6 +2118,19 @@ async def orchestrate_task_run(
2117
2118
  # flag to ensure we only update the task run name once
2118
2119
  run_name_set = False
2119
2120
 
2121
+ run_on_completion_hooks_on_cached = (
2122
+ PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED
2123
+ and state.is_completed()
2124
+ and state.name == "Cached"
2125
+ )
2126
+
2127
+ if run_on_completion_hooks_on_cached:
2128
+ await _run_task_hooks(
2129
+ task=task,
2130
+ task_run=task_run,
2131
+ state=state,
2132
+ )
2133
+
2120
2134
  # Only run the task if we enter a `RUNNING` state
2121
2135
  while state.is_running():
2122
2136
  # Retrieve the latest metadata for the task run context
@@ -2326,9 +2340,16 @@ async def _run_task_hooks(task: Task, task_run: TaskRun, state: State) -> None:
2326
2340
  catch and log any errors that occur.
2327
2341
  """
2328
2342
  hooks = None
2343
+ run_on_completion_hooks_on_cached = (
2344
+ PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED
2345
+ and state.is_completed()
2346
+ and state.name == "Cached"
2347
+ )
2329
2348
  if state.is_failed() and task.on_failure:
2330
2349
  hooks = task.on_failure
2331
- elif state.is_completed() and task.on_completion:
2350
+ elif (
2351
+ state.is_completed() or run_on_completion_hooks_on_cached
2352
+ ) and task.on_completion:
2332
2353
  hooks = task.on_completion
2333
2354
 
2334
2355
  if hooks:
@@ -77,6 +77,7 @@ loggers:
77
77
  prefect.extra:
78
78
  level: "${PREFECT_LOGGING_LEVEL}"
79
79
  handlers: [api]
80
+ propagate: false
80
81
 
81
82
  prefect.flow_runs:
82
83
  level: NOTSET
@@ -649,7 +649,7 @@ PREFECT_API_KEY = Setting(
649
649
  )
650
650
  """API key used to authenticate with a the Prefect API. Defaults to `None`."""
651
651
 
652
- PREFECT_API_ENABLE_HTTP2 = Setting(bool, default=True)
652
+ PREFECT_API_ENABLE_HTTP2 = Setting(bool, default=False)
653
653
  """
654
654
  If true, enable support for HTTP/2 for communicating with an API.
655
655
 
@@ -1759,6 +1759,11 @@ PREFECT_API_EVENTS_RELATED_RESOURCE_CACHE_TTL = Setting(
1759
1759
  How long to cache related resource data for emitting server-side vents
1760
1760
  """
1761
1761
 
1762
+ PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED = Setting(bool, default=False)
1763
+ """
1764
+ Whether or not to run on_completion hooks on cached task runs.
1765
+ """
1766
+
1762
1767
 
1763
1768
  def automation_settings_enabled() -> bool:
1764
1769
  """
@@ -399,6 +399,7 @@ def safe_load_namespace(
399
399
  # Save original sys.path and modify it
400
400
  original_sys_path = sys.path.copy()
401
401
  sys.path.insert(0, parent_dir)
402
+ sys.path.insert(0, file_dir)
402
403
 
403
404
  # Create a temporary module for import context
404
405
  temp_module = ModuleType(package_name)
@@ -139,6 +139,12 @@ class BaseJobConfiguration(BaseModel):
139
139
  )
140
140
  variables.update(values)
141
141
 
142
+ # deep merge `env`
143
+ if isinstance(job_config.get("env"), dict) and (
144
+ hardcoded_env := variables.get("env")
145
+ ):
146
+ job_config["env"] = {**hardcoded_env, **job_config.get("env", {})}
147
+
142
148
  populated_configuration = apply_values(template=job_config, values=variables)
143
149
  populated_configuration = await resolve_block_document_references(
144
150
  template=populated_configuration, client=client
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 2.20.5
3
+ Version: 2.20.7
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -43,7 +43,7 @@ Requires-Dist: packaging<24.3,>=21.3
43
43
  Requires-Dist: pathspec>=0.8.0
44
44
  Requires-Dist: pendulum<3.0; python_version < "3.12"
45
45
  Requires-Dist: pendulum<4,>=3.0.0; python_version >= "3.12"
46
- Requires-Dist: pydantic[email]!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.10.0
46
+ Requires-Dist: pydantic[email]!=2.0.0,!=2.0.1,!=2.1.0,<2.9.0,>=1.10.0
47
47
  Requires-Dist: pydantic_core<3.0.0,>=2.12.0
48
48
  Requires-Dist: python_dateutil<3.0.0,>=2.8.2
49
49
  Requires-Dist: python-slugify<9.0,>=5.0
@@ -16,7 +16,7 @@ jsonschema<5.0.0,>=4.0.0
16
16
  orjson<4.0,>=3.7
17
17
  packaging<24.3,>=21.3
18
18
  pathspec>=0.8.0
19
- pydantic[email]!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.10.0
19
+ pydantic[email]!=2.0.0,!=2.0.1,!=2.1.0,<2.9.0,>=1.10.0
20
20
  pydantic_core<3.0.0,>=2.12.0
21
21
  python_dateutil<3.0.0,>=2.8.2
22
22
  python-slugify<9.0,>=5.0
@@ -29,6 +29,7 @@ from prefect.server import models
29
29
  from prefect.settings import (
30
30
  PREFECT_DEBUG_MODE,
31
31
  PREFECT_EXPERIMENTAL_ENABLE_NEW_ENGINE,
32
+ PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED,
32
33
  PREFECT_TASK_DEFAULT_RETRIES,
33
34
  PREFECT_TASKS_REFRESH_CACHE,
34
35
  temporary_settings,
@@ -3767,6 +3768,90 @@ class TestTaskHooksOnCompletion:
3767
3768
  assert my_mock.call_args_list == [call(), call()]
3768
3769
 
3769
3770
 
3771
+ class TestOnCompletionHooksForCachedTasks:
3772
+ @pytest.mark.parametrize("run_hooks_on_cached", [True, False])
3773
+ def test_on_completion_hooks_for_cached_tasks(self, run_hooks_on_cached):
3774
+ my_mock = MagicMock()
3775
+
3776
+ def completed1(task, task_run, state):
3777
+ my_mock("completed1")
3778
+
3779
+ def completed2(task, task_run, state):
3780
+ my_mock("completed2")
3781
+
3782
+ @task(
3783
+ cache_key_fn=lambda *_: "cache_2",
3784
+ cache_expiration=datetime.timedelta(seconds=5),
3785
+ on_completion=[completed1, completed2],
3786
+ )
3787
+ def cached_task():
3788
+ return "cached_result"
3789
+
3790
+ @flow
3791
+ def test_flow():
3792
+ return cached_task._run()
3793
+
3794
+ with temporary_settings(
3795
+ {PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED: run_hooks_on_cached}
3796
+ ):
3797
+ # First run to cache the result
3798
+ state = test_flow()
3799
+ assert my_mock.call_args_list == [call("completed1"), call("completed2")]
3800
+ assert not (state.is_completed() and state.name == "Cached")
3801
+
3802
+ my_mock.reset_mock()
3803
+
3804
+ # Second run to test the hooks behavior
3805
+ state = test_flow()
3806
+ assert state.is_completed() and state.name == "Cached"
3807
+ if run_hooks_on_cached:
3808
+ assert my_mock.call_args_list == [
3809
+ call("completed1"),
3810
+ call("completed2"),
3811
+ ]
3812
+ else:
3813
+ assert my_mock.call_args_list == []
3814
+
3815
+ @pytest.mark.parametrize("run_hooks_on_cached", [True, False])
3816
+ def test_exception_in_on_completion_hook_for_cached_task(
3817
+ self, caplog, run_hooks_on_cached
3818
+ ):
3819
+ def failing_hook(task, task_run, state):
3820
+ raise ValueError("Hook failed")
3821
+
3822
+ @task(
3823
+ cache_key_fn=lambda *_: "cache_3",
3824
+ cache_expiration=datetime.timedelta(seconds=5),
3825
+ on_completion=[failing_hook],
3826
+ )
3827
+ def cached_task():
3828
+ return "cached_result"
3829
+
3830
+ @flow
3831
+ def test_flow():
3832
+ return cached_task._run()
3833
+
3834
+ with temporary_settings(
3835
+ {PREFECT_RUN_ON_COMPLETION_HOOKS_ON_CACHED: run_hooks_on_cached}
3836
+ ):
3837
+ # First run to cache the result
3838
+ state = test_flow()
3839
+ assert state.result() == "cached_result"
3840
+ assert not (state.is_completed() and state.name == "Cached")
3841
+
3842
+ caplog.clear()
3843
+
3844
+ # Second run to test the hook behavior
3845
+ state = test_flow()
3846
+ assert state.is_completed() and state.name == "Cached"
3847
+ assert state.result() == "cached_result"
3848
+
3849
+ if run_hooks_on_cached:
3850
+ assert "ValueError: Hook failed" in caplog.text
3851
+ else:
3852
+ assert "ValueError: Hook failed" not in caplog.text
3853
+
3854
+
3770
3855
  class TestTaskHooksOnFailure:
3771
3856
  def test_noniterable_hook_raises(self):
3772
3857
  def failure_hook():
File without changes