prefect-client 3.4.7.dev3__tar.gz → 3.4.7.dev5__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-3.4.7.dev3 → prefect_client-3.4.7.dev5}/PKG-INFO +1 -1
- prefect_client-3.4.7.dev5/src/prefect/AGENTS.md +28 -0
- prefect_client-3.4.7.dev5/src/prefect/_build_info.py +5 -0
- prefect_client-3.4.7.dev5/src/prefect/_internal/websockets.py +106 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_deployments/client.py +137 -2
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/clients.py +2 -76
- prefect_client-3.4.7.dev5/src/prefect/logging/clients.py +347 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/runner.py +1 -1
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/logs.py +20 -15
- prefect_client-3.4.7.dev3/src/prefect/AGENTS.md +0 -38
- prefect_client-3.4.7.dev3/src/prefect/_build_info.py +0 -5
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/.gitignore +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/LICENSE +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/README.md +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/pyproject.toml +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/__main__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/lineage.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_result_records.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_versioning.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/_waiters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/agent.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/automations.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/base.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/context.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/engine.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/related.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/flows.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/futures.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/main.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/plugins.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/py.typed +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/results.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/_observers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/submit.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runner/utils.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/schedules.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/serializers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/states.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/tasks.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/logging.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/processors.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/telemetry/services.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/transactions.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/types/names.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/_ast.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/_engine.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/_git.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/callables.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/variables.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.4.7.dev3 → prefect_client-3.4.7.dev5}/src/prefect/workers/utilities.py +0 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
# Core Prefect SDK
|
2
|
+
|
3
|
+
The foundation for building and executing workflows with Python.
|
4
|
+
|
5
|
+
## Key Components
|
6
|
+
|
7
|
+
- **Flows & Tasks**: Workflow definition with `@flow` and `@task` decorators
|
8
|
+
- **States**: Execution status tracking (Pending, Running, Completed, Failed)
|
9
|
+
- **Context**: Runtime information and dependency injection
|
10
|
+
- **Results**: Task output persistence and retrieval
|
11
|
+
- **Deployments**: Packaging flows for scheduled/triggered execution
|
12
|
+
- **Blocks**: Reusable configuration for external systems
|
13
|
+
|
14
|
+
## Main Modules
|
15
|
+
|
16
|
+
- `flows.py` - Flow lifecycle and execution
|
17
|
+
- `tasks.py` - Task definition and dependency resolution
|
18
|
+
- `engine.py` - Core execution engine
|
19
|
+
- `client/` - Server/Cloud API communication
|
20
|
+
- `deployments/` - Deployment management
|
21
|
+
- `blocks/` - Infrastructure and storage blocks
|
22
|
+
|
23
|
+
## SDK-Specific Notes
|
24
|
+
|
25
|
+
- Async-first execution model with sync support
|
26
|
+
- Immutable flow/task definitions after creation
|
27
|
+
- State transitions handle retries and caching
|
28
|
+
- Backward compatibility required for public APIs
|
@@ -0,0 +1,106 @@
|
|
1
|
+
"""
|
2
|
+
Internal WebSocket proxy utilities for Prefect client connections.
|
3
|
+
|
4
|
+
This module provides shared WebSocket proxy connection logic and SSL configuration
|
5
|
+
to avoid duplication between events and logs clients.
|
6
|
+
"""
|
7
|
+
|
8
|
+
import os
|
9
|
+
import ssl
|
10
|
+
from typing import Any, Generator, Optional
|
11
|
+
from urllib.parse import urlparse
|
12
|
+
from urllib.request import proxy_bypass
|
13
|
+
|
14
|
+
import certifi
|
15
|
+
from python_socks.async_.asyncio import Proxy
|
16
|
+
from typing_extensions import Self
|
17
|
+
from websockets.asyncio.client import ClientConnection, connect
|
18
|
+
|
19
|
+
from prefect.settings import get_current_settings
|
20
|
+
|
21
|
+
|
22
|
+
def create_ssl_context_for_websocket(uri: str) -> Optional[ssl.SSLContext]:
|
23
|
+
"""Create SSL context for WebSocket connections based on URI scheme."""
|
24
|
+
u = urlparse(uri)
|
25
|
+
|
26
|
+
if u.scheme != "wss":
|
27
|
+
return None
|
28
|
+
|
29
|
+
if get_current_settings().api.tls_insecure_skip_verify:
|
30
|
+
# Create an unverified context for insecure connections
|
31
|
+
ctx = ssl.create_default_context()
|
32
|
+
ctx.check_hostname = False
|
33
|
+
ctx.verify_mode = ssl.CERT_NONE
|
34
|
+
return ctx
|
35
|
+
else:
|
36
|
+
# Create a verified context with the certificate file
|
37
|
+
cert_file = get_current_settings().api.ssl_cert_file
|
38
|
+
if not cert_file:
|
39
|
+
cert_file = certifi.where()
|
40
|
+
return ssl.create_default_context(cafile=cert_file)
|
41
|
+
|
42
|
+
|
43
|
+
class WebsocketProxyConnect(connect):
|
44
|
+
"""
|
45
|
+
WebSocket connection class with proxy and SSL support.
|
46
|
+
|
47
|
+
Extends the websockets.asyncio.client.connect class to add HTTP/HTTPS
|
48
|
+
proxy support via environment variables, proxy bypass logic, and SSL
|
49
|
+
certificate verification.
|
50
|
+
"""
|
51
|
+
|
52
|
+
def __init__(self: Self, uri: str, **kwargs: Any):
|
53
|
+
# super() is intentionally deferred to the _proxy_connect method
|
54
|
+
# to allow for the socket to be established first
|
55
|
+
|
56
|
+
self.uri = uri
|
57
|
+
self._kwargs = kwargs
|
58
|
+
|
59
|
+
u = urlparse(uri)
|
60
|
+
host = u.hostname
|
61
|
+
|
62
|
+
if not host:
|
63
|
+
raise ValueError(f"Invalid URI {uri}, no hostname found")
|
64
|
+
|
65
|
+
if u.scheme == "ws":
|
66
|
+
port = u.port or 80
|
67
|
+
proxy_url = os.environ.get("HTTP_PROXY")
|
68
|
+
elif u.scheme == "wss":
|
69
|
+
port = u.port or 443
|
70
|
+
proxy_url = os.environ.get("HTTPS_PROXY")
|
71
|
+
kwargs["server_hostname"] = host
|
72
|
+
else:
|
73
|
+
raise ValueError(
|
74
|
+
"Unsupported scheme %s. Expected 'ws' or 'wss'. " % u.scheme
|
75
|
+
)
|
76
|
+
|
77
|
+
self._proxy = (
|
78
|
+
Proxy.from_url(proxy_url) if proxy_url and not proxy_bypass(host) else None
|
79
|
+
)
|
80
|
+
self._host = host
|
81
|
+
self._port = port
|
82
|
+
|
83
|
+
# Configure SSL context for HTTPS connections
|
84
|
+
ssl_context = create_ssl_context_for_websocket(uri)
|
85
|
+
if ssl_context:
|
86
|
+
self._kwargs.setdefault("ssl", ssl_context)
|
87
|
+
|
88
|
+
async def _proxy_connect(self: Self) -> ClientConnection:
|
89
|
+
if self._proxy:
|
90
|
+
sock = await self._proxy.connect(
|
91
|
+
dest_host=self._host,
|
92
|
+
dest_port=self._port,
|
93
|
+
)
|
94
|
+
self._kwargs["sock"] = sock
|
95
|
+
|
96
|
+
super().__init__(self.uri, **self._kwargs)
|
97
|
+
proto = await self.__await_impl__()
|
98
|
+
return proto
|
99
|
+
|
100
|
+
def __await__(self: Self) -> Generator[Any, None, ClientConnection]:
|
101
|
+
return self._proxy_connect().__await__()
|
102
|
+
|
103
|
+
|
104
|
+
def websocket_connect(uri: str, **kwargs: Any) -> WebsocketProxyConnect:
|
105
|
+
"""Create a WebSocket connection with proxy and SSL support."""
|
106
|
+
return WebsocketProxyConnect(uri, **kwargs)
|
@@ -6,6 +6,7 @@ from uuid import UUID
|
|
6
6
|
|
7
7
|
from httpx import HTTPStatusError, RequestError
|
8
8
|
|
9
|
+
from prefect._internal.compatibility.deprecated import deprecated_callable
|
9
10
|
from prefect.client.orchestration.base import BaseAsyncClient, BaseClient
|
10
11
|
from prefect.exceptions import ObjectNotFound
|
11
12
|
|
@@ -167,7 +168,7 @@ class DeploymentClient(BaseClient):
|
|
167
168
|
|
168
169
|
return UUID(deployment_id)
|
169
170
|
|
170
|
-
def
|
171
|
+
def _set_deployment_paused_state(self, deployment_id: UUID, paused: bool) -> None:
|
171
172
|
self.request(
|
172
173
|
"PATCH",
|
173
174
|
"/deployments/{id}",
|
@@ -175,6 +176,72 @@ class DeploymentClient(BaseClient):
|
|
175
176
|
json={"paused": paused},
|
176
177
|
)
|
177
178
|
|
179
|
+
@deprecated_callable(
|
180
|
+
start_date="Jun 2025",
|
181
|
+
help="Use pause_deployment or resume_deployment instead.",
|
182
|
+
)
|
183
|
+
def set_deployment_paused_state(self, deployment_id: UUID, paused: bool) -> None:
|
184
|
+
"""
|
185
|
+
DEPRECATED: Use pause_deployment or resume_deployment instead.
|
186
|
+
|
187
|
+
Set the paused state of a deployment.
|
188
|
+
|
189
|
+
Args:
|
190
|
+
deployment_id: the deployment ID to update
|
191
|
+
paused: whether the deployment should be paused
|
192
|
+
"""
|
193
|
+
self._set_deployment_paused_state(deployment_id, paused)
|
194
|
+
|
195
|
+
def pause_deployment(self, deployment_id: Union[UUID, str]) -> None:
|
196
|
+
"""
|
197
|
+
Pause a deployment by ID.
|
198
|
+
|
199
|
+
Args:
|
200
|
+
deployment_id: The deployment ID of interest (can be a UUID or a string).
|
201
|
+
|
202
|
+
Raises:
|
203
|
+
ObjectNotFound: If request returns 404
|
204
|
+
RequestError: If request fails
|
205
|
+
"""
|
206
|
+
if not isinstance(deployment_id, UUID):
|
207
|
+
try:
|
208
|
+
deployment_id = UUID(deployment_id)
|
209
|
+
except ValueError:
|
210
|
+
raise ValueError(f"Invalid deployment ID: {deployment_id}")
|
211
|
+
|
212
|
+
try:
|
213
|
+
self._set_deployment_paused_state(deployment_id, paused=True)
|
214
|
+
except HTTPStatusError as e:
|
215
|
+
if e.response.status_code == 404:
|
216
|
+
raise ObjectNotFound(http_exc=e) from e
|
217
|
+
else:
|
218
|
+
raise
|
219
|
+
|
220
|
+
def resume_deployment(self, deployment_id: Union[UUID, str]) -> None:
|
221
|
+
"""
|
222
|
+
Resume (unpause) a deployment by ID.
|
223
|
+
|
224
|
+
Args:
|
225
|
+
deployment_id: The deployment ID of interest (can be a UUID or a string).
|
226
|
+
|
227
|
+
Raises:
|
228
|
+
ObjectNotFound: If request returns 404
|
229
|
+
RequestError: If request fails
|
230
|
+
"""
|
231
|
+
if not isinstance(deployment_id, UUID):
|
232
|
+
try:
|
233
|
+
deployment_id = UUID(deployment_id)
|
234
|
+
except ValueError:
|
235
|
+
raise ValueError(f"Invalid deployment ID: {deployment_id}")
|
236
|
+
|
237
|
+
try:
|
238
|
+
self._set_deployment_paused_state(deployment_id, paused=False)
|
239
|
+
except HTTPStatusError as e:
|
240
|
+
if e.response.status_code == 404:
|
241
|
+
raise ObjectNotFound(http_exc=e) from e
|
242
|
+
else:
|
243
|
+
raise
|
244
|
+
|
178
245
|
def update_deployment(
|
179
246
|
self,
|
180
247
|
deployment_id: UUID,
|
@@ -760,7 +827,7 @@ class DeploymentAsyncClient(BaseAsyncClient):
|
|
760
827
|
|
761
828
|
return UUID(deployment_id)
|
762
829
|
|
763
|
-
async def
|
830
|
+
async def _set_deployment_paused_state(
|
764
831
|
self, deployment_id: UUID, paused: bool
|
765
832
|
) -> None:
|
766
833
|
await self.request(
|
@@ -770,6 +837,74 @@ class DeploymentAsyncClient(BaseAsyncClient):
|
|
770
837
|
json={"paused": paused},
|
771
838
|
)
|
772
839
|
|
840
|
+
@deprecated_callable(
|
841
|
+
start_date="Jun 2025",
|
842
|
+
help="Use pause_deployment or resume_deployment instead.",
|
843
|
+
)
|
844
|
+
async def set_deployment_paused_state(
|
845
|
+
self, deployment_id: UUID, paused: bool
|
846
|
+
) -> None:
|
847
|
+
"""
|
848
|
+
DEPRECATED: Use pause_deployment or resume_deployment instead.
|
849
|
+
|
850
|
+
Set the paused state of a deployment.
|
851
|
+
|
852
|
+
Args:
|
853
|
+
deployment_id: the deployment ID to update
|
854
|
+
paused: whether the deployment should be paused
|
855
|
+
"""
|
856
|
+
await self._set_deployment_paused_state(deployment_id, paused)
|
857
|
+
|
858
|
+
async def pause_deployment(self, deployment_id: Union[UUID, str]) -> None:
|
859
|
+
"""
|
860
|
+
Pause a deployment by ID.
|
861
|
+
|
862
|
+
Args:
|
863
|
+
deployment_id: The deployment ID of interest (can be a UUID or a string).
|
864
|
+
|
865
|
+
Raises:
|
866
|
+
ObjectNotFound: If request returns 404
|
867
|
+
RequestError: If request fails
|
868
|
+
"""
|
869
|
+
if not isinstance(deployment_id, UUID):
|
870
|
+
try:
|
871
|
+
deployment_id = UUID(deployment_id)
|
872
|
+
except ValueError:
|
873
|
+
raise ValueError(f"Invalid deployment ID: {deployment_id}")
|
874
|
+
|
875
|
+
try:
|
876
|
+
await self._set_deployment_paused_state(deployment_id, paused=True)
|
877
|
+
except HTTPStatusError as e:
|
878
|
+
if e.response.status_code == 404:
|
879
|
+
raise ObjectNotFound(http_exc=e) from e
|
880
|
+
else:
|
881
|
+
raise
|
882
|
+
|
883
|
+
async def resume_deployment(self, deployment_id: Union[UUID, str]) -> None:
|
884
|
+
"""
|
885
|
+
Resume (unpause) a deployment by ID.
|
886
|
+
|
887
|
+
Args:
|
888
|
+
deployment_id: The deployment ID of interest (can be a UUID or a string).
|
889
|
+
|
890
|
+
Raises:
|
891
|
+
ObjectNotFound: If request returns 404
|
892
|
+
RequestError: If request fails
|
893
|
+
"""
|
894
|
+
if not isinstance(deployment_id, UUID):
|
895
|
+
try:
|
896
|
+
deployment_id = UUID(deployment_id)
|
897
|
+
except ValueError:
|
898
|
+
raise ValueError(f"Invalid deployment ID: {deployment_id}")
|
899
|
+
|
900
|
+
try:
|
901
|
+
await self._set_deployment_paused_state(deployment_id, paused=False)
|
902
|
+
except HTTPStatusError as e:
|
903
|
+
if e.response.status_code == 404:
|
904
|
+
raise ObjectNotFound(http_exc=e) from e
|
905
|
+
else:
|
906
|
+
raise
|
907
|
+
|
773
908
|
async def update_deployment(
|
774
909
|
self,
|
775
910
|
deployment_id: UUID,
|
@@ -1,7 +1,5 @@
|
|
1
1
|
import abc
|
2
2
|
import asyncio
|
3
|
-
import os
|
4
|
-
import ssl
|
5
3
|
from datetime import timedelta
|
6
4
|
from types import TracebackType
|
7
5
|
from typing import (
|
@@ -9,7 +7,6 @@ from typing import (
|
|
9
7
|
Any,
|
10
8
|
ClassVar,
|
11
9
|
Dict,
|
12
|
-
Generator,
|
13
10
|
List,
|
14
11
|
MutableMapping,
|
15
12
|
Optional,
|
@@ -17,18 +14,14 @@ from typing import (
|
|
17
14
|
Type,
|
18
15
|
cast,
|
19
16
|
)
|
20
|
-
from urllib.parse import urlparse
|
21
|
-
from urllib.request import proxy_bypass
|
22
17
|
from uuid import UUID
|
23
18
|
|
24
|
-
import certifi
|
25
19
|
import orjson
|
26
20
|
from cachetools import TTLCache
|
27
21
|
from prometheus_client import Counter
|
28
|
-
from python_socks.async_.asyncio import Proxy
|
29
22
|
from typing_extensions import Self
|
30
23
|
from websockets import Subprotocol
|
31
|
-
from websockets.asyncio.client import ClientConnection
|
24
|
+
from websockets.asyncio.client import ClientConnection
|
32
25
|
from websockets.exceptions import (
|
33
26
|
ConnectionClosed,
|
34
27
|
ConnectionClosedError,
|
@@ -36,13 +29,12 @@ from websockets.exceptions import (
|
|
36
29
|
)
|
37
30
|
|
38
31
|
import prefect.types._datetime
|
32
|
+
from prefect._internal.websockets import websocket_connect
|
39
33
|
from prefect.events import Event
|
40
34
|
from prefect.logging import get_logger
|
41
35
|
from prefect.settings import (
|
42
36
|
PREFECT_API_AUTH_STRING,
|
43
37
|
PREFECT_API_KEY,
|
44
|
-
PREFECT_API_SSL_CERT_FILE,
|
45
|
-
PREFECT_API_TLS_INSECURE_SKIP_VERIFY,
|
46
38
|
PREFECT_API_URL,
|
47
39
|
PREFECT_CLOUD_API_URL,
|
48
40
|
PREFECT_DEBUG_MODE,
|
@@ -94,72 +86,6 @@ def events_out_socket_from_api_url(url: str) -> str:
|
|
94
86
|
return http_to_ws(url) + "/events/out"
|
95
87
|
|
96
88
|
|
97
|
-
class WebsocketProxyConnect(connect):
|
98
|
-
def __init__(self: Self, uri: str, **kwargs: Any):
|
99
|
-
# super() is intentionally deferred to the _proxy_connect method
|
100
|
-
# to allow for the socket to be established first
|
101
|
-
|
102
|
-
self.uri = uri
|
103
|
-
self._kwargs = kwargs
|
104
|
-
|
105
|
-
u = urlparse(uri)
|
106
|
-
host = u.hostname
|
107
|
-
|
108
|
-
if not host:
|
109
|
-
raise ValueError(f"Invalid URI {uri}, no hostname found")
|
110
|
-
|
111
|
-
if u.scheme == "ws":
|
112
|
-
port = u.port or 80
|
113
|
-
proxy_url = os.environ.get("HTTP_PROXY")
|
114
|
-
elif u.scheme == "wss":
|
115
|
-
port = u.port or 443
|
116
|
-
proxy_url = os.environ.get("HTTPS_PROXY")
|
117
|
-
kwargs["server_hostname"] = host
|
118
|
-
else:
|
119
|
-
raise ValueError(
|
120
|
-
"Unsupported scheme %s. Expected 'ws' or 'wss'. " % u.scheme
|
121
|
-
)
|
122
|
-
|
123
|
-
self._proxy = (
|
124
|
-
Proxy.from_url(proxy_url) if proxy_url and not proxy_bypass(host) else None
|
125
|
-
)
|
126
|
-
self._host = host
|
127
|
-
self._port = port
|
128
|
-
|
129
|
-
if PREFECT_API_TLS_INSECURE_SKIP_VERIFY and u.scheme == "wss":
|
130
|
-
# Create an unverified context for insecure connections
|
131
|
-
ctx = ssl.create_default_context()
|
132
|
-
ctx.check_hostname = False
|
133
|
-
ctx.verify_mode = ssl.CERT_NONE
|
134
|
-
self._kwargs.setdefault("ssl", ctx)
|
135
|
-
elif u.scheme == "wss":
|
136
|
-
cert_file = PREFECT_API_SSL_CERT_FILE.value()
|
137
|
-
if not cert_file:
|
138
|
-
cert_file = certifi.where()
|
139
|
-
# Create a verified context with the certificate file
|
140
|
-
ctx = ssl.create_default_context(cafile=cert_file)
|
141
|
-
self._kwargs.setdefault("ssl", ctx)
|
142
|
-
|
143
|
-
async def _proxy_connect(self: Self) -> ClientConnection:
|
144
|
-
if self._proxy:
|
145
|
-
sock = await self._proxy.connect(
|
146
|
-
dest_host=self._host,
|
147
|
-
dest_port=self._port,
|
148
|
-
)
|
149
|
-
self._kwargs["sock"] = sock
|
150
|
-
|
151
|
-
super().__init__(self.uri, **self._kwargs)
|
152
|
-
proto = await self.__await_impl__()
|
153
|
-
return proto
|
154
|
-
|
155
|
-
def __await__(self: Self) -> Generator[Any, None, ClientConnection]:
|
156
|
-
return self._proxy_connect().__await__()
|
157
|
-
|
158
|
-
|
159
|
-
def websocket_connect(uri: str, **kwargs: Any) -> WebsocketProxyConnect:
|
160
|
-
return WebsocketProxyConnect(uri, **kwargs)
|
161
|
-
|
162
|
-
|
163
89
|
def get_events_client(
|
164
90
|
reconnection_attempts: int = 10,
|
165
91
|
checkpoint_every: int = 700,
|