prefect-client 3.5.1.dev1__tar.gz → 3.5.1.dev3__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.5.1.dev1 → prefect_client-3.5.1.dev3}/PKG-INFO +1 -1
- prefect_client-3.5.1.dev3/src/prefect/_build_info.py +5 -0
- prefect_client-3.5.1.dev3/src/prefect/_internal/lazy.py +47 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/actions.py +3 -5
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/flow_runs.py +16 -1
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/steps/core.py +104 -7
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/exceptions.py +2 -2
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/flows.py +5 -1
- prefect_client-3.5.1.dev3/src/prefect/infrastructure/provisioners/__init__.py +73 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +6 -1
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +6 -1
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/provisioners/ecs.py +2 -1
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/__init__.py +10 -7
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/base.py +2 -1
- prefect_client-3.5.1.dev1/src/prefect/_build_info.py +0 -5
- prefect_client-3.5.1.dev1/src/prefect/infrastructure/provisioners/__init__.py +0 -56
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/.gitignore +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/LICENSE +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/README.md +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/pyproject.toml +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/__main__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_result_records.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_versioning.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_waiters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/agent.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/automations.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/base.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/context.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/engine.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/related.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/futures.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/main.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/plugins.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/py.typed +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/results.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runner/_observers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/schedules.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/serializers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/states.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/tasks.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/transactions.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/types/_schema.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/types/names.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/_ast.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/_engine.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/_git.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/callables.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/variables.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/workers/utilities.py +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Utilities for lazy-loading module-level objects."""
|
|
2
|
+
|
|
3
|
+
from typing import Callable, Generic, TypeVar
|
|
4
|
+
|
|
5
|
+
K = TypeVar("K")
|
|
6
|
+
V = TypeVar("V")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class LazyDict(Generic[K, V]):
|
|
10
|
+
"""
|
|
11
|
+
A dictionary-like object that defers loading its contents until first access.
|
|
12
|
+
|
|
13
|
+
Useful for module-level registries that import heavy dependencies. The loader
|
|
14
|
+
function is called once on first access, and the result is cached.
|
|
15
|
+
|
|
16
|
+
Example:
|
|
17
|
+
>>> def load_plugins() -> dict[str, type]:
|
|
18
|
+
... from heavy_module import PluginA, PluginB
|
|
19
|
+
... return {"a": PluginA, "b": PluginB}
|
|
20
|
+
>>>
|
|
21
|
+
>>> plugins: LazyDict[str, type] = LazyDict(load_plugins)
|
|
22
|
+
>>> # Nothing loaded yet
|
|
23
|
+
>>> plugins.get("a") # Triggers load, returns PluginA
|
|
24
|
+
>>> plugins.get("b") # Uses cached result, returns PluginB
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, loader_func: Callable[[], dict[K, V]]) -> None:
|
|
28
|
+
self._loader = loader_func
|
|
29
|
+
self._cache: dict[K, V] | None = None
|
|
30
|
+
|
|
31
|
+
def _ensure_loaded(self) -> dict[K, V]:
|
|
32
|
+
"""Load the dictionary contents if not already loaded."""
|
|
33
|
+
if self._cache is None:
|
|
34
|
+
self._cache = self._loader()
|
|
35
|
+
return self._cache
|
|
36
|
+
|
|
37
|
+
def get(self, key: K, default: V | None = None) -> V | None:
|
|
38
|
+
"""Get an item from the lazy dict, loading if necessary."""
|
|
39
|
+
return self._ensure_loaded().get(key, default)
|
|
40
|
+
|
|
41
|
+
def __contains__(self, key: K) -> bool:
|
|
42
|
+
"""Check if key is in the lazy dict, loading if necessary."""
|
|
43
|
+
return key in self._ensure_loaded()
|
|
44
|
+
|
|
45
|
+
def __getitem__(self, key: K) -> V:
|
|
46
|
+
"""Get an item from the lazy dict, loading if necessary."""
|
|
47
|
+
return self._ensure_loaded()[key]
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/client/schemas/actions.py
RENAMED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import datetime
|
|
4
4
|
from copy import deepcopy
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Any, Callable, Optional, TypeVar, Union
|
|
6
6
|
from uuid import UUID, uuid4
|
|
7
7
|
|
|
8
8
|
import jsonschema
|
|
@@ -22,6 +22,7 @@ from prefect._internal.schemas.validators import (
|
|
|
22
22
|
validate_name_present_on_nonanonymous_blocks,
|
|
23
23
|
validate_schedule_max_scheduled_runs,
|
|
24
24
|
)
|
|
25
|
+
from prefect._result_records import ResultRecordMetadata
|
|
25
26
|
from prefect.client.schemas.objects import (
|
|
26
27
|
StateDetails,
|
|
27
28
|
StateType,
|
|
@@ -57,9 +58,6 @@ from prefect.types.names import (
|
|
|
57
58
|
from prefect.utilities.collections import visit_collection
|
|
58
59
|
from prefect.utilities.pydantic import get_class_fields_only
|
|
59
60
|
|
|
60
|
-
if TYPE_CHECKING:
|
|
61
|
-
from prefect._result_records import ResultRecordMetadata
|
|
62
|
-
|
|
63
61
|
R = TypeVar("R")
|
|
64
62
|
|
|
65
63
|
|
|
@@ -70,7 +68,7 @@ class StateCreate(ActionBaseModel):
|
|
|
70
68
|
name: Optional[str] = Field(default=None)
|
|
71
69
|
message: Optional[str] = Field(default=None, examples=["Run started"])
|
|
72
70
|
state_details: StateDetails = Field(default_factory=StateDetails)
|
|
73
|
-
data: Union[
|
|
71
|
+
data: Union[ResultRecordMetadata, Any] = Field(
|
|
74
72
|
default=None,
|
|
75
73
|
)
|
|
76
74
|
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/flow_runs.py
RENAMED
|
@@ -7,7 +7,7 @@ from opentelemetry import trace
|
|
|
7
7
|
|
|
8
8
|
import prefect
|
|
9
9
|
from prefect._result_records import ResultRecordMetadata
|
|
10
|
-
from prefect.client.schemas import FlowRun
|
|
10
|
+
from prefect.client.schemas import FlowRun, TaskRunResult
|
|
11
11
|
from prefect.client.utilities import inject_client
|
|
12
12
|
from prefect.context import FlowRunContext, TaskRunContext
|
|
13
13
|
from prefect.logging import get_logger
|
|
@@ -136,6 +136,21 @@ async def run_deployment(
|
|
|
136
136
|
k: await collect_task_run_inputs(v) for k, v in parameters.items()
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
# Track parent task if this is being called from within a task
|
|
140
|
+
# This enables the execution graph to properly display the deployment
|
|
141
|
+
# flow run as nested under the calling task
|
|
142
|
+
if task_run_ctx:
|
|
143
|
+
# The task run is only considered a parent if it is in the same
|
|
144
|
+
# flow run (otherwise the child is in a subflow, so the subflow
|
|
145
|
+
# serves as the parent) or if there is no flow run
|
|
146
|
+
if not flow_run_ctx or (
|
|
147
|
+
task_run_ctx.task_run.flow_run_id
|
|
148
|
+
== getattr(flow_run_ctx.flow_run, "id", None)
|
|
149
|
+
):
|
|
150
|
+
task_inputs["__parents__"] = [
|
|
151
|
+
TaskRunResult(id=task_run_ctx.task_run.id)
|
|
152
|
+
]
|
|
153
|
+
|
|
139
154
|
if deployment_id:
|
|
140
155
|
flow = await client.read_flow(deployment.flow_id)
|
|
141
156
|
deployment_name = f"{flow.name}/{deployment.name}"
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/deployments/steps/core.py
RENAMED
|
@@ -19,12 +19,15 @@ import subprocess
|
|
|
19
19
|
import warnings
|
|
20
20
|
from copy import deepcopy
|
|
21
21
|
from importlib import import_module
|
|
22
|
-
from typing import Any
|
|
22
|
+
from typing import Any
|
|
23
|
+
from uuid import UUID
|
|
23
24
|
|
|
24
25
|
from prefect._internal.compatibility.deprecated import PrefectDeprecationWarning
|
|
25
26
|
from prefect._internal.concurrency.api import Call, from_async
|
|
26
27
|
from prefect._internal.installation import install_packages
|
|
27
28
|
from prefect._internal.integrations import KNOWN_EXTRAS_FOR_PACKAGES
|
|
29
|
+
from prefect.events.clients import get_events_client
|
|
30
|
+
from prefect.events.schemas.events import Event, RelatedResource, Resource
|
|
28
31
|
from prefect.logging.loggers import get_logger
|
|
29
32
|
from prefect.settings import PREFECT_DEBUG_MODE
|
|
30
33
|
from prefect.utilities.importtools import import_object
|
|
@@ -65,7 +68,7 @@ def _strip_version(requirement: str) -> str:
|
|
|
65
68
|
|
|
66
69
|
|
|
67
70
|
def _get_function_for_step(
|
|
68
|
-
fully_qualified_name: str, requires:
|
|
71
|
+
fully_qualified_name: str, requires: str | list[str] | None = None
|
|
69
72
|
):
|
|
70
73
|
if not isinstance(requires, list):
|
|
71
74
|
packages = [requires] if requires else []
|
|
@@ -103,7 +106,7 @@ def _get_function_for_step(
|
|
|
103
106
|
|
|
104
107
|
|
|
105
108
|
async def run_step(
|
|
106
|
-
step: dict[str, Any], upstream_outputs:
|
|
109
|
+
step: dict[str, Any], upstream_outputs: dict[str, Any] | None = None
|
|
107
110
|
) -> dict[str, Any]:
|
|
108
111
|
"""
|
|
109
112
|
Runs a step, returns the step's output.
|
|
@@ -141,17 +144,34 @@ async def run_step(
|
|
|
141
144
|
|
|
142
145
|
|
|
143
146
|
async def run_steps(
|
|
144
|
-
steps:
|
|
145
|
-
upstream_outputs:
|
|
147
|
+
steps: list[dict[str, Any]],
|
|
148
|
+
upstream_outputs: dict[str, Any] | None = None,
|
|
146
149
|
print_function: Any = print,
|
|
150
|
+
deployment: Any | None = None,
|
|
151
|
+
flow_run: Any | None = None,
|
|
152
|
+
logger: Any | None = None,
|
|
147
153
|
) -> dict[str, Any]:
|
|
148
154
|
upstream_outputs = deepcopy(upstream_outputs) if upstream_outputs else {}
|
|
149
|
-
for step in steps:
|
|
155
|
+
for step_index, step in enumerate(steps):
|
|
150
156
|
if not step:
|
|
151
157
|
continue
|
|
152
158
|
fqn, inputs = _get_step_fully_qualified_name_and_inputs(step)
|
|
153
159
|
step_name = fqn.split(".")[-1]
|
|
154
160
|
print_function(f" > Running {step_name} step...")
|
|
161
|
+
|
|
162
|
+
# SECURITY: Serialize inputs BEFORE running the step (and thus before templating).
|
|
163
|
+
# This ensures that the event payload contains template strings like
|
|
164
|
+
# "{{ prefect.blocks.secret.api-key }}" rather than resolved secret values.
|
|
165
|
+
# Templating (which resolves blocks, variables, and env vars) happens inside
|
|
166
|
+
# run_step(), so by serializing here we prevent secrets from leaking in events.
|
|
167
|
+
serialized_step = {
|
|
168
|
+
"index": step_index,
|
|
169
|
+
"qualified_name": fqn,
|
|
170
|
+
"step_name": step_name,
|
|
171
|
+
"id": inputs.get("id"),
|
|
172
|
+
"inputs": inputs, # Keep all inputs including reserved keywords like 'requires'
|
|
173
|
+
}
|
|
174
|
+
|
|
155
175
|
try:
|
|
156
176
|
# catch warnings to ensure deprecation warnings are printed
|
|
157
177
|
with warnings.catch_warnings(record=True) as w:
|
|
@@ -190,11 +210,88 @@ async def run_steps(
|
|
|
190
210
|
if inputs.get("id"):
|
|
191
211
|
upstream_outputs[inputs.get("id")] = step_output
|
|
192
212
|
upstream_outputs.update(step_output)
|
|
213
|
+
|
|
214
|
+
# Emit success event for this step
|
|
215
|
+
await _emit_pull_step_event(
|
|
216
|
+
serialized_step,
|
|
217
|
+
event_type="prefect.flow-run.pull-step.executed",
|
|
218
|
+
deployment=deployment,
|
|
219
|
+
flow_run=flow_run,
|
|
220
|
+
logger=logger,
|
|
221
|
+
)
|
|
193
222
|
except Exception as exc:
|
|
223
|
+
# Emit failure event for this step
|
|
224
|
+
await _emit_pull_step_event(
|
|
225
|
+
serialized_step,
|
|
226
|
+
event_type="prefect.flow-run.pull-step.failed",
|
|
227
|
+
deployment=deployment,
|
|
228
|
+
flow_run=flow_run,
|
|
229
|
+
logger=logger,
|
|
230
|
+
)
|
|
194
231
|
raise StepExecutionError(f"Encountered error while running {fqn}") from exc
|
|
232
|
+
|
|
195
233
|
return upstream_outputs
|
|
196
234
|
|
|
197
235
|
|
|
198
|
-
def _get_step_fully_qualified_name_and_inputs(step:
|
|
236
|
+
def _get_step_fully_qualified_name_and_inputs(step: dict) -> tuple[str, dict]:
|
|
199
237
|
step = deepcopy(step)
|
|
200
238
|
return step.popitem()
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
async def _emit_pull_step_event(
|
|
242
|
+
serialized_step: dict[str, Any],
|
|
243
|
+
*,
|
|
244
|
+
event_type: str,
|
|
245
|
+
deployment: Any | None = None,
|
|
246
|
+
flow_run: Any | None = None,
|
|
247
|
+
logger: Any | None = None,
|
|
248
|
+
) -> None:
|
|
249
|
+
# Get flow_run_id from flow_run param or environment
|
|
250
|
+
flow_run_id = None
|
|
251
|
+
if flow_run:
|
|
252
|
+
flow_run_id = flow_run.id
|
|
253
|
+
else:
|
|
254
|
+
# Read directly from environment variable
|
|
255
|
+
flow_run_id_str = os.getenv("PREFECT__FLOW_RUN_ID")
|
|
256
|
+
if flow_run_id_str:
|
|
257
|
+
flow_run_id = UUID(flow_run_id_str)
|
|
258
|
+
|
|
259
|
+
if not flow_run_id:
|
|
260
|
+
return
|
|
261
|
+
|
|
262
|
+
# Build related resources
|
|
263
|
+
related: list[RelatedResource] = []
|
|
264
|
+
if deployment:
|
|
265
|
+
related.append(
|
|
266
|
+
RelatedResource(
|
|
267
|
+
{
|
|
268
|
+
"prefect.resource.id": f"prefect.deployment.{deployment.id}",
|
|
269
|
+
"prefect.resource.role": "deployment",
|
|
270
|
+
}
|
|
271
|
+
)
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
try:
|
|
275
|
+
# Use events client directly with checkpoint_every=1 to avoid buffering issues
|
|
276
|
+
async with get_events_client(checkpoint_every=1) as events_client:
|
|
277
|
+
await events_client.emit(
|
|
278
|
+
Event(
|
|
279
|
+
event=event_type,
|
|
280
|
+
resource=Resource(
|
|
281
|
+
{
|
|
282
|
+
"prefect.resource.id": f"prefect.flow-run.{flow_run_id}",
|
|
283
|
+
}
|
|
284
|
+
),
|
|
285
|
+
related=related,
|
|
286
|
+
payload=serialized_step,
|
|
287
|
+
)
|
|
288
|
+
)
|
|
289
|
+
except Exception:
|
|
290
|
+
if logger:
|
|
291
|
+
logger.warning(
|
|
292
|
+
"Failed to emit pull-step event for flow run %s", flow_run_id
|
|
293
|
+
)
|
|
294
|
+
else:
|
|
295
|
+
get_logger(__name__).warning(
|
|
296
|
+
"Failed to emit pull-step event for flow run %s", flow_run_id
|
|
297
|
+
)
|
|
@@ -17,8 +17,8 @@ if TYPE_CHECKING:
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def _trim_traceback(
|
|
20
|
-
tb:
|
|
21
|
-
) ->
|
|
20
|
+
tb: TracebackType | None, remove_modules: Iterable[ModuleType]
|
|
21
|
+
) -> TracebackType | None:
|
|
22
22
|
"""
|
|
23
23
|
Utility to remove frames from specific modules from a traceback.
|
|
24
24
|
|
|
@@ -2814,7 +2814,11 @@ async def load_flow_from_flow_run(
|
|
|
2814
2814
|
|
|
2815
2815
|
try:
|
|
2816
2816
|
output = await run_steps(
|
|
2817
|
-
deployment.pull_steps,
|
|
2817
|
+
deployment.pull_steps,
|
|
2818
|
+
print_function=run_logger.info,
|
|
2819
|
+
deployment=deployment,
|
|
2820
|
+
flow_run=flow_run,
|
|
2821
|
+
logger=run_logger,
|
|
2818
2822
|
)
|
|
2819
2823
|
except StepExecutionError as e:
|
|
2820
2824
|
e = e.__cause__ or e
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional, Protocol, Type
|
|
2
|
+
|
|
3
|
+
import rich.console
|
|
4
|
+
|
|
5
|
+
from prefect._internal.lazy import LazyDict
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from prefect.client.orchestration import PrefectClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _load_provisioners() -> dict[str, type]:
|
|
12
|
+
"""Lazy load provisioners to avoid importing heavy cloud SDKs at module import time."""
|
|
13
|
+
from prefect.infrastructure.provisioners.coiled import CoiledPushProvisioner
|
|
14
|
+
from prefect.infrastructure.provisioners.modal import ModalPushProvisioner
|
|
15
|
+
|
|
16
|
+
from .cloud_run import CloudRunPushProvisioner
|
|
17
|
+
from .container_instance import ContainerInstancePushProvisioner
|
|
18
|
+
from .ecs import ElasticContainerServicePushProvisioner
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
"cloud-run:push": CloudRunPushProvisioner,
|
|
22
|
+
"cloud-run-v2:push": CloudRunPushProvisioner,
|
|
23
|
+
"azure-container-instance:push": ContainerInstancePushProvisioner,
|
|
24
|
+
"ecs:push": ElasticContainerServicePushProvisioner,
|
|
25
|
+
"modal:push": ModalPushProvisioner,
|
|
26
|
+
"coiled:push": CoiledPushProvisioner,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
_provisioners_lazy: LazyDict[str, type] = LazyDict(_load_provisioners)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def __getattr__(name: str) -> LazyDict[str, type]:
|
|
34
|
+
"""Lazy load module attributes."""
|
|
35
|
+
if name == "_provisioners":
|
|
36
|
+
return _provisioners_lazy
|
|
37
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class Provisioner(Protocol):
|
|
41
|
+
@property
|
|
42
|
+
def console(self) -> rich.console.Console: ...
|
|
43
|
+
|
|
44
|
+
@console.setter
|
|
45
|
+
def console(self, value: rich.console.Console) -> None: ...
|
|
46
|
+
|
|
47
|
+
async def provision(
|
|
48
|
+
self,
|
|
49
|
+
work_pool_name: str,
|
|
50
|
+
base_job_template: Dict[str, Any],
|
|
51
|
+
client: Optional["PrefectClient"] = None,
|
|
52
|
+
) -> Dict[str, Any]: ...
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def get_infrastructure_provisioner_for_work_pool_type(
|
|
56
|
+
work_pool_type: str,
|
|
57
|
+
) -> Type[Provisioner]:
|
|
58
|
+
"""
|
|
59
|
+
Retrieve an instance of the infrastructure provisioner for the given work pool type.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
work_pool_type: the work pool type
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
an instance of the infrastructure provisioner for the given work pool type
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
ValueError: if the work pool type is not supported
|
|
69
|
+
"""
|
|
70
|
+
provisioner = _provisioners_lazy.get(work_pool_type)
|
|
71
|
+
if provisioner is None:
|
|
72
|
+
raise ValueError(f"Unsupported work pool type: {work_pool_type}")
|
|
73
|
+
return provisioner()
|
|
@@ -16,7 +16,6 @@ from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
|
16
16
|
from rich.prompt import Confirm
|
|
17
17
|
from rich.syntax import Syntax
|
|
18
18
|
|
|
19
|
-
from prefect.cli._prompts import prompt, prompt_select_from_table
|
|
20
19
|
from prefect.client.orchestration import ServerType
|
|
21
20
|
from prefect.client.schemas.actions import BlockDocumentCreate
|
|
22
21
|
from prefect.client.utilities import inject_client
|
|
@@ -85,6 +84,8 @@ class CloudRunPushProvisioner:
|
|
|
85
84
|
)
|
|
86
85
|
|
|
87
86
|
async def _get_project(self):
|
|
87
|
+
from prefect.cli._prompts import prompt_select_from_table
|
|
88
|
+
|
|
88
89
|
if self._console.is_interactive:
|
|
89
90
|
with Progress(
|
|
90
91
|
SpinnerColumn(),
|
|
@@ -276,6 +277,8 @@ class CloudRunPushProvisioner:
|
|
|
276
277
|
async def _customize_resource_names(
|
|
277
278
|
self, work_pool_name: str, client: "PrefectClient"
|
|
278
279
|
) -> bool:
|
|
280
|
+
from prefect.cli._prompts import prompt
|
|
281
|
+
|
|
279
282
|
self._service_account_name = prompt(
|
|
280
283
|
"Please enter a name for the service account",
|
|
281
284
|
default=self._service_account_name,
|
|
@@ -302,6 +305,8 @@ class CloudRunPushProvisioner:
|
|
|
302
305
|
base_job_template: dict,
|
|
303
306
|
client: Optional["PrefectClient"] = None,
|
|
304
307
|
) -> Dict[str, Any]:
|
|
308
|
+
from prefect.cli._prompts import prompt_select_from_table
|
|
309
|
+
|
|
305
310
|
assert client, "Client injection failed"
|
|
306
311
|
await self._verify_gcloud_ready()
|
|
307
312
|
self._project = await self._get_project()
|
|
@@ -31,7 +31,6 @@ from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
|
31
31
|
from rich.prompt import Confirm
|
|
32
32
|
from rich.syntax import Syntax
|
|
33
33
|
|
|
34
|
-
from prefect.cli._prompts import prompt, prompt_select_from_table
|
|
35
34
|
from prefect.client.schemas.actions import BlockDocumentCreate
|
|
36
35
|
from prefect.client.utilities import inject_client
|
|
37
36
|
from prefect.exceptions import ObjectAlreadyExists, ObjectNotFound
|
|
@@ -226,6 +225,8 @@ class ContainerInstancePushProvisioner:
|
|
|
226
225
|
Raises:
|
|
227
226
|
RuntimeError: If no Azure subscriptions are found or the Azure CLI command execution fails.
|
|
228
227
|
"""
|
|
228
|
+
from prefect.cli._prompts import prompt_select_from_table
|
|
229
|
+
|
|
229
230
|
if self._console.is_interactive:
|
|
230
231
|
with Progress(
|
|
231
232
|
SpinnerColumn(),
|
|
@@ -818,6 +819,8 @@ class ContainerInstancePushProvisioner:
|
|
|
818
819
|
async def _customize_resource_names(
|
|
819
820
|
self, work_pool_name: str, client: "PrefectClient"
|
|
820
821
|
) -> bool:
|
|
822
|
+
from prefect.cli._prompts import prompt
|
|
823
|
+
|
|
821
824
|
self._resource_group_name = prompt(
|
|
822
825
|
"Please enter a name for the resource group",
|
|
823
826
|
default=self._resource_group_name,
|
|
@@ -874,6 +877,8 @@ class ContainerInstancePushProvisioner:
|
|
|
874
877
|
Raises:
|
|
875
878
|
RuntimeError: If client injection fails or the Azure CLI command execution fails.
|
|
876
879
|
"""
|
|
880
|
+
from prefect.cli._prompts import prompt_select_from_table
|
|
881
|
+
|
|
877
882
|
if not client:
|
|
878
883
|
self._console.print(
|
|
879
884
|
"Client injection failed, cannot proceed with provisioning.",
|
|
@@ -22,7 +22,6 @@ from rich.prompt import Confirm
|
|
|
22
22
|
from rich.syntax import Syntax
|
|
23
23
|
|
|
24
24
|
from prefect._internal.installation import ainstall_packages
|
|
25
|
-
from prefect.cli._prompts import prompt
|
|
26
25
|
from prefect.client.schemas.actions import BlockDocumentCreate
|
|
27
26
|
from prefect.client.utilities import inject_client
|
|
28
27
|
from prefect.exceptions import ObjectNotFound
|
|
@@ -1179,6 +1178,8 @@ class ElasticContainerServicePushProvisioner:
|
|
|
1179
1178
|
Returns:
|
|
1180
1179
|
dict: An updated copy base job template.
|
|
1181
1180
|
"""
|
|
1181
|
+
from prefect.cli._prompts import prompt
|
|
1182
|
+
|
|
1182
1183
|
if not self.is_boto3_installed():
|
|
1183
1184
|
if self.console.is_interactive and Confirm.ask(
|
|
1184
1185
|
"boto3 is required to configure your AWS account. Would you like to"
|
|
@@ -10,11 +10,8 @@ After https://github.com/pydantic/pydantic/issues/9789 is resolved, we will be a
|
|
|
10
10
|
for settings, at which point we will not need to use the "after" model_validator.
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
from
|
|
14
|
-
|
|
15
|
-
_get_settings_fields,
|
|
16
|
-
_get_valid_setting_names,
|
|
17
|
-
)
|
|
13
|
+
from typing import TYPE_CHECKING
|
|
14
|
+
|
|
18
15
|
from prefect.settings.models.root import Settings, canonical_environment_prefix
|
|
19
16
|
|
|
20
17
|
from prefect.settings.profiles import (
|
|
@@ -29,11 +26,18 @@ from prefect.settings.profiles import (
|
|
|
29
26
|
from prefect.settings.context import get_current_settings, temporary_settings
|
|
30
27
|
from prefect.settings.constants import DEFAULT_PROFILES_PATH
|
|
31
28
|
|
|
29
|
+
if TYPE_CHECKING:
|
|
30
|
+
from prefect.settings.legacy import Setting
|
|
32
31
|
############################################################################
|
|
33
32
|
# Allow traditional env var access
|
|
34
33
|
|
|
35
34
|
|
|
36
|
-
def __getattr__(name: str) -> Setting:
|
|
35
|
+
def __getattr__(name: str) -> "Setting":
|
|
36
|
+
from prefect.settings.legacy import (
|
|
37
|
+
_get_settings_fields,
|
|
38
|
+
_get_valid_setting_names,
|
|
39
|
+
)
|
|
40
|
+
|
|
37
41
|
if name in _get_valid_setting_names(Settings):
|
|
38
42
|
return _get_settings_fields(Settings)[name]
|
|
39
43
|
raise AttributeError(f"{name} is not a Prefect setting.")
|
|
@@ -42,7 +46,6 @@ def __getattr__(name: str) -> Setting:
|
|
|
42
46
|
__all__ = [ # noqa: F822
|
|
43
47
|
"Profile",
|
|
44
48
|
"ProfilesCollection",
|
|
45
|
-
"Setting",
|
|
46
49
|
"Settings",
|
|
47
50
|
"load_current_profile",
|
|
48
51
|
"update_current_profile",
|
|
@@ -26,7 +26,6 @@ from prefect.settings.sources import (
|
|
|
26
26
|
PyprojectTomlConfigSettingsSource,
|
|
27
27
|
)
|
|
28
28
|
from prefect.utilities.collections import visit_collection
|
|
29
|
-
from prefect.utilities.pydantic import handle_secret_render
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
class PrefectBaseSettings(BaseSettings):
|
|
@@ -196,6 +195,8 @@ class PrefectBaseSettings(BaseSettings):
|
|
|
196
195
|
if child_jsonable:
|
|
197
196
|
jsonable_self[key] = child_jsonable
|
|
198
197
|
if info.context and info.context.get("include_secrets") is True:
|
|
198
|
+
from prefect.utilities.pydantic import handle_secret_render
|
|
199
|
+
|
|
199
200
|
jsonable_self.update(
|
|
200
201
|
{
|
|
201
202
|
field_name: visit_collection(
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, Any, Dict, Optional, Protocol, Type
|
|
2
|
-
|
|
3
|
-
from prefect.infrastructure.provisioners.coiled import CoiledPushProvisioner
|
|
4
|
-
from prefect.infrastructure.provisioners.modal import ModalPushProvisioner
|
|
5
|
-
from .cloud_run import CloudRunPushProvisioner
|
|
6
|
-
from .container_instance import ContainerInstancePushProvisioner
|
|
7
|
-
from .ecs import ElasticContainerServicePushProvisioner
|
|
8
|
-
import rich.console
|
|
9
|
-
|
|
10
|
-
if TYPE_CHECKING:
|
|
11
|
-
from prefect.client.orchestration import PrefectClient
|
|
12
|
-
|
|
13
|
-
_provisioners = {
|
|
14
|
-
"cloud-run:push": CloudRunPushProvisioner,
|
|
15
|
-
"cloud-run-v2:push": CloudRunPushProvisioner,
|
|
16
|
-
"azure-container-instance:push": ContainerInstancePushProvisioner,
|
|
17
|
-
"ecs:push": ElasticContainerServicePushProvisioner,
|
|
18
|
-
"modal:push": ModalPushProvisioner,
|
|
19
|
-
"coiled:push": CoiledPushProvisioner,
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class Provisioner(Protocol):
|
|
24
|
-
@property
|
|
25
|
-
def console(self) -> rich.console.Console: ...
|
|
26
|
-
|
|
27
|
-
@console.setter
|
|
28
|
-
def console(self, value: rich.console.Console) -> None: ...
|
|
29
|
-
|
|
30
|
-
async def provision(
|
|
31
|
-
self,
|
|
32
|
-
work_pool_name: str,
|
|
33
|
-
base_job_template: Dict[str, Any],
|
|
34
|
-
client: Optional["PrefectClient"] = None,
|
|
35
|
-
) -> Dict[str, Any]: ...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def get_infrastructure_provisioner_for_work_pool_type(
|
|
39
|
-
work_pool_type: str,
|
|
40
|
-
) -> Type[Provisioner]:
|
|
41
|
-
"""
|
|
42
|
-
Retrieve an instance of the infrastructure provisioner for the given work pool type.
|
|
43
|
-
|
|
44
|
-
Args:
|
|
45
|
-
work_pool_type: the work pool type
|
|
46
|
-
|
|
47
|
-
Returns:
|
|
48
|
-
an instance of the infrastructure provisioner for the given work pool type
|
|
49
|
-
|
|
50
|
-
Raises:
|
|
51
|
-
ValueError: if the work pool type is not supported
|
|
52
|
-
"""
|
|
53
|
-
provisioner = _provisioners.get(work_pool_type)
|
|
54
|
-
if provisioner is None:
|
|
55
|
-
raise ValueError(f"Unsupported work pool type: {work_pool_type}")
|
|
56
|
-
return provisioner()
|
|
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-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.5.1.dev1 → prefect_client-3.5.1.dev3}/src/prefect/_experimental/sla/objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|