prefect-client 2.14.12__tar.gz → 2.14.13__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.14.12 → prefect-client-2.14.13}/MANIFEST.in +1 -0
- {prefect-client-2.14.12/src/prefect_client.egg-info → prefect-client-2.14.13}/PKG-INFO +1 -1
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/orchestration.py +27 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/objects.py +12 -1
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/engine.py +66 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/actions.py +13 -2
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/schemas.py +1 -1
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/flows.py +2 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runner/runner.py +2 -2
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runner/storage.py +39 -24
- prefect-client-2.14.13/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +1535 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/tasks.py +28 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/processutils.py +7 -1
- {prefect-client-2.14.12 → prefect-client-2.14.13/src/prefect_client.egg-info}/PKG-INFO +1 -1
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect_client.egg-info/SOURCES.txt +1 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/LICENSE +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/README.md +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/requirements-client.txt +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/requirements-dev.txt +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/requirements.txt +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/setup.cfg +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/setup.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/.prefectignore +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/_logging.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/compatibility/experimental.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/pytz.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/schemas/transformations.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/applications.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/background.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/concurrency.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/datastructures.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/dependencies/models.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/dependencies/utils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/encoders.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/exception_handlers.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/exceptions.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/logger.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/cors.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/gzip.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/trustedhost.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/middleware/wsgi.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/openapi/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/openapi/constants.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/openapi/docs.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/openapi/models.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/openapi/utils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/param_functions.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/params.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/requests.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/responses.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/routing.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/api_key.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/http.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/oauth2.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/security/utils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/staticfiles.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/templating.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/testclient.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/types.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/utils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_vendor/fastapi/websockets.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/_version.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/agent.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/abstract.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/core.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/fields.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/kubernetes.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/notifications.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/system.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/blocks/webhook.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/cloud.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/collections.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/constants.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/actions.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/filters.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/responses.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/client/utilities.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/concurrency/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/concurrency/common.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/concurrency/events.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/concurrency/services.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/concurrency/sync.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/context.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/deployments.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/runner.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/steps/core.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deprecated/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/deprecated/data_documents.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/clients.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/filters.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/instrument.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/related.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/utilities.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/events/worker.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/exceptions.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/filesystems.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/futures.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/container.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/kubernetes.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/process.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/input/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/input/actions.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/input/run_input.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/configuration.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/formatters.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/handlers.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/highlighters.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/loggers.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/logging/logging.yml +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/manifests.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/packaging/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/packaging/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/packaging/docker.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/packaging/file.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/packaging/orion.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/packaging/serializers.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/plugins.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/profiles.toml +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/py.typed +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/results.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runner/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runner/server.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runner/utils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runtime/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runtime/deployment.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runtime/flow_run.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/runtime/task_run.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/serializers.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/settings.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/software/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/software/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/software/conda.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/software/pip.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/software/python.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/states.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/task_runners.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/annotations.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/callables.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/collections.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/compat.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/context.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/dispatch.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/filesystem.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/hashing.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/importtools.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/math.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/names.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/pydantic.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/services.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/slugify.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/templating.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/text.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/validation.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/utilities/visualization.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/variables.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/workers/__init__.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/workers/base.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/workers/block.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/workers/process.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/workers/server.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect/workers/utilities.py +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect_client.egg-info/dependency_links.txt +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect_client.egg-info/requires.txt +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/src/prefect_client.egg-info/top_level.txt +0 -0
- {prefect-client-2.14.12 → prefect-client-2.14.13}/versioneer.py +0 -0
@@ -21,6 +21,7 @@ include src/prefect/.prefectignore
|
|
21
21
|
include src/prefect/logging/logging.yml
|
22
22
|
include src/prefect/cli/templates/*.yaml
|
23
23
|
include src/prefect/server/collection_blocks_data.json
|
24
|
+
include src/prefect/server/api/collections_data/views/*.json
|
24
25
|
|
25
26
|
# Migrations
|
26
27
|
include src/prefect/server/database/alembic.ini
|
@@ -92,6 +92,7 @@ from prefect.client.schemas.objects import (
|
|
92
92
|
Worker,
|
93
93
|
WorkPool,
|
94
94
|
WorkQueue,
|
95
|
+
WorkQueueStatusDetail,
|
95
96
|
)
|
96
97
|
from prefect.client.schemas.responses import (
|
97
98
|
DeploymentResponse,
|
@@ -1036,6 +1037,32 @@ class PrefectClient:
|
|
1036
1037
|
raise
|
1037
1038
|
return WorkQueue.parse_obj(response.json())
|
1038
1039
|
|
1040
|
+
async def read_work_queue_status(
|
1041
|
+
self,
|
1042
|
+
id: UUID,
|
1043
|
+
) -> WorkQueueStatusDetail:
|
1044
|
+
"""
|
1045
|
+
Read a work queue status.
|
1046
|
+
|
1047
|
+
Args:
|
1048
|
+
id: the id of the work queue to load
|
1049
|
+
|
1050
|
+
Raises:
|
1051
|
+
prefect.exceptions.ObjectNotFound: If request returns 404
|
1052
|
+
httpx.RequestError: If request fails
|
1053
|
+
|
1054
|
+
Returns:
|
1055
|
+
WorkQueueStatus: an instantiated WorkQueueStatus object
|
1056
|
+
"""
|
1057
|
+
try:
|
1058
|
+
response = await self._client.get(f"/work_queues/{id}/status")
|
1059
|
+
except httpx.HTTPStatusError as e:
|
1060
|
+
if e.response.status_code == status.HTTP_404_NOT_FOUND:
|
1061
|
+
raise prefect.exceptions.ObjectNotFound(http_exc=e) from e
|
1062
|
+
else:
|
1063
|
+
raise
|
1064
|
+
return WorkQueueStatusDetail.parse_obj(response.json())
|
1065
|
+
|
1039
1066
|
async def match_work_queues(
|
1040
1067
|
self,
|
1041
1068
|
prefixes: List[str],
|
@@ -30,7 +30,7 @@ from prefect._internal.schemas.validators import (
|
|
30
30
|
raise_on_name_with_banned_characters,
|
31
31
|
)
|
32
32
|
from prefect.client.schemas.schedules import SCHEDULE_TYPES
|
33
|
-
from prefect.settings import PREFECT_CLOUD_API_URL
|
33
|
+
from prefect.settings import PREFECT_CLOUD_API_URL, PREFECT_CLOUD_UI_URL
|
34
34
|
from prefect.utilities.collections import AutoEnum, listrepr
|
35
35
|
from prefect.utilities.names import generate_slug
|
36
36
|
|
@@ -110,6 +110,7 @@ class StateDetails(PrefectBaseModel):
|
|
110
110
|
pause_key: str = None
|
111
111
|
run_input_keyset: Optional[Dict[str, str]] = None
|
112
112
|
refresh_cache: bool = None
|
113
|
+
retriable: bool = None
|
113
114
|
|
114
115
|
|
115
116
|
class State(ObjectBaseModel, Generic[R]):
|
@@ -777,6 +778,16 @@ class Workspace(PrefectBaseModel):
|
|
777
778
|
f"/workspaces/{self.workspace_id}"
|
778
779
|
)
|
779
780
|
|
781
|
+
def ui_url(self) -> str:
|
782
|
+
"""
|
783
|
+
Generate the UI URL for accessing this workspace
|
784
|
+
"""
|
785
|
+
return (
|
786
|
+
f"{PREFECT_CLOUD_UI_URL.value()}"
|
787
|
+
f"/account/{self.account_id}"
|
788
|
+
f"/workspace/{self.workspace_id}"
|
789
|
+
)
|
790
|
+
|
780
791
|
def __hash__(self):
|
781
792
|
return hash(self.handle)
|
782
793
|
|
@@ -1028,6 +1028,24 @@ async def pause_flow_run(
|
|
1028
1028
|
resumed without providing the input, the flow will fail. If the flow is
|
1029
1029
|
resumed with the input, the flow will resume and the input will be loaded
|
1030
1030
|
and returned from this function.
|
1031
|
+
|
1032
|
+
Example:
|
1033
|
+
```python
|
1034
|
+
@task
|
1035
|
+
def task_one():
|
1036
|
+
for i in range(3):
|
1037
|
+
sleep(1)
|
1038
|
+
|
1039
|
+
@flow
|
1040
|
+
def my_flow():
|
1041
|
+
terminal_state = task_one.submit(return_state=True)
|
1042
|
+
if terminal_state.type == StateType.COMPLETED:
|
1043
|
+
print("Task one succeeded! Pausing flow run..")
|
1044
|
+
pause_flow_run(timeout=2)
|
1045
|
+
else:
|
1046
|
+
print("Task one failed. Skipping pause flow run..")
|
1047
|
+
```
|
1048
|
+
|
1031
1049
|
"""
|
1032
1050
|
if flow_run_id:
|
1033
1051
|
if wait_for_input is not None:
|
@@ -2075,7 +2093,13 @@ async def orchestrate_task_run(
|
|
2075
2093
|
)
|
2076
2094
|
terminal_state.state_details.cache_key = cache_key
|
2077
2095
|
|
2096
|
+
if terminal_state.is_failed():
|
2097
|
+
# Defer to user to decide whether failure is retriable
|
2098
|
+
terminal_state.state_details.retriable = (
|
2099
|
+
await _check_task_failure_retriable(task, task_run, terminal_state)
|
2100
|
+
)
|
2078
2101
|
state = await propose_state(client, terminal_state, task_run_id=task_run.id)
|
2102
|
+
|
2079
2103
|
last_event = _emit_task_run_state_change_event(
|
2080
2104
|
task_run=task_run,
|
2081
2105
|
initial_state=last_state,
|
@@ -2672,6 +2696,48 @@ async def _run_task_hooks(task: Task, task_run: TaskRun, state: State) -> None:
|
|
2672
2696
|
logger.info(f"Hook {hook_name!r} finished running successfully")
|
2673
2697
|
|
2674
2698
|
|
2699
|
+
async def _check_task_failure_retriable(
|
2700
|
+
task: Task, task_run: TaskRun, state: State
|
2701
|
+
) -> bool:
|
2702
|
+
"""Run the `retry_condition_fn` callable for a task, making sure to catch and log any errors
|
2703
|
+
that occur. If None, return True. If not callable, logs an error and returns False.
|
2704
|
+
"""
|
2705
|
+
if task.retry_condition_fn is None:
|
2706
|
+
return True
|
2707
|
+
|
2708
|
+
logger = task_run_logger(task_run)
|
2709
|
+
|
2710
|
+
try:
|
2711
|
+
logger.debug(
|
2712
|
+
f"Running `retry_condition_fn` check {task.retry_condition_fn!r} for task"
|
2713
|
+
f" {task.name!r}"
|
2714
|
+
)
|
2715
|
+
if is_async_fn(task.retry_condition_fn):
|
2716
|
+
return bool(
|
2717
|
+
await task.retry_condition_fn(task=task, task_run=task_run, state=state)
|
2718
|
+
)
|
2719
|
+
else:
|
2720
|
+
return bool(
|
2721
|
+
await from_async.call_in_new_thread(
|
2722
|
+
create_call(
|
2723
|
+
task.retry_condition_fn,
|
2724
|
+
task=task,
|
2725
|
+
task_run=task_run,
|
2726
|
+
state=state,
|
2727
|
+
)
|
2728
|
+
)
|
2729
|
+
)
|
2730
|
+
except Exception:
|
2731
|
+
logger.error(
|
2732
|
+
(
|
2733
|
+
"An error was encountered while running `retry_condition_fn` check"
|
2734
|
+
f" '{task.retry_condition_fn!r}' for task {task.name!r}"
|
2735
|
+
),
|
2736
|
+
exc_info=True,
|
2737
|
+
)
|
2738
|
+
return False
|
2739
|
+
|
2740
|
+
|
2675
2741
|
async def _run_flow_hooks(flow: Flow, flow_run: FlowRun, state: State) -> None:
|
2676
2742
|
"""Run the on_failure, on_completion, on_cancellation, and on_crashed hooks for a flow, making sure to
|
2677
2743
|
catch and log any errors that occur.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Any, Dict, Optional
|
1
|
+
from typing import Any, Dict, Optional, Union
|
2
2
|
from uuid import UUID
|
3
3
|
|
4
4
|
from prefect._internal.pydantic import HAS_PYDANTIC_V2
|
@@ -34,4 +34,15 @@ class RunDeployment(Action):
|
|
34
34
|
deployment_id: UUID = Field(..., description="The identifier of the deployment")
|
35
35
|
|
36
36
|
|
37
|
-
|
37
|
+
class SendNotification(Action):
|
38
|
+
"""Send a notification with the given parameters"""
|
39
|
+
|
40
|
+
type: Literal["send-notification"] = "send-notification"
|
41
|
+
block_document_id: UUID = Field(
|
42
|
+
..., description="The identifier of the notification block"
|
43
|
+
)
|
44
|
+
body: str = Field(..., description="Notification body")
|
45
|
+
subject: Optional[str] = Field(None, description="Notification subject")
|
46
|
+
|
47
|
+
|
48
|
+
ActionTypes = Union[RunDeployment, SendNotification]
|
@@ -341,7 +341,7 @@ class DeploymentTrigger(ResourceTrigger):
|
|
341
341
|
def owner_resource(self) -> Optional[str]:
|
342
342
|
return f"prefect.deployment.{self._deployment_id}"
|
343
343
|
|
344
|
-
def actions(self) -> List[
|
344
|
+
def actions(self) -> List[RunDeployment]:
|
345
345
|
assert self._deployment_id
|
346
346
|
return [
|
347
347
|
RunDeployment(
|
@@ -623,6 +623,8 @@ class Flow(Generic[P, R]):
|
|
623
623
|
"""
|
624
624
|
from prefect.deployments.runner import RunnerDeployment
|
625
625
|
|
626
|
+
if not name.endswith(".py"):
|
627
|
+
raise_on_name_with_banned_characters(name)
|
626
628
|
if self._storage and self._entrypoint:
|
627
629
|
return await RunnerDeployment.from_storage(
|
628
630
|
storage=self._storage,
|
@@ -86,7 +86,7 @@ from prefect.settings import (
|
|
86
86
|
)
|
87
87
|
from prefect.states import Crashed, Pending, exception_to_failed_state
|
88
88
|
from prefect.utilities.asyncutils import is_async_fn, sync_compatible
|
89
|
-
from prefect.utilities.processutils import run_process
|
89
|
+
from prefect.utilities.processutils import _register_signal, run_process
|
90
90
|
from prefect.utilities.services import critical_service_loop
|
91
91
|
|
92
92
|
__all__ = ["Runner", "serve"]
|
@@ -337,7 +337,7 @@ class Runner:
|
|
337
337
|
runner.start()
|
338
338
|
```
|
339
339
|
"""
|
340
|
-
|
340
|
+
_register_signal(signal.SIGTERM, self.handle_sigterm)
|
341
341
|
|
342
342
|
webserver = webserver if webserver is not None else self.webserver
|
343
343
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import shutil
|
1
2
|
import subprocess
|
2
3
|
from copy import deepcopy
|
3
4
|
from pathlib import Path
|
@@ -218,35 +219,49 @@ class GitRepository:
|
|
218
219
|
if self._include_submodules:
|
219
220
|
cmd += ["--recurse-submodules"]
|
220
221
|
cmd += ["--depth", "1"]
|
221
|
-
|
222
|
+
try:
|
223
|
+
await run_process(cmd, cwd=self.destination)
|
224
|
+
self._logger.debug("Successfully pulled latest changes")
|
225
|
+
except subprocess.CalledProcessError as exc:
|
226
|
+
self._logger.error(
|
227
|
+
f"Failed to pull latest changes with exit code {exc}"
|
228
|
+
)
|
229
|
+
shutil.rmtree(self.destination)
|
230
|
+
await self._clone_repo()
|
231
|
+
|
222
232
|
else:
|
223
|
-
self.
|
224
|
-
# Clone the repository if it doesn't exist at the destination
|
233
|
+
await self._clone_repo()
|
225
234
|
|
226
|
-
|
235
|
+
async def _clone_repo(self):
|
236
|
+
"""
|
237
|
+
Clones the repository into the local destination.
|
238
|
+
"""
|
239
|
+
self._logger.debug("Cloning repository %s", self._url)
|
227
240
|
|
228
|
-
|
229
|
-
"git",
|
230
|
-
"clone",
|
231
|
-
repository_url,
|
232
|
-
]
|
233
|
-
if self._branch:
|
234
|
-
cmd += ["--branch", self._branch]
|
235
|
-
if self._include_submodules:
|
236
|
-
cmd += ["--recurse-submodules"]
|
241
|
+
repository_url = self._repository_url_with_credentials
|
237
242
|
|
238
|
-
|
239
|
-
|
243
|
+
cmd = [
|
244
|
+
"git",
|
245
|
+
"clone",
|
246
|
+
repository_url,
|
247
|
+
]
|
248
|
+
if self._branch:
|
249
|
+
cmd += ["--branch", self._branch]
|
250
|
+
if self._include_submodules:
|
251
|
+
cmd += ["--recurse-submodules"]
|
240
252
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
253
|
+
# Limit git history and set path to clone to
|
254
|
+
cmd += ["--depth", "1", str(self.destination)]
|
255
|
+
|
256
|
+
try:
|
257
|
+
await run_process(cmd)
|
258
|
+
except subprocess.CalledProcessError as exc:
|
259
|
+
# Hide the command used to avoid leaking the access token
|
260
|
+
exc_chain = None if self._credentials else exc
|
261
|
+
raise RuntimeError(
|
262
|
+
f"Failed to clone repository {self._url!r} with exit code"
|
263
|
+
f" {exc.returncode}."
|
264
|
+
) from exc_chain
|
250
265
|
|
251
266
|
def __eq__(self, __value) -> bool:
|
252
267
|
if isinstance(__value, GitRepository):
|