prefect-client 2.20.2__tar.gz → 2.20.5__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.2/src/prefect_client.egg-info → prefect_client-2.20.5}/PKG-INFO +4 -4
  2. {prefect_client-2.20.2 → prefect_client-2.20.5}/requirements-client.txt +3 -3
  3. {prefect_client-2.20.2 → prefect_client-2.20.5}/requirements-dev.txt +1 -3
  4. {prefect_client-2.20.2 → prefect_client-2.20.5}/requirements.txt +4 -5
  5. prefect_client-2.20.5/src/prefect/_internal/integrations.py +7 -0
  6. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/core.py +43 -37
  7. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/orchestration.py +20 -1
  8. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/core.py +6 -0
  9. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/engine.py +16 -7
  10. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/runner.py +7 -4
  11. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/tasks.py +10 -1
  12. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/callables.py +2 -6
  13. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/variables.py +16 -8
  14. {prefect_client-2.20.2 → prefect_client-2.20.5/src/prefect_client.egg-info}/PKG-INFO +4 -4
  15. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/SOURCES.txt +1 -0
  16. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/requires.txt +3 -3
  17. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_flows.py +14 -0
  18. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_tasks.py +15 -0
  19. {prefect_client-2.20.2 → prefect_client-2.20.5}/LICENSE +0 -0
  20. {prefect_client-2.20.2 → prefect_client-2.20.5}/MANIFEST.in +0 -0
  21. {prefect_client-2.20.2 → prefect_client-2.20.5}/README.md +0 -0
  22. {prefect_client-2.20.2 → prefect_client-2.20.5}/setup.cfg +0 -0
  23. {prefect_client-2.20.2 → prefect_client-2.20.5}/setup.py +0 -0
  24. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/.prefectignore +0 -0
  25. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/__init__.py +0 -0
  26. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/__init__.py +0 -0
  27. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/_logging.py +0 -0
  28. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/__init__.py +0 -0
  29. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/deprecated.py +0 -0
  30. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/experimental.py +0 -0
  31. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/__init__.py +0 -0
  32. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/api.py +0 -0
  33. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/calls.py +0 -0
  34. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/cancellation.py +0 -0
  35. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/event_loop.py +0 -0
  36. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/inspection.py +0 -0
  37. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/primitives.py +0 -0
  38. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/services.py +0 -0
  39. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/threads.py +0 -0
  40. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/waiters.py +0 -0
  41. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/__init__.py +0 -0
  42. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_base_model.py +0 -0
  43. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_compat.py +0 -0
  44. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_flags.py +0 -0
  45. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_types.py +0 -0
  46. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
  47. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
  48. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/schemas.py +0 -0
  49. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/__init__.py +0 -0
  50. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/config_dict.py +0 -0
  51. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/field_validator.py +0 -0
  52. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_construct.py +0 -0
  53. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_copy.py +0 -0
  54. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_dump.py +0 -0
  55. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_dump_json.py +0 -0
  56. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_fields.py +0 -0
  57. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_fields_set.py +0 -0
  58. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_json_schema.py +0 -0
  59. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_rebuild.py +0 -0
  60. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_validate.py +0 -0
  61. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_validate_json.py +0 -0
  62. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_validator.py +0 -0
  63. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/type_adapter.py +0 -0
  64. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
  65. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
  66. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
  67. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pytz.py +0 -0
  68. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/__init__.py +0 -0
  69. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/bases.py +0 -0
  70. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/fields.py +0 -0
  71. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/serializers.py +0 -0
  72. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/validators.py +0 -0
  73. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/__init__.py +0 -0
  74. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/__init__.py +0 -0
  75. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/applications.py +0 -0
  76. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/background.py +0 -0
  77. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/concurrency.py +0 -0
  78. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/datastructures.py +0 -0
  79. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
  80. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/dependencies/models.py +0 -0
  81. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/dependencies/utils.py +0 -0
  82. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/encoders.py +0 -0
  83. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/exception_handlers.py +0 -0
  84. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/exceptions.py +0 -0
  85. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/logger.py +0 -0
  86. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/__init__.py +0 -0
  87. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -0
  88. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/cors.py +0 -0
  89. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/gzip.py +0 -0
  90. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -0
  91. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/trustedhost.py +0 -0
  92. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/wsgi.py +0 -0
  93. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/__init__.py +0 -0
  94. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/constants.py +0 -0
  95. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/docs.py +0 -0
  96. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/models.py +0 -0
  97. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/utils.py +0 -0
  98. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/param_functions.py +0 -0
  99. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/params.py +0 -0
  100. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/py.typed +0 -0
  101. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/requests.py +0 -0
  102. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/responses.py +0 -0
  103. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/routing.py +0 -0
  104. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/__init__.py +0 -0
  105. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/api_key.py +0 -0
  106. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/base.py +0 -0
  107. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/http.py +0 -0
  108. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/oauth2.py +0 -0
  109. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -0
  110. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/utils.py +0 -0
  111. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/staticfiles.py +0 -0
  112. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/templating.py +0 -0
  113. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/testclient.py +0 -0
  114. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/types.py +0 -0
  115. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/utils.py +0 -0
  116. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/websockets.py +0 -0
  117. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/__init__.py +0 -0
  118. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/_compat.py +0 -0
  119. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/_exception_handler.py +0 -0
  120. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/_utils.py +0 -0
  121. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/applications.py +0 -0
  122. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/authentication.py +0 -0
  123. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/background.py +0 -0
  124. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/concurrency.py +0 -0
  125. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/config.py +0 -0
  126. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/convertors.py +0 -0
  127. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/datastructures.py +0 -0
  128. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/endpoints.py +0 -0
  129. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/exceptions.py +0 -0
  130. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/formparsers.py +0 -0
  131. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/__init__.py +0 -0
  132. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/authentication.py +0 -0
  133. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/base.py +0 -0
  134. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/cors.py +0 -0
  135. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/errors.py +0 -0
  136. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/exceptions.py +0 -0
  137. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/gzip.py +0 -0
  138. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/httpsredirect.py +0 -0
  139. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/sessions.py +0 -0
  140. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/trustedhost.py +0 -0
  141. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/wsgi.py +0 -0
  142. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/py.typed +0 -0
  143. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/requests.py +0 -0
  144. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/responses.py +0 -0
  145. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/routing.py +0 -0
  146. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/schemas.py +0 -0
  147. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/staticfiles.py +0 -0
  148. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/status.py +0 -0
  149. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/templating.py +0 -0
  150. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/testclient.py +0 -0
  151. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/types.py +0 -0
  152. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/websockets.py +0 -0
  153. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_version.py +0 -0
  154. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/agent.py +0 -0
  155. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/artifacts.py +0 -0
  156. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/automations.py +0 -0
  157. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/__init__.py +0 -0
  158. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/abstract.py +0 -0
  159. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/fields.py +0 -0
  160. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/kubernetes.py +0 -0
  161. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/notifications.py +0 -0
  162. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/system.py +0 -0
  163. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/webhook.py +0 -0
  164. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/__init__.py +0 -0
  165. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/base.py +0 -0
  166. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/cloud.py +0 -0
  167. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/collections.py +0 -0
  168. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/constants.py +0 -0
  169. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/__init__.py +0 -0
  170. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/actions.py +0 -0
  171. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/filters.py +0 -0
  172. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/objects.py +0 -0
  173. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/responses.py +0 -0
  174. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/schedules.py +0 -0
  175. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/sorting.py +0 -0
  176. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/subscriptions.py +0 -0
  177. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/utilities.py +0 -0
  178. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/__init__.py +0 -0
  179. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/asyncio.py +0 -0
  180. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/events.py +0 -0
  181. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/services.py +0 -0
  182. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/sync.py +0 -0
  183. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/context.py +0 -0
  184. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/__init__.py +0 -0
  185. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/base.py +0 -0
  186. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/deployments.py +0 -0
  187. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/runner.py +0 -0
  188. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/schedules.py +0 -0
  189. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/__init__.py +0 -0
  190. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/pull.py +0 -0
  191. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/utility.py +0 -0
  192. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/__init__.py +0 -0
  193. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/data_documents.py +0 -0
  194. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/__init__.py +0 -0
  195. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/base.py +0 -0
  196. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/docker.py +0 -0
  197. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/file.py +0 -0
  198. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/orion.py +0 -0
  199. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/serializers.py +0 -0
  200. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/__init__.py +0 -0
  201. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/actions.py +0 -0
  202. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/cli/__init__.py +0 -0
  203. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/cli/automations.py +0 -0
  204. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/clients.py +0 -0
  205. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/filters.py +0 -0
  206. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/instrument.py +0 -0
  207. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/related.py +0 -0
  208. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/__init__.py +0 -0
  209. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/automations.py +0 -0
  210. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/deployment_triggers.py +0 -0
  211. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/events.py +0 -0
  212. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/labelling.py +0 -0
  213. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/utilities.py +0 -0
  214. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/worker.py +0 -0
  215. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/exceptions.py +0 -0
  216. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/filesystems.py +0 -0
  217. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/flow_runs.py +0 -0
  218. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/flows.py +0 -0
  219. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/futures.py +0 -0
  220. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/__init__.py +0 -0
  221. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/base.py +0 -0
  222. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/container.py +0 -0
  223. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/kubernetes.py +0 -0
  224. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/process.py +0 -0
  225. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
  226. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
  227. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
  228. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
  229. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/modal.py +0 -0
  230. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/input/__init__.py +0 -0
  231. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/input/actions.py +0 -0
  232. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/input/run_input.py +0 -0
  233. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/__init__.py +0 -0
  234. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/configuration.py +0 -0
  235. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/filters.py +0 -0
  236. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/formatters.py +0 -0
  237. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/handlers.py +0 -0
  238. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/highlighters.py +0 -0
  239. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/loggers.py +0 -0
  240. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/logging.yml +0 -0
  241. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/manifests.py +0 -0
  242. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/new_flow_engine.py +0 -0
  243. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/new_task_engine.py +0 -0
  244. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/plugins.py +0 -0
  245. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/profiles.toml +0 -0
  246. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/py.typed +0 -0
  247. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/pydantic/__init__.py +0 -0
  248. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/pydantic/main.py +0 -0
  249. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/results.py +0 -0
  250. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/__init__.py +0 -0
  251. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/server.py +0 -0
  252. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/storage.py +0 -0
  253. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/submit.py +0 -0
  254. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/utils.py +0 -0
  255. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/__init__.py +0 -0
  256. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/deployment.py +0 -0
  257. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/flow_run.py +0 -0
  258. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/task_run.py +0 -0
  259. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/serializers.py +0 -0
  260. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
  261. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
  262. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/settings.py +0 -0
  263. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/__init__.py +0 -0
  264. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/base.py +0 -0
  265. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/conda.py +0 -0
  266. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/pip.py +0 -0
  267. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/python.py +0 -0
  268. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/states.py +0 -0
  269. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/task_engine.py +0 -0
  270. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/task_runners.py +0 -0
  271. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/task_server.py +0 -0
  272. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/types/__init__.py +0 -0
  273. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/__init__.py +0 -0
  274. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/annotations.py +0 -0
  275. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/asyncutils.py +0 -0
  276. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/collections.py +0 -0
  277. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/compat.py +0 -0
  278. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/context.py +0 -0
  279. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/dispatch.py +0 -0
  280. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/dockerutils.py +0 -0
  281. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/engine.py +0 -0
  282. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/filesystem.py +0 -0
  283. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/hashing.py +0 -0
  284. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/importtools.py +0 -0
  285. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/math.py +0 -0
  286. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/names.py +0 -0
  287. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/processutils.py +0 -0
  288. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/pydantic.py +0 -0
  289. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/render_swagger.py +0 -0
  290. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/schema_tools/__init__.py +0 -0
  291. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/schema_tools/hydration.py +0 -0
  292. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/schema_tools/validation.py +0 -0
  293. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/services.py +0 -0
  294. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/slugify.py +0 -0
  295. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/templating.py +0 -0
  296. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/text.py +0 -0
  297. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/timeout.py +0 -0
  298. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/visualization.py +0 -0
  299. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/__init__.py +0 -0
  300. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/base.py +0 -0
  301. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/block.py +0 -0
  302. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/process.py +0 -0
  303. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/server.py +0 -0
  304. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/utilities.py +0 -0
  305. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/dependency_links.txt +0 -0
  306. {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/top_level.txt +0 -0
  307. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_artifacts.py +0 -0
  308. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_automations.py +0 -0
  309. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_background_tasks.py +0 -0
  310. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_context.py +0 -0
  311. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_deployments.py +0 -0
  312. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_engine.py +0 -0
  313. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_exceptions.py +0 -0
  314. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_filesystems.py +0 -0
  315. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_flow_runs.py +0 -0
  316. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_flows_compat.py +0 -0
  317. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_futures.py +0 -0
  318. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_highlighters.py +0 -0
  319. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_import_interceptor.py +0 -0
  320. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_log_prints.py +0 -0
  321. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_logging.py +0 -0
  322. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_new_flow_engine.py +0 -0
  323. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_new_task_engine.py +0 -0
  324. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_plugins.py +0 -0
  325. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_serializers.py +0 -0
  326. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_settings.py +0 -0
  327. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_states.py +0 -0
  328. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_task_runners.py +0 -0
  329. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_task_server.py +0 -0
  330. {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_variables.py +0 -0
  331. {prefect_client-2.20.2 → prefect_client-2.20.5}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 2.20.2
3
+ Version: 2.20.5
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -31,11 +31,11 @@ Requires-Dist: croniter<3.0.0,>=1.0.12
31
31
  Requires-Dist: fsspec>=2022.5.0
32
32
  Requires-Dist: exceptiongroup>=1.2.1
33
33
  Requires-Dist: graphviz>=0.20.1
34
- Requires-Dist: griffe<0.48.0,>=0.20.0
34
+ Requires-Dist: griffe<2.0.0,>=0.49.0
35
35
  Requires-Dist: httpcore<2.0.0,>=1.0.5
36
36
  Requires-Dist: httpx[http2]!=0.23.2,>=0.23
37
37
  Requires-Dist: importlib_metadata>=4.4; python_version < "3.10"
38
- Requires-Dist: importlib-resources<6.2.0,>=6.1.3
38
+ Requires-Dist: importlib-resources<6.5.0,>=6.1.3
39
39
  Requires-Dist: jsonpatch<2.0,>=1.32
40
40
  Requires-Dist: jsonschema<5.0.0,>=4.0.0
41
41
  Requires-Dist: orjson<4.0,>=3.7
@@ -56,7 +56,7 @@ Requires-Dist: toml>=0.10.0
56
56
  Requires-Dist: typing_extensions<5.0.0,>=4.5.0
57
57
  Requires-Dist: ujson<6.0.0,>=5.8.0
58
58
  Requires-Dist: uvicorn!=0.29.0,>=0.14.0
59
- Requires-Dist: websockets<13.0,>=10.4
59
+ Requires-Dist: websockets<14.0,>=10.4
60
60
  Requires-Dist: itsdangerous
61
61
  Requires-Dist: python-multipart>=0.0.7
62
62
  Provides-Extra: notifications
@@ -7,11 +7,11 @@ croniter >= 1.0.12, < 3.0.0
7
7
  fsspec >= 2022.5.0
8
8
  exceptiongroup >= 1.2.1
9
9
  graphviz >= 0.20.1
10
- griffe >= 0.20.0, <0.48.0
10
+ griffe >= 0.49.0, <2.0.0
11
11
  httpcore >=1.0.5, < 2.0.0
12
12
  httpx[http2] >= 0.23, != 0.23.2
13
13
  importlib_metadata >= 4.4; python_version < '3.10'
14
- importlib-resources >= 6.1.3, < 6.2.0
14
+ importlib-resources >= 6.1.3, < 6.5.0
15
15
  jsonpatch >= 1.32, < 2.0
16
16
  jsonschema >= 4.0.0, < 5.0.0
17
17
  orjson >= 3.7, < 4.0
@@ -34,7 +34,7 @@ toml >= 0.10.0
34
34
  typing_extensions >= 4.5.0, < 5.0.0
35
35
  ujson >= 5.8.0, < 6.0.0
36
36
  uvicorn >= 0.14.0, !=0.29.0
37
- websockets >= 10.4, < 13.0
37
+ websockets >= 10.4, < 14.0
38
38
 
39
39
  # additional dependencies of starlette, which we're currently vendoring
40
40
  itsdangerous
@@ -1,7 +1,6 @@
1
1
  ruff
2
2
  cairosvg
3
3
  codespell>=2.2.6
4
- ddtrace
5
4
  # Pin IPython to 8.12 when building on Python 3.8
6
5
  # https://github.com/ipython/ipython/blob/main/README.rst
7
6
  ipython == 8.12.*; python_version == '3.8'
@@ -19,7 +18,7 @@ numpy
19
18
  pillow
20
19
  pre-commit
21
20
  pluggy >= 1.4.0
22
- pytest > 7, < 8 # Datadog's ddtrace does not support pytest 8 yet. See https://github.com/DataDog/dd-trace-py/issues/8220
21
+ pytest > 7, < 9
23
22
  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.
24
23
  pytest-cov
25
24
  pytest-benchmark
@@ -29,7 +28,6 @@ pytest-timeout
29
28
  pytest-xdist < 3.4.0 # 3.5.0 introduces some flakiness. Need to investigate and resolve.
30
29
  pytkdocs >= 0.14.2
31
30
  pyyaml
32
- requests<2.32.0 # `requests` renamed `get_connection` to `_get_connection`, which is a method docker-py monkeypatches. See https://github.com/docker/docker-py/issues/3256 Should be able to un-pin when docker-py hotfix is out.
33
31
  setuptools != 60.9.0; python_version < '3.8'
34
32
  vermin
35
33
  virtualenv
@@ -1,18 +1,17 @@
1
1
  -r requirements-client.txt
2
2
 
3
- aiosqlite >= 0.17.0
3
+ aiosqlite >= 0.17.0, < 1.0.0
4
4
  alembic >= 1.7.5, < 2.0.0
5
5
  apprise >= 1.8.0, < 2.0.0
6
- asyncpg >= 0.23
6
+ asyncpg >= 0.23, < 1.0.0
7
7
  click >= 8.0, < 8.2
8
8
  cryptography >= 36.0.1
9
9
  dateparser >= 1.1.1, < 2.0.0
10
- docker >= 4.0
10
+ docker >= 4.0, < 8.0
11
11
  graphviz >= 0.20.1
12
- griffe >= 0.20.0, <0.48.0
13
12
  jinja2 >= 3.0.0, < 4.0.0
14
13
  jinja2-humanize-extension >= 0.4.0
15
- humanize >= 4.9.0
14
+ humanize >= 4.9.0, < 5.0.0
16
15
  kubernetes >= 24.2.0, < 30.0.0
17
16
  pytz >= 2021.1, < 2025
18
17
  readchar >= 4.0.0, < 5.0.0
@@ -0,0 +1,7 @@
1
+ KNOWN_EXTRAS_FOR_PACKAGES = {
2
+ "prefect-kubernetes": "prefect[kubernetes]",
3
+ "prefect-aws": "prefect[aws]",
4
+ "prefect-gcp": "prefect[gcp]",
5
+ "prefect-azure": "prefect[azure]",
6
+ "prefect-docker": "prefect[docker]",
7
+ }
@@ -18,9 +18,7 @@ from typing import (
18
18
  )
19
19
  from uuid import UUID, uuid4
20
20
 
21
- from griffe.dataclasses import Docstring
22
- from griffe.docstrings.dataclasses import DocstringSection, DocstringSectionKind
23
- from griffe.docstrings.parsers import Parser, parse
21
+ from griffe import Docstring, DocstringSection, DocstringSectionKind, Parser, parse
24
22
  from packaging.version import InvalidVersion, Version
25
23
 
26
24
  from prefect._internal.pydantic import HAS_PYDANTIC_V2
@@ -120,18 +118,20 @@ def _is_subclass(cls, parent_cls) -> bool:
120
118
  Checks if a given class is a subclass of another class. Unlike issubclass,
121
119
  this will not throw an exception if cls is an instance instead of a type.
122
120
  """
123
- return inspect.isclass(cls) and issubclass(cls, parent_cls)
121
+ # For python<=3.11 inspect.isclass() will return True for parametrized types (e.g. list[str])
122
+ # so we need to check for get_origin() to avoid TypeError for issubclass.
123
+ return inspect.isclass(cls) and not get_origin(cls) and issubclass(cls, parent_cls)
124
124
 
125
125
 
126
126
  def _collect_secret_fields(name: str, type_: Type, secrets: List[str]) -> None:
127
127
  """
128
128
  Recursively collects all secret fields from a given type and adds them to the
129
- secrets list, supporting nested Union / BaseModel fields. Also, note, this function
130
- mutates the input secrets list, thus does not return anything.
129
+ secrets list, supporting nested Union / Dict / Tuple / List / BaseModel fields.
130
+ Also, note, this function mutates the input secrets list, thus does not return anything.
131
131
  """
132
- if get_origin(type_) is Union:
133
- for union_type in get_args(type_):
134
- _collect_secret_fields(name, union_type, secrets)
132
+ if get_origin(type_) in (Union, dict, list, tuple):
133
+ for nested_type in get_args(type_):
134
+ _collect_secret_fields(name, nested_type, secrets)
135
135
  return
136
136
  elif _is_subclass(type_, BaseModel):
137
137
  for field in type_.__fields__.values():
@@ -241,25 +241,29 @@ class Block(BaseModel, ABC):
241
241
 
242
242
  # create block schema references
243
243
  refs = schema["block_schema_references"] = {}
244
+
245
+ def collect_block_schema_references(
246
+ field_name: str, annotation: type
247
+ ) -> None:
248
+ """Walk through the annotation and collect block schemas for any nested blocks."""
249
+ if Block.is_block_class(annotation):
250
+ if isinstance(refs.get(field_name), list):
251
+ refs[field_name].append(
252
+ annotation._to_block_schema_reference_dict()
253
+ )
254
+ elif isinstance(refs.get(field_name), dict):
255
+ refs[field_name] = [
256
+ refs[field_name],
257
+ annotation._to_block_schema_reference_dict(),
258
+ ]
259
+ else:
260
+ refs[field_name] = annotation._to_block_schema_reference_dict()
261
+ if get_origin(annotation) in (Union, list, tuple, dict):
262
+ for type_ in get_args(annotation):
263
+ collect_block_schema_references(field_name, type_)
264
+
244
265
  for field in model.__fields__.values():
245
- if Block.is_block_class(field.type_):
246
- refs[field.name] = field.type_._to_block_schema_reference_dict()
247
- if get_origin(field.type_) is Union:
248
- for type_ in get_args(field.type_):
249
- if Block.is_block_class(type_):
250
- if isinstance(refs.get(field.name), list):
251
- refs[field.name].append(
252
- type_._to_block_schema_reference_dict()
253
- )
254
- elif isinstance(refs.get(field.name), dict):
255
- refs[field.name] = [
256
- refs[field.name],
257
- type_._to_block_schema_reference_dict(),
258
- ]
259
- else:
260
- refs[
261
- field.name
262
- ] = type_._to_block_schema_reference_dict()
266
+ collect_block_schema_references(field.name, field.type_)
263
267
 
264
268
  def __init__(self, *args, **kwargs):
265
269
  super().__init__(*args, **kwargs)
@@ -503,10 +507,9 @@ class Block(BaseModel, ABC):
503
507
  `<module>:11: No type or annotation for parameter 'write_json'`
504
508
  because griffe is unable to parse the types from pydantic.BaseModel.
505
509
  """
506
- with disable_logger("griffe.docstrings.google"):
507
- with disable_logger("griffe.agents.nodes"):
508
- docstring = Docstring(cls.__doc__)
509
- parsed = parse(docstring, Parser.google)
510
+ with disable_logger("griffe"):
511
+ docstring = Docstring(cls.__doc__)
512
+ parsed = parse(docstring, Parser.google)
510
513
  return parsed
511
514
 
512
515
  @classmethod
@@ -888,13 +891,16 @@ class Block(BaseModel, ABC):
888
891
  "subclass and not on a Block interface class directly."
889
892
  )
890
893
 
894
+ async def register_blocks_in_annotation(annotation: type) -> None:
895
+ """Walk through the annotation and register any nested blocks."""
896
+ if Block.is_block_class(annotation):
897
+ await annotation.register_type_and_schema(client=client)
898
+ elif get_origin(annotation) in (Union, tuple, list, dict):
899
+ for inner_annotation in get_args(annotation):
900
+ await register_blocks_in_annotation(inner_annotation)
901
+
891
902
  for field in cls.__fields__.values():
892
- if Block.is_block_class(field.type_):
893
- await field.type_.register_type_and_schema(client=client)
894
- if get_origin(field.type_) is Union:
895
- for type_ in get_args(field.type_):
896
- if Block.is_block_class(type_):
897
- await type_.register_type_and_schema(client=client)
903
+ await register_blocks_in_annotation(field.annotation)
898
904
 
899
905
  try:
900
906
  block_type = await client.read_block_type_by_slug(
@@ -2665,12 +2665,14 @@ class PrefectClient:
2665
2665
  async def create_work_pool(
2666
2666
  self,
2667
2667
  work_pool: WorkPoolCreate,
2668
+ overwrite: bool = False,
2668
2669
  ) -> WorkPool:
2669
2670
  """
2670
2671
  Creates a work pool with the provided configuration.
2671
2672
 
2672
2673
  Args:
2673
2674
  work_pool: Desired configuration for the new work pool.
2675
+ overwrite: Whether to overwrite an existing work pool with the same name.
2674
2676
 
2675
2677
  Returns:
2676
2678
  Information about the newly created work pool.
@@ -2682,7 +2684,24 @@ class PrefectClient:
2682
2684
  )
2683
2685
  except httpx.HTTPStatusError as e:
2684
2686
  if e.response.status_code == status.HTTP_409_CONFLICT:
2685
- raise prefect.exceptions.ObjectAlreadyExists(http_exc=e) from e
2687
+ if overwrite:
2688
+ existing_work_pool = await self.read_work_pool(
2689
+ work_pool_name=work_pool.name
2690
+ )
2691
+ if existing_work_pool.type != work_pool.type:
2692
+ warnings.warn(
2693
+ "Overwriting work pool type is not supported. Ignoring provided type.",
2694
+ category=UserWarning,
2695
+ )
2696
+ await self.update_work_pool(
2697
+ work_pool_name=work_pool.name,
2698
+ work_pool=WorkPoolUpdate.parse_obj(
2699
+ work_pool.dict(exclude={"name", "type"})
2700
+ ),
2701
+ )
2702
+ response = await self._client.get(f"/work_pools/{work_pool.name}")
2703
+ else:
2704
+ raise prefect.exceptions.ObjectAlreadyExists(http_exc=e) from e
2686
2705
  else:
2687
2706
  raise
2688
2707
 
@@ -21,6 +21,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
21
21
 
22
22
  from prefect._internal.compatibility.deprecated import PrefectDeprecationWarning
23
23
  from prefect._internal.concurrency.api import Call, from_async
24
+ from prefect._internal.integrations import KNOWN_EXTRAS_FOR_PACKAGES
24
25
  from prefect.logging.loggers import get_logger
25
26
  from prefect.settings import PREFECT_DEBUG_MODE
26
27
  from prefect.utilities.importtools import import_object
@@ -83,6 +84,11 @@ def _get_function_for_step(
83
84
  raise
84
85
 
85
86
  try:
87
+ packages = [
88
+ KNOWN_EXTRAS_FOR_PACKAGES.get(package, package)
89
+ for package in packages
90
+ if package
91
+ ]
86
92
  subprocess.check_call([sys.executable, "-m", "pip", "install", *packages])
87
93
  except subprocess.CalledProcessError:
88
94
  get_logger("deployments.steps.core").warning(
@@ -332,6 +332,18 @@ def enter_flow_run_engine_from_subprocess(flow_run_id: UUID) -> State:
332
332
  return state
333
333
 
334
334
 
335
+ async def _make_flow_run(
336
+ flow: Flow, parameters: Dict[str, Any], state: State, client: PrefectClient
337
+ ) -> FlowRun:
338
+ return await client.create_flow_run(
339
+ flow,
340
+ # Send serialized parameters to the backend
341
+ parameters=flow.serialize_parameters(parameters),
342
+ state=state,
343
+ tags=TagsContext.get().current_tags,
344
+ )
345
+
346
+
335
347
  @inject_client
336
348
  async def create_then_begin_flow_run(
337
349
  flow: Flow,
@@ -351,6 +363,7 @@ async def create_then_begin_flow_run(
351
363
 
352
364
  await check_api_reachable(client, "Cannot create flow run")
353
365
 
366
+ flow_run = None
354
367
  state = Pending()
355
368
  if flow.should_validate_parameters:
356
369
  try:
@@ -359,14 +372,10 @@ async def create_then_begin_flow_run(
359
372
  state = await exception_to_failed_state(
360
373
  message="Validation of flow parameters failed with error:"
361
374
  )
375
+ flow_run = await _make_flow_run(flow, parameters, state, client)
376
+ await _run_flow_hooks(flow, flow_run, state)
362
377
 
363
- flow_run = await client.create_flow_run(
364
- flow,
365
- # Send serialized parameters to the backend
366
- parameters=flow.serialize_parameters(parameters),
367
- state=state,
368
- tags=TagsContext.get().current_tags,
369
- )
378
+ flow_run = flow_run or await _make_flow_run(flow, parameters, state, client)
370
379
 
371
380
  engine_logger.info(f"Created flow run {flow_run.name!r} for flow {flow.name!r}")
372
381
 
@@ -35,7 +35,6 @@ import datetime
35
35
  import inspect
36
36
  import logging
37
37
  import os
38
- import shlex
39
38
  import shutil
40
39
  import signal
41
40
  import subprocess
@@ -97,7 +96,11 @@ from prefect.utilities.asyncutils import (
97
96
  sync_compatible,
98
97
  )
99
98
  from prefect.utilities.engine import propose_state
100
- from prefect.utilities.processutils import _register_signal, run_process
99
+ from prefect.utilities.processutils import (
100
+ _register_signal,
101
+ get_sys_executable,
102
+ run_process,
103
+ )
101
104
  from prefect.utilities.services import critical_service_loop
102
105
 
103
106
  __all__ = ["Runner"]
@@ -533,7 +536,7 @@ class Runner:
533
536
  task_status: anyio task status used to send a message to the caller
534
537
  than the flow run process has started.
535
538
  """
536
- command = f"{shlex.quote(sys.executable)} -m prefect.engine"
539
+ command = [get_sys_executable(), "-m", "prefect.engine"]
537
540
 
538
541
  flow_run_logger = self._get_flow_run_logger(flow_run)
539
542
 
@@ -580,7 +583,7 @@ class Runner:
580
583
  setattr(storage, "last_adhoc_pull", datetime.datetime.now())
581
584
 
582
585
  process = await run_process(
583
- shlex.split(command),
586
+ command=command,
584
587
  stream_output=True,
585
588
  task_status=task_status,
586
589
  env=env,
@@ -141,8 +141,17 @@ def _generate_task_key(fn: Callable[..., Any]) -> str:
141
141
 
142
142
  qualname = fn.__qualname__.split(".")[-1]
143
143
 
144
+ try:
145
+ code_obj = getattr(fn, "__code__", None)
146
+ if code_obj is None:
147
+ code_obj = fn.__call__.__code__
148
+ except AttributeError:
149
+ raise AttributeError(
150
+ f"{fn} is not a standard Python function object and could not be converted to a task."
151
+ ) from None
152
+
144
153
  code_hash = (
145
- h[:NUM_CHARS_DYNAMIC_KEY] if (h := hash_objects(fn.__code__)) else "unknown"
154
+ h[:NUM_CHARS_DYNAMIC_KEY] if (h := hash_objects(code_obj)) else "unknown"
146
155
  )
147
156
 
148
157
  return f"{qualname}-{code_hash}"
@@ -24,9 +24,7 @@ if HAS_PYDANTIC_V2:
24
24
  else:
25
25
  import pydantic
26
26
 
27
- from griffe.dataclasses import Docstring
28
- from griffe.docstrings.dataclasses import DocstringSectionKind
29
- from griffe.docstrings.parsers import Parser, parse
27
+ from griffe import Docstring, DocstringSectionKind, Parser, parse
30
28
  from typing_extensions import Literal
31
29
 
32
30
  from prefect.exceptions import (
@@ -257,9 +255,7 @@ def parameter_docstrings(docstring: Optional[str]) -> Dict[str, str]:
257
255
  if not docstring:
258
256
  return param_docstrings
259
257
 
260
- with disable_logger("griffe.docstrings.google"), disable_logger(
261
- "griffe.agents.nodes"
262
- ):
258
+ with disable_logger("griffe"):
263
259
  parsed = parse(Docstring(docstring), Parser.google)
264
260
  for section in parsed:
265
261
  if section.kind != DocstringSectionKind.parameters:
@@ -1,4 +1,4 @@
1
- from typing import List, Optional
1
+ from typing import List, Optional, Union
2
2
 
3
3
  from prefect._internal.compatibility.deprecated import deprecated_callable
4
4
  from prefect.client.schemas.actions import VariableCreate as VariableRequest
@@ -26,7 +26,7 @@ class Variable(VariableRequest):
26
26
  value: str,
27
27
  tags: Optional[List[str]] = None,
28
28
  overwrite: bool = False,
29
- ) -> Optional[str]:
29
+ ) -> Optional["Variable"]:
30
30
  """
31
31
  Sets a new variable. If one exists with the same name, user must pass `overwrite=True`
32
32
  ```
@@ -47,8 +47,7 @@ class Variable(VariableRequest):
47
47
  """
48
48
  client, _ = get_or_create_client()
49
49
  variable = await client.read_variable_by_name(name)
50
- var_dict = {"name": name, "value": value}
51
- var_dict["tags"] = tags or []
50
+ var_dict = {"name": name, "value": value, "tags": tags or []}
52
51
  if variable:
53
52
  if not overwrite:
54
53
  raise ValueError(
@@ -65,7 +64,9 @@ class Variable(VariableRequest):
65
64
 
66
65
  @classmethod
67
66
  @sync_compatible
68
- async def get(cls, name: str, default: Optional[str] = None) -> Optional[str]:
67
+ async def get(
68
+ cls, name: str, default: Optional[str] = None
69
+ ) -> Optional[Union["Variable", str]]:
69
70
  """
70
71
  Get a variable by name. If doesn't exist return the default.
71
72
  ```
@@ -86,7 +87,12 @@ class Variable(VariableRequest):
86
87
  """
87
88
  client, _ = get_or_create_client()
88
89
  variable = await client.read_variable_by_name(name)
89
- return variable if variable else default
90
+
91
+ return (
92
+ Variable(name=variable.name, value=variable.value, tags=variable.tags)
93
+ if variable
94
+ else default
95
+ )
90
96
 
91
97
 
92
98
  @deprecated_callable(start_date="Apr 2024")
@@ -110,5 +116,7 @@ async def get(name: str, default: Optional[str] = None) -> Optional[str]:
110
116
  var = await variables.get("my_var")
111
117
  ```
112
118
  """
113
- variable = await Variable.get(name)
114
- return variable.value if variable else default
119
+ variable = await Variable.get(name, default=default)
120
+ if isinstance(variable, Variable):
121
+ variable = variable.value
122
+ return variable
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 2.20.2
3
+ Version: 2.20.5
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -31,11 +31,11 @@ Requires-Dist: croniter<3.0.0,>=1.0.12
31
31
  Requires-Dist: fsspec>=2022.5.0
32
32
  Requires-Dist: exceptiongroup>=1.2.1
33
33
  Requires-Dist: graphviz>=0.20.1
34
- Requires-Dist: griffe<0.48.0,>=0.20.0
34
+ Requires-Dist: griffe<2.0.0,>=0.49.0
35
35
  Requires-Dist: httpcore<2.0.0,>=1.0.5
36
36
  Requires-Dist: httpx[http2]!=0.23.2,>=0.23
37
37
  Requires-Dist: importlib_metadata>=4.4; python_version < "3.10"
38
- Requires-Dist: importlib-resources<6.2.0,>=6.1.3
38
+ Requires-Dist: importlib-resources<6.5.0,>=6.1.3
39
39
  Requires-Dist: jsonpatch<2.0,>=1.32
40
40
  Requires-Dist: jsonschema<5.0.0,>=4.0.0
41
41
  Requires-Dist: orjson<4.0,>=3.7
@@ -56,7 +56,7 @@ Requires-Dist: toml>=0.10.0
56
56
  Requires-Dist: typing_extensions<5.0.0,>=4.5.0
57
57
  Requires-Dist: ujson<6.0.0,>=5.8.0
58
58
  Requires-Dist: uvicorn!=0.29.0,>=0.14.0
59
- Requires-Dist: websockets<13.0,>=10.4
59
+ Requires-Dist: websockets<14.0,>=10.4
60
60
  Requires-Dist: itsdangerous
61
61
  Requires-Dist: python-multipart>=0.0.7
62
62
  Provides-Extra: notifications
@@ -37,6 +37,7 @@ src/prefect/tasks.py
37
37
  src/prefect/variables.py
38
38
  src/prefect/_internal/__init__.py
39
39
  src/prefect/_internal/_logging.py
40
+ src/prefect/_internal/integrations.py
40
41
  src/prefect/_internal/pytz.py
41
42
  src/prefect/_internal/compatibility/__init__.py
42
43
  src/prefect/_internal/compatibility/deprecated.py
@@ -7,10 +7,10 @@ croniter<3.0.0,>=1.0.12
7
7
  fsspec>=2022.5.0
8
8
  exceptiongroup>=1.2.1
9
9
  graphviz>=0.20.1
10
- griffe<0.48.0,>=0.20.0
10
+ griffe<2.0.0,>=0.49.0
11
11
  httpcore<2.0.0,>=1.0.5
12
12
  httpx[http2]!=0.23.2,>=0.23
13
- importlib-resources<6.2.0,>=6.1.3
13
+ importlib-resources<6.5.0,>=6.1.3
14
14
  jsonpatch<2.0,>=1.32
15
15
  jsonschema<5.0.0,>=4.0.0
16
16
  orjson<4.0,>=3.7
@@ -29,7 +29,7 @@ toml>=0.10.0
29
29
  typing_extensions<5.0.0,>=4.5.0
30
30
  ujson<6.0.0,>=5.8.0
31
31
  uvicorn!=0.29.0,>=0.14.0
32
- websockets<13.0,>=10.4
32
+ websockets<14.0,>=10.4
33
33
  itsdangerous
34
34
  python-multipart>=0.0.7
35
35
 
@@ -2830,6 +2830,20 @@ class TestFlowHooksOnFailure:
2830
2830
  assert state.type == StateType.FAILED
2831
2831
  assert my_mock.call_args_list == [call(), call()]
2832
2832
 
2833
+ def test_on_failure_hooks_run_on_bad_parameters(self):
2834
+ my_mock = MagicMock()
2835
+
2836
+ def failure_hook(flow, flow_run, state):
2837
+ my_mock("failure_hook")
2838
+
2839
+ @flow(on_failure=[failure_hook])
2840
+ def my_flow(x: int):
2841
+ pass
2842
+
2843
+ state = my_flow(x="x", return_state=True)
2844
+ assert state.type == StateType.FAILED
2845
+ assert my_mock.call_args_list == [call("failure_hook")]
2846
+
2833
2847
 
2834
2848
  class TestFlowHooksOnCancellation:
2835
2849
  def test_noniterable_hook_raises(self):
@@ -153,6 +153,21 @@ class TestTaskKey:
153
153
 
154
154
  assert noop.task_key.startswith("noop-")
155
155
 
156
+ def test_task_key_with_funky_class(self):
157
+ class Funky:
158
+ def __call__(self, x):
159
+ return x
160
+
161
+ # set up class to trigger certain code path
162
+ # see https://github.com/PrefectHQ/prefect/issues/15058
163
+ funky = Funky()
164
+ funky.__qualname__ = "__main__.Funky"
165
+ if hasattr(funky, "__code__"):
166
+ del funky.__code__
167
+
168
+ tt = task(funky)
169
+ assert tt.task_key.startswith("Funky-")
170
+
156
171
 
157
172
  class TestTaskRunName:
158
173
  def test_run_name_default(self):
File without changes