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.
- {prefect_client-2.20.2/src/prefect_client.egg-info → prefect_client-2.20.5}/PKG-INFO +4 -4
- {prefect_client-2.20.2 → prefect_client-2.20.5}/requirements-client.txt +3 -3
- {prefect_client-2.20.2 → prefect_client-2.20.5}/requirements-dev.txt +1 -3
- {prefect_client-2.20.2 → prefect_client-2.20.5}/requirements.txt +4 -5
- prefect_client-2.20.5/src/prefect/_internal/integrations.py +7 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/core.py +43 -37
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/orchestration.py +20 -1
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/core.py +6 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/engine.py +16 -7
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/runner.py +7 -4
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/tasks.py +10 -1
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/callables.py +2 -6
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/variables.py +16 -8
- {prefect_client-2.20.2 → prefect_client-2.20.5/src/prefect_client.egg-info}/PKG-INFO +4 -4
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/SOURCES.txt +1 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/requires.txt +3 -3
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_flows.py +14 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_tasks.py +15 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/LICENSE +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/MANIFEST.in +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/README.md +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/setup.cfg +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/setup.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/.prefectignore +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/experimental.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_base_model.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_compat.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_flags.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_types.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/config_dict.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/field_validator.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_construct.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_copy.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_dump.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_dump_json.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_fields.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_fields_set.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_json_schema.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_rebuild.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_validate.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_validate_json.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/model_validator.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/utilities/type_adapter.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/applications.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/background.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/concurrency.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/datastructures.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/dependencies/models.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/dependencies/utils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/encoders.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/exception_handlers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/exceptions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/logger.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/cors.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/gzip.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/trustedhost.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/middleware/wsgi.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/constants.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/docs.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/models.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/openapi/utils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/param_functions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/params.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/py.typed +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/requests.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/responses.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/routing.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/api_key.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/http.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/oauth2.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/security/utils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/staticfiles.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/templating.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/testclient.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/types.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/utils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/fastapi/websockets.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/_compat.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/_exception_handler.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/_utils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/applications.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/authentication.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/background.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/concurrency.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/config.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/convertors.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/datastructures.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/endpoints.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/exceptions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/formparsers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/authentication.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/cors.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/errors.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/exceptions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/gzip.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/httpsredirect.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/sessions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/trustedhost.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/middleware/wsgi.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/py.typed +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/requests.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/responses.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/routing.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/schemas.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/staticfiles.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/status.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/templating.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/testclient.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/types.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_vendor/starlette/websockets.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_version.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/agent.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/artifacts.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/automations.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/kubernetes.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/system.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/cloud.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/collections.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/constants.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/client/utilities.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/events.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/context.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/data_documents.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/docker.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/file.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/orion.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/deprecated/packaging/serializers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/actions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/clients.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/filters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/instrument.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/related.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/utilities.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/events/worker.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/exceptions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/filesystems.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/flow_runs.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/flows.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/futures.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/container.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/kubernetes.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/process.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/input/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/input/actions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/input/run_input.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/filters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/manifests.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/new_flow_engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/new_task_engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/plugins.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/profiles.toml +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/py.typed +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/pydantic/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/pydantic/main.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/results.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/server.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/storage.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/submit.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runner/utils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/serializers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/settings.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/conda.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/pip.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/software/python.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/states.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/task_engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/task_runners.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/task_server.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/types/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/context.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/math.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/names.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/services.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/text.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/base.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/block.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/process.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/server.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/workers/utilities.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/dependency_links.txt +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect_client.egg-info/top_level.txt +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_artifacts.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_automations.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_background_tasks.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_context.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_deployments.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_exceptions.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_filesystems.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_flow_runs.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_flows_compat.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_futures.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_highlighters.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_import_interceptor.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_log_prints.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_logging.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_new_flow_engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_new_task_engine.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_plugins.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_serializers.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_settings.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_states.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_task_runners.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_task_server.py +0 -0
- {prefect_client-2.20.2 → prefect_client-2.20.5}/tests/test_variables.py +0 -0
- {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.
|
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.
|
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.
|
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<
|
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.
|
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.
|
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, <
|
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, <
|
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
|
@@ -18,9 +18,7 @@ from typing import (
|
|
18
18
|
)
|
19
19
|
from uuid import UUID, uuid4
|
20
20
|
|
21
|
-
from griffe
|
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
|
-
|
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 /
|
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_)
|
133
|
-
for
|
134
|
-
_collect_secret_fields(name,
|
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
|
-
|
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
|
507
|
-
|
508
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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 =
|
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
|
-
|
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(
|
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
|
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
|
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[
|
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(
|
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
|
-
|
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
|
-
|
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.
|
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.
|
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.
|
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<
|
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.
|
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.
|
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<
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/__init__.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/deprecated.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/compatibility/experimental.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/cancellation.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/event_loop.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/inspection.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/primitives.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/services.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/threads.py
RENAMED
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/concurrency/waiters.py
RENAMED
File without changes
|
File without changes
|
{prefect_client-2.20.2 → prefect_client-2.20.5}/src/prefect/_internal/pydantic/_base_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|