prefect-client 3.8.1.dev2__tar.gz → 3.8.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.8.1.dev2 → prefect_client-3.8.1.dev3}/PKG-INFO +1 -1
- prefect_client-3.8.1.dev3/src/prefect/_build_info.py +5 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/base.py +111 -47
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/process.py +1 -102
- prefect_client-3.8.1.dev2/src/prefect/_build_info.py +0 -5
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/.gitignore +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/LICENSE +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/README.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/hatch_build.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/pyproject.toml +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/__main__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/agent.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/automations.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/base.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/context.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/engine.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/related.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/flows.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/futures.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/main.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/plugins.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/py.typed +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/results.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/schedules.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/serializers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/states.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/tasks.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/transactions.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/types/names.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/templating/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/variables.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/workers/utilities.py +0 -0
|
@@ -26,6 +26,7 @@ from zoneinfo import ZoneInfo
|
|
|
26
26
|
|
|
27
27
|
import anyio
|
|
28
28
|
import anyio.abc
|
|
29
|
+
import httpx
|
|
29
30
|
from exceptiongroup import BaseExceptionGroup, ExceptionGroup
|
|
30
31
|
from pydantic import BaseModel, Field, PrivateAttr, field_validator
|
|
31
32
|
from pydantic.json_schema import GenerateJsonSchema
|
|
@@ -118,6 +119,13 @@ if TYPE_CHECKING:
|
|
|
118
119
|
from prefect.flows import Flow
|
|
119
120
|
|
|
120
121
|
|
|
122
|
+
def _is_transient_api_error(exc: httpx.HTTPError) -> bool:
|
|
123
|
+
"""Whether an API error is likely to resolve itself if retried."""
|
|
124
|
+
if isinstance(exc, httpx.HTTPStatusError):
|
|
125
|
+
return exc.response.status_code >= 500
|
|
126
|
+
return isinstance(exc, httpx.TransportError)
|
|
127
|
+
|
|
128
|
+
|
|
121
129
|
class BaseJobConfiguration(BaseModel):
|
|
122
130
|
command: Optional[str] = Field(
|
|
123
131
|
default=None,
|
|
@@ -681,6 +689,7 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
681
689
|
self._submitting_flow_run_ids: set[UUID] = set()
|
|
682
690
|
self._scheduled_task_scopes: set[anyio.CancelScope] = set()
|
|
683
691
|
self._worker_channel: Optional[WorkerChannel] = None
|
|
692
|
+
self._has_successfully_synced = False
|
|
684
693
|
|
|
685
694
|
# Cancellation handling
|
|
686
695
|
self._cancelling_observer: Optional[FlowRunCancellingObserver] = None
|
|
@@ -836,29 +845,36 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
836
845
|
healthcheck_thread = None
|
|
837
846
|
try:
|
|
838
847
|
async with self as worker:
|
|
839
|
-
|
|
848
|
+
polling_service = partial(
|
|
849
|
+
critical_service_loop,
|
|
850
|
+
workload=self.get_and_submit_flow_runs,
|
|
851
|
+
interval=PREFECT_WORKER_QUERY_SECONDS.value(),
|
|
852
|
+
run_once=run_once,
|
|
853
|
+
jitter_range=0.3,
|
|
854
|
+
backoff=4, # Up to ~1 minute interval during backoff
|
|
855
|
+
)
|
|
856
|
+
sync_service = partial(
|
|
857
|
+
critical_service_loop,
|
|
858
|
+
workload=self._sync_and_initialize,
|
|
859
|
+
interval=self.heartbeat_interval_seconds,
|
|
860
|
+
run_once=run_once,
|
|
861
|
+
jitter_range=0.3,
|
|
862
|
+
backoff=4,
|
|
863
|
+
)
|
|
864
|
+
|
|
840
865
|
async with anyio.create_task_group() as loops_task_group:
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
)
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
partial(
|
|
854
|
-
critical_service_loop,
|
|
855
|
-
workload=self.sync_with_backend,
|
|
856
|
-
interval=self.heartbeat_interval_seconds,
|
|
857
|
-
run_once=run_once,
|
|
858
|
-
jitter_range=0.3,
|
|
859
|
-
backoff=4,
|
|
860
|
-
)
|
|
861
|
-
)
|
|
866
|
+
if run_once:
|
|
867
|
+
|
|
868
|
+
async def run_once_services() -> None:
|
|
869
|
+
# A one-shot poll needs the work-pool configuration
|
|
870
|
+
# produced by the one-shot synchronization attempt.
|
|
871
|
+
await sync_service()
|
|
872
|
+
await polling_service()
|
|
873
|
+
|
|
874
|
+
loops_task_group.start_soon(run_once_services)
|
|
875
|
+
else:
|
|
876
|
+
loops_task_group.start_soon(polling_service)
|
|
877
|
+
loops_task_group.start_soon(sync_service)
|
|
862
878
|
|
|
863
879
|
self._started_event = await self._emit_worker_started_event()
|
|
864
880
|
|
|
@@ -1193,6 +1209,7 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
1193
1209
|
async def setup(self) -> None:
|
|
1194
1210
|
"""Prepares the worker to run."""
|
|
1195
1211
|
self._logger.debug("Setting up worker...")
|
|
1212
|
+
self._has_successfully_synced = False
|
|
1196
1213
|
self._runs_task_group = anyio.create_task_group()
|
|
1197
1214
|
self._limiter = (
|
|
1198
1215
|
anyio.CapacityLimiter(self._limit) if self._limit is not None else None
|
|
@@ -1210,31 +1227,16 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
1210
1227
|
# it in all API requests made by this worker process.
|
|
1211
1228
|
os.environ["PREFECT__WORKER_NAME"] = self.name
|
|
1212
1229
|
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
)
|
|
1224
|
-
),
|
|
1225
|
-
polling_interval=get_current_settings().worker.cancellation_poll_seconds,
|
|
1226
|
-
event_filter=EventFilter(
|
|
1227
|
-
event=EventNameFilter(name=["prefect.flow-run.Cancelling"]),
|
|
1228
|
-
any_resource=EventAnyResourceFilter(
|
|
1229
|
-
id=[f"prefect.work-pool.{self._work_pool.id}"]
|
|
1230
|
-
),
|
|
1231
|
-
),
|
|
1232
|
-
)
|
|
1233
|
-
)
|
|
1234
|
-
except Exception as exc:
|
|
1235
|
-
self._logger.warning(
|
|
1236
|
-
"Failed to setup cancellation handling: %s", exc, exc_info=True
|
|
1237
|
-
)
|
|
1230
|
+
try:
|
|
1231
|
+
await self._sync_and_initialize()
|
|
1232
|
+
except httpx.HTTPError as exc:
|
|
1233
|
+
if not _is_transient_api_error(exc):
|
|
1234
|
+
raise
|
|
1235
|
+
self._logger.warning(
|
|
1236
|
+
"Unable to reach the Prefect API while starting up; the worker will "
|
|
1237
|
+
"keep attempting to connect: %s",
|
|
1238
|
+
exc,
|
|
1239
|
+
)
|
|
1238
1240
|
|
|
1239
1241
|
self.is_setup = True
|
|
1240
1242
|
|
|
@@ -1266,6 +1268,8 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
1266
1268
|
self._runs_task_group = None
|
|
1267
1269
|
self._client = None
|
|
1268
1270
|
self._worker_channel = None
|
|
1271
|
+
self._has_successfully_synced = False
|
|
1272
|
+
self._cancelling_observer = None
|
|
1269
1273
|
|
|
1270
1274
|
def is_worker_still_polling(self, query_interval_seconds: float) -> bool:
|
|
1271
1275
|
"""
|
|
@@ -1297,6 +1301,14 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
1297
1301
|
return is_still_polling
|
|
1298
1302
|
|
|
1299
1303
|
async def get_and_submit_flow_runs(self) -> list["FlowRun"]:
|
|
1304
|
+
if not self._has_successfully_synced:
|
|
1305
|
+
self._logger.debug(
|
|
1306
|
+
"Worker has not yet synced with the Prefect API; "
|
|
1307
|
+
"skipping flow run submission."
|
|
1308
|
+
)
|
|
1309
|
+
self._last_polled_time = prefect.types._datetime.now("UTC")
|
|
1310
|
+
return []
|
|
1311
|
+
|
|
1300
1312
|
runs_response = await self._get_scheduled_flow_runs()
|
|
1301
1313
|
|
|
1302
1314
|
self._last_polled_time = prefect.types._datetime.now("UTC")
|
|
@@ -1341,6 +1353,15 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
1341
1353
|
return WorkerMetadata(integrations=integration_versions)
|
|
1342
1354
|
return None
|
|
1343
1355
|
|
|
1356
|
+
async def _sync_and_initialize(self) -> None:
|
|
1357
|
+
"""Synchronize the worker and initialize sync-dependent services."""
|
|
1358
|
+
await self.sync_with_backend()
|
|
1359
|
+
|
|
1360
|
+
# Preserve startup behavior for custom workers that override the public
|
|
1361
|
+
# synchronization method without calling `super()`.
|
|
1362
|
+
if not self._has_successfully_synced:
|
|
1363
|
+
await self._initialize_after_sync()
|
|
1364
|
+
|
|
1344
1365
|
async def sync_with_backend(self) -> None:
|
|
1345
1366
|
"""
|
|
1346
1367
|
Updates the worker's local information about it's current work pool and
|
|
@@ -1353,12 +1374,55 @@ class BaseWorker(abc.ABC, Generic[C, V, R]):
|
|
|
1353
1374
|
return
|
|
1354
1375
|
|
|
1355
1376
|
await self._worker_channel.sync(self._runs_task_group)
|
|
1377
|
+
await self._initialize_after_sync()
|
|
1356
1378
|
|
|
1357
1379
|
self._logger.debug(
|
|
1358
1380
|
"Worker synchronized with the Prefect API server. "
|
|
1359
1381
|
+ (f"Remote ID: {self.backend_id}" if self.backend_id else "")
|
|
1360
1382
|
)
|
|
1361
1383
|
|
|
1384
|
+
async def _initialize_after_sync(self) -> None:
|
|
1385
|
+
"""Initialize services that depend on a completed backend sync."""
|
|
1386
|
+
# Synchronization can succeed without a work pool when automatic work-pool
|
|
1387
|
+
# creation is disabled. The worker cannot submit runs without its template.
|
|
1388
|
+
if self._work_pool is None:
|
|
1389
|
+
return
|
|
1390
|
+
|
|
1391
|
+
await self._setup_cancellation_observer()
|
|
1392
|
+
self._has_successfully_synced = True
|
|
1393
|
+
|
|
1394
|
+
async def _setup_cancellation_observer(self) -> None:
|
|
1395
|
+
"""Start observing flow run cancellations if not already observing.
|
|
1396
|
+
|
|
1397
|
+
Requires a work pool, which is only available once the worker has
|
|
1398
|
+
synced with the API.
|
|
1399
|
+
"""
|
|
1400
|
+
if self._cancelling_observer is not None or self._work_pool is None:
|
|
1401
|
+
return
|
|
1402
|
+
|
|
1403
|
+
if not get_current_settings().worker.enable_cancellation:
|
|
1404
|
+
return
|
|
1405
|
+
|
|
1406
|
+
try:
|
|
1407
|
+
self._cancelling_observer = await self._exit_stack.enter_async_context(
|
|
1408
|
+
FlowRunCancellingObserver(
|
|
1409
|
+
on_cancelling=lambda flow_run_id: self._runs_task_group.start_soon(
|
|
1410
|
+
self._cancel_run, flow_run_id
|
|
1411
|
+
),
|
|
1412
|
+
polling_interval=get_current_settings().worker.cancellation_poll_seconds,
|
|
1413
|
+
event_filter=EventFilter(
|
|
1414
|
+
event=EventNameFilter(name=["prefect.flow-run.Cancelling"]),
|
|
1415
|
+
any_resource=EventAnyResourceFilter(
|
|
1416
|
+
id=[f"prefect.work-pool.{self._work_pool.id}"]
|
|
1417
|
+
),
|
|
1418
|
+
),
|
|
1419
|
+
)
|
|
1420
|
+
)
|
|
1421
|
+
except Exception as exc:
|
|
1422
|
+
self._logger.warning(
|
|
1423
|
+
"Failed to setup cancellation handling: %s", exc, exc_info=True
|
|
1424
|
+
)
|
|
1425
|
+
|
|
1362
1426
|
def _ensure_worker_channel(self) -> None:
|
|
1363
1427
|
if self._client is None:
|
|
1364
1428
|
return
|
|
@@ -19,11 +19,9 @@ from __future__ import annotations
|
|
|
19
19
|
import contextlib
|
|
20
20
|
import os
|
|
21
21
|
import tempfile
|
|
22
|
-
import threading
|
|
23
22
|
import warnings
|
|
24
|
-
from functools import partial
|
|
25
23
|
from pathlib import Path
|
|
26
|
-
from typing import TYPE_CHECKING, Any,
|
|
24
|
+
from typing import TYPE_CHECKING, Any, Optional, TypeVar
|
|
27
25
|
|
|
28
26
|
import anyio
|
|
29
27
|
import anyio.abc
|
|
@@ -32,14 +30,8 @@ from pydantic import Field, field_validator
|
|
|
32
30
|
from prefect._internal.schemas.validators import validate_working_dir
|
|
33
31
|
from prefect.client.schemas.objects import Flow as APIFlow
|
|
34
32
|
from prefect.runner.runner import Runner
|
|
35
|
-
from prefect.settings import PREFECT_WORKER_QUERY_SECONDS
|
|
36
33
|
from prefect.states import Pending
|
|
37
34
|
from prefect.utilities.processutils import command_to_string, get_sys_executable
|
|
38
|
-
from prefect.utilities.services import (
|
|
39
|
-
critical_service_loop,
|
|
40
|
-
start_client_metrics_server,
|
|
41
|
-
stop_client_metrics_server,
|
|
42
|
-
)
|
|
43
35
|
from prefect.workers.base import (
|
|
44
36
|
BaseJobConfiguration,
|
|
45
37
|
BaseVariables,
|
|
@@ -141,99 +133,6 @@ class ProcessWorker(
|
|
|
141
133
|
_documentation_url = "https://docs.prefect.io/latest/get-started/quickstart"
|
|
142
134
|
_logo_url = "https://cdn.sanity.io/images/3ugk85nk/production/356e6766a91baf20e1d08bbe16e8b5aaef4d8643-48x48.png"
|
|
143
135
|
|
|
144
|
-
async def start(
|
|
145
|
-
self,
|
|
146
|
-
run_once: bool = False,
|
|
147
|
-
with_healthcheck: bool = False,
|
|
148
|
-
printer: Callable[..., None] = print,
|
|
149
|
-
) -> None:
|
|
150
|
-
"""
|
|
151
|
-
Starts the worker and runs the main worker loops.
|
|
152
|
-
|
|
153
|
-
By default, the worker will run loops to poll for scheduled/cancelled flow
|
|
154
|
-
runs and sync with the Prefect API server.
|
|
155
|
-
|
|
156
|
-
If `run_once` is set, the worker will only run each loop once and then return.
|
|
157
|
-
|
|
158
|
-
If `with_healthcheck` is set, the worker will start a healthcheck server which
|
|
159
|
-
can be used to determine if the worker is still polling for flow runs and restart
|
|
160
|
-
the worker if necessary.
|
|
161
|
-
|
|
162
|
-
Args:
|
|
163
|
-
run_once: If set, the worker will only run each loop once then return.
|
|
164
|
-
with_healthcheck: If set, the worker will start a healthcheck server.
|
|
165
|
-
printer: A `print`-like function where logs will be reported.
|
|
166
|
-
"""
|
|
167
|
-
healthcheck_server = None
|
|
168
|
-
healthcheck_thread = None
|
|
169
|
-
try:
|
|
170
|
-
async with self as worker:
|
|
171
|
-
# wait for an initial heartbeat to configure the worker
|
|
172
|
-
await worker.sync_with_backend()
|
|
173
|
-
# schedule the scheduled flow run polling loop
|
|
174
|
-
async with anyio.create_task_group() as loops_task_group:
|
|
175
|
-
loops_task_group.start_soon(
|
|
176
|
-
partial(
|
|
177
|
-
critical_service_loop,
|
|
178
|
-
workload=self.get_and_submit_flow_runs,
|
|
179
|
-
interval=PREFECT_WORKER_QUERY_SECONDS.value(),
|
|
180
|
-
run_once=run_once,
|
|
181
|
-
jitter_range=0.3,
|
|
182
|
-
backoff=4, # Up to ~1 minute interval during backoff
|
|
183
|
-
)
|
|
184
|
-
)
|
|
185
|
-
# schedule the sync loop
|
|
186
|
-
loops_task_group.start_soon(
|
|
187
|
-
partial(
|
|
188
|
-
critical_service_loop,
|
|
189
|
-
workload=self.sync_with_backend,
|
|
190
|
-
interval=self.heartbeat_interval_seconds,
|
|
191
|
-
run_once=run_once,
|
|
192
|
-
jitter_range=0.3,
|
|
193
|
-
backoff=4,
|
|
194
|
-
)
|
|
195
|
-
)
|
|
196
|
-
|
|
197
|
-
self._started_event = await self._emit_worker_started_event()
|
|
198
|
-
|
|
199
|
-
start_client_metrics_server()
|
|
200
|
-
|
|
201
|
-
if with_healthcheck:
|
|
202
|
-
from prefect.workers.server import build_healthcheck_server
|
|
203
|
-
|
|
204
|
-
# we'll start the ASGI server in a separate thread so that
|
|
205
|
-
# uvicorn does not block the main thread
|
|
206
|
-
healthcheck_server = build_healthcheck_server(
|
|
207
|
-
worker=worker,
|
|
208
|
-
query_interval_seconds=PREFECT_WORKER_QUERY_SECONDS.value(),
|
|
209
|
-
)
|
|
210
|
-
healthcheck_thread = threading.Thread(
|
|
211
|
-
name="healthcheck-server-thread",
|
|
212
|
-
target=healthcheck_server.run,
|
|
213
|
-
daemon=True,
|
|
214
|
-
)
|
|
215
|
-
healthcheck_thread.start()
|
|
216
|
-
printer(f"Worker {worker.name!r} started!")
|
|
217
|
-
|
|
218
|
-
# If running once, wait for active runs to complete before exiting
|
|
219
|
-
if run_once and self._limiter:
|
|
220
|
-
while self.limiter.borrowed_tokens > 0:
|
|
221
|
-
self._logger.debug(
|
|
222
|
-
"Waiting for %s active run(s) to finish before shutdown...",
|
|
223
|
-
self.limiter.borrowed_tokens,
|
|
224
|
-
)
|
|
225
|
-
await anyio.sleep(0.1)
|
|
226
|
-
finally:
|
|
227
|
-
stop_client_metrics_server()
|
|
228
|
-
|
|
229
|
-
if healthcheck_server and healthcheck_thread:
|
|
230
|
-
self._logger.debug("Stopping healthcheck server...")
|
|
231
|
-
healthcheck_server.should_exit = True
|
|
232
|
-
healthcheck_thread.join()
|
|
233
|
-
self._logger.debug("Healthcheck server stopped.")
|
|
234
|
-
|
|
235
|
-
printer(f"Worker {worker.name!r} stopped!")
|
|
236
|
-
|
|
237
136
|
async def run(
|
|
238
137
|
self,
|
|
239
138
|
flow_run: "FlowRun",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/_launchers.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_experimental/sla/objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/client.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/device_id.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/emit.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/enabled.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/events.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/notice.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/analytics/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/api.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/calls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/control_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/installation.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/observability.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/apply.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/collections.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/diagnostics.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/plugins/startup.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/schemas.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/result_records.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/_registry.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/bases.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/fields.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/serializers.py
RENAMED
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/schemas/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.1.dev2 → prefect_client-3.8.1.dev3}/src/prefect/_internal/version_checking.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|