prefect-client 3.7.5.dev6__tar.gz → 3.7.6__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.7.5.dev6 → prefect_client-3.7.6}/PKG-INFO +1 -1
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/AGENTS.md +1 -0
- prefect_client-3.7.6/src/prefect/_build_info.py +5 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/flow_engine.py +2 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/server.py +32 -1
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/workers.py +36 -3
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/task_engine.py +4 -1
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/tasks.py +15 -2
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/asyncutils/__init__.py +19 -1
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/engine/__init__.py +45 -4
- prefect_client-3.7.5.dev6/src/prefect/_build_info.py +0 -5
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/.gitignore +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/LICENSE +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/README.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/hatch_build.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/pyproject.toml +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/__main__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/agent.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/automations.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/base.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/context.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/engine.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/related.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/flows.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/futures.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/main.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/plugins.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/py.typed +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/results.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/schedules.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/serializers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/states.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/transactions.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/types/names.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/templating/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/variables.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/workers/utilities.py +0 -0
|
@@ -34,6 +34,7 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
|
|
|
34
34
|
- **`ResultRecordMetadata` tolerates unknown serializer types.** When loading persisted metadata, an unrecognized serializer `type` is converted to an `UnknownSerializer` placeholder rather than raising `ValidationError`. This allows inspecting result metadata when the serializer implementation is unavailable in the current environment. However, known serializer types with invalid fields still raise `ValidationError`. `UnknownSerializer.dumps()` and `UnknownSerializer.loads()` raise `RuntimeError` — the tolerance is for inspection only, not actual serialization/deserialization.
|
|
35
35
|
- **`ResultRecord` must be marked persisted after every storage write.** `ResultStore` calls `mark_persisted()` on every record it writes; `to_state_create` in `states.py` consults `is_persisted` as a fallback when `should_persist_result()` returns `False` (e.g., after run context teardown). Any new sync or async persist path that omits `mark_persisted()` will silently drop state metadata for already-written results.
|
|
36
36
|
- **Flow-run suspension is enforced at orchestration boundaries.** Suspension is delivered via `FlowRunSuspensionRequest` and raised with `raise_if_flow_run_suspension_requested()`. When changing engines, futures, task runners, or generator execution, check before returning control to flow user code or proposing a flow state that could leave `Suspended`; keep sync/async paths aligned and avoid per-boundary API reads.
|
|
37
|
+
- **Subflow tracking tasks use UUID dynamic keys when called from within a submitted task.** `flow_engine.py` marks the synthetic tracking `Task` with `_is_subflow_tracking_task=True`; `tasks.py` checks this flag to assign UUID-based (unstable) `dynamic_key` values when the tracking task runs inside a submitted task context. This prevents key collisions between concurrent sibling subflows on parent-flow retry. Direct subflow calls (no enclosing task context) keep stable sequential keys to preserve the retry optimization that reuses completed subflow results.
|
|
37
38
|
|
|
38
39
|
## Logging
|
|
39
40
|
|
|
@@ -972,6 +972,7 @@ class FlowRunEngine(BaseFlowRunEngine[P, R]):
|
|
|
972
972
|
parent_task = Task(
|
|
973
973
|
name=self.flow.name, fn=self.flow.fn, version=self.flow.version
|
|
974
974
|
)
|
|
975
|
+
setattr(parent_task, "_is_subflow_tracking_task", True)
|
|
975
976
|
|
|
976
977
|
parent_task_run = run_coro_as_sync(
|
|
977
978
|
parent_task.create_run(
|
|
@@ -1667,6 +1668,7 @@ class AsyncFlowRunEngine(BaseFlowRunEngine[P, R]):
|
|
|
1667
1668
|
parent_task = Task(
|
|
1668
1669
|
name=self.flow.name, fn=self.flow.fn, version=self.flow.version
|
|
1669
1670
|
)
|
|
1671
|
+
setattr(parent_task, "_is_subflow_tracking_task", True)
|
|
1670
1672
|
|
|
1671
1673
|
parent_task_run = await parent_task.create_run(
|
|
1672
1674
|
flow_run_context=flow_run_ctx,
|
|
@@ -52,6 +52,7 @@ import prefect.settings
|
|
|
52
52
|
from prefect._internal.compatibility.starlette import status
|
|
53
53
|
from prefect._internal.observability import configure_logfire
|
|
54
54
|
from prefect.client.constants import SERVER_API_VERSION
|
|
55
|
+
from prefect.locking._filelock import FileLock
|
|
55
56
|
from prefect.logging import get_logger
|
|
56
57
|
from prefect.server.api._ui_static import UIBundle, UIVersion, log_ui_static_copy_error
|
|
57
58
|
from prefect.server.api.background_workers import background_worker
|
|
@@ -739,8 +740,20 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
739
740
|
continue
|
|
740
741
|
|
|
741
742
|
if not reference_file_matches_cache_key(bundle):
|
|
743
|
+
lock_path = os.path.join(
|
|
744
|
+
os.path.dirname(bundle.static_dir),
|
|
745
|
+
f".{bundle.version}_ui_static.lock",
|
|
746
|
+
)
|
|
747
|
+
lock = FileLock(lock_path, timeout=90)
|
|
742
748
|
try:
|
|
743
|
-
|
|
749
|
+
lock.acquire()
|
|
750
|
+
try:
|
|
751
|
+
# Re-check after acquiring the lock; another worker
|
|
752
|
+
# may have completed the copy while we waited.
|
|
753
|
+
if not reference_file_matches_cache_key(bundle):
|
|
754
|
+
create_ui_static_subpath(bundle)
|
|
755
|
+
finally:
|
|
756
|
+
lock.release()
|
|
744
757
|
except OSError as exc:
|
|
745
758
|
log_ui_static_copy_error(bundle, exc, logger)
|
|
746
759
|
continue
|
|
@@ -843,6 +856,22 @@ def _memoize_block_auto_registration(
|
|
|
843
856
|
return wrapper
|
|
844
857
|
|
|
845
858
|
|
|
859
|
+
def _log_worker_channel_config() -> None:
|
|
860
|
+
"""Log worker channel queue backend and key configuration at startup."""
|
|
861
|
+
wc_settings = prefect.settings.get_current_settings().server.worker_channel
|
|
862
|
+
logger.debug(
|
|
863
|
+
"Worker channel configuration: "
|
|
864
|
+
"cleanup_queue_storage=%s "
|
|
865
|
+
"cleanup_lease_seconds=%s "
|
|
866
|
+
"cleanup_max_delivery_attempts=%s "
|
|
867
|
+
"cleanup_completed_idempotency_retention_seconds=%s",
|
|
868
|
+
wc_settings.cleanup_queue_storage,
|
|
869
|
+
wc_settings.cleanup_lease_seconds,
|
|
870
|
+
wc_settings.cleanup_max_delivery_attempts,
|
|
871
|
+
wc_settings.cleanup_completed_idempotency_retention_seconds,
|
|
872
|
+
)
|
|
873
|
+
|
|
874
|
+
|
|
846
875
|
def create_app(
|
|
847
876
|
settings: Optional[prefect.settings.Settings] = None,
|
|
848
877
|
ephemeral: bool = False,
|
|
@@ -912,6 +941,8 @@ def create_app(
|
|
|
912
941
|
await run_migrations()
|
|
913
942
|
await add_block_types()
|
|
914
943
|
|
|
944
|
+
_log_worker_channel_config()
|
|
945
|
+
|
|
915
946
|
Services: type[Service] | None = (
|
|
916
947
|
RunInWebservers
|
|
917
948
|
if webserver_only
|
|
@@ -409,6 +409,15 @@ async def _build_worker_ready_frame(
|
|
|
409
409
|
if capability not in accepted_set
|
|
410
410
|
]
|
|
411
411
|
|
|
412
|
+
if rejected:
|
|
413
|
+
logger.debug(
|
|
414
|
+
"Worker channel capabilities rejected: "
|
|
415
|
+
"work_pool=%s worker_name=%s rejected=%s",
|
|
416
|
+
work_pool_name,
|
|
417
|
+
hello.payload.worker_name,
|
|
418
|
+
rejected,
|
|
419
|
+
)
|
|
420
|
+
|
|
412
421
|
return (
|
|
413
422
|
WorkerReadyFrame(
|
|
414
423
|
type="worker.ready.v1",
|
|
@@ -1154,17 +1163,41 @@ async def worker_channel_connect(
|
|
|
1154
1163
|
await connection.run(ready, consumer_kwargs)
|
|
1155
1164
|
|
|
1156
1165
|
except WorkerChannelSetupError as exc:
|
|
1157
|
-
logger.
|
|
1166
|
+
logger.debug(
|
|
1167
|
+
"Worker channel setup failed: work_pool=%s reason=%s detail=%s",
|
|
1168
|
+
work_pool_name,
|
|
1169
|
+
exc.close_reason.value,
|
|
1170
|
+
exc.detail,
|
|
1171
|
+
)
|
|
1172
|
+
if worker_channel_utils.WORKER_CHANNEL_CONNECTIONS is not None:
|
|
1173
|
+
worker_channel_utils.WORKER_CHANNEL_CONNECTIONS.labels(
|
|
1174
|
+
event="setup_failed"
|
|
1175
|
+
).inc()
|
|
1158
1176
|
await worker_channel_utils.close_worker_channel(websocket, exc.close_reason)
|
|
1159
1177
|
except HTTPException as exc:
|
|
1160
|
-
logger.
|
|
1178
|
+
logger.debug(
|
|
1179
|
+
"Worker channel setup failed HTTP validation: work_pool=%s detail=%s",
|
|
1180
|
+
work_pool_name,
|
|
1181
|
+
exc.detail,
|
|
1182
|
+
)
|
|
1183
|
+
if worker_channel_utils.WORKER_CHANNEL_CONNECTIONS is not None:
|
|
1184
|
+
worker_channel_utils.WORKER_CHANNEL_CONNECTIONS.labels(
|
|
1185
|
+
event="setup_failed"
|
|
1186
|
+
).inc()
|
|
1161
1187
|
await worker_channel_utils.close_worker_channel(
|
|
1162
1188
|
websocket, WorkerChannelCloseReason.PROTOCOL_ERROR
|
|
1163
1189
|
)
|
|
1164
1190
|
except subscriptions.NORMAL_DISCONNECT_EXCEPTIONS:
|
|
1165
1191
|
return
|
|
1166
1192
|
except Exception:
|
|
1167
|
-
logger.exception(
|
|
1193
|
+
logger.exception(
|
|
1194
|
+
"Worker channel setup failed due to a transient server error: work_pool=%s",
|
|
1195
|
+
work_pool_name,
|
|
1196
|
+
)
|
|
1197
|
+
if worker_channel_utils.WORKER_CHANNEL_CONNECTIONS is not None:
|
|
1198
|
+
worker_channel_utils.WORKER_CHANNEL_CONNECTIONS.labels(
|
|
1199
|
+
event="setup_failed"
|
|
1200
|
+
).inc()
|
|
1168
1201
|
await worker_channel_utils.close_worker_channel(
|
|
1169
1202
|
websocket, WorkerChannelCloseReason.TRANSIENT_SERVER_ERROR
|
|
1170
1203
|
)
|
|
@@ -299,6 +299,8 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
|
299
299
|
def _resolve_parameters(self):
|
|
300
300
|
if not self.parameters:
|
|
301
301
|
return None
|
|
302
|
+
if getattr(self, "_parameters_resolved", False):
|
|
303
|
+
return None
|
|
302
304
|
|
|
303
305
|
resolved_parameters = {}
|
|
304
306
|
for parameter, value in self.parameters.items():
|
|
@@ -311,7 +313,7 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
|
311
313
|
remove_annotations=True,
|
|
312
314
|
context={"parameter_name": parameter},
|
|
313
315
|
)
|
|
314
|
-
except UpstreamTaskError:
|
|
316
|
+
except (UpstreamTaskError, PrefectException):
|
|
315
317
|
raise
|
|
316
318
|
except Exception as exc:
|
|
317
319
|
raise PrefectException(
|
|
@@ -322,6 +324,7 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
|
322
324
|
) from exc
|
|
323
325
|
|
|
324
326
|
self.parameters = resolved_parameters
|
|
327
|
+
self._parameters_resolved = True
|
|
325
328
|
|
|
326
329
|
def _set_custom_task_run_name(self):
|
|
327
330
|
from prefect._internal.engine import resolve_custom_task_run_name
|
|
@@ -900,6 +900,19 @@ class Task(Generic[P, R]):
|
|
|
900
900
|
if not flow_run_context:
|
|
901
901
|
dynamic_key = f"{self.task_key}-{str(uuid4().hex)}"
|
|
902
902
|
task_run_name = self.name
|
|
903
|
+
elif (
|
|
904
|
+
getattr(self, "_is_subflow_tracking_task", False)
|
|
905
|
+
and parent_task_run_context
|
|
906
|
+
and flow_run_context.flow_run
|
|
907
|
+
and parent_task_run_context.task_run.flow_run_id
|
|
908
|
+
== flow_run_context.flow_run.id
|
|
909
|
+
):
|
|
910
|
+
# Subflows called from a task context need UUID keys because
|
|
911
|
+
# sibling call order is not a reliable identity across retries.
|
|
912
|
+
dynamic_key = dynamic_key_for_task_run(
|
|
913
|
+
context=flow_run_context, task=self, stable=False
|
|
914
|
+
)
|
|
915
|
+
task_run_name = f"{self.name}-{dynamic_key}"
|
|
903
916
|
else:
|
|
904
917
|
dynamic_key = dynamic_key_for_task_run(
|
|
905
918
|
context=flow_run_context, task=self
|
|
@@ -1620,10 +1633,10 @@ class Task(Generic[P, R]):
|
|
|
1620
1633
|
|
|
1621
1634
|
if deferred:
|
|
1622
1635
|
parameters_list = expand_mapping_parameters(self.fn, parameters)
|
|
1623
|
-
futures =
|
|
1636
|
+
futures = PrefectFutureList(
|
|
1624
1637
|
self.apply_async(kwargs=parameters, wait_for=wait_for)
|
|
1625
1638
|
for parameters in parameters_list
|
|
1626
|
-
|
|
1639
|
+
)
|
|
1627
1640
|
elif task_runner := getattr(flow_run_context, "task_runner", None):
|
|
1628
1641
|
assert isinstance(task_runner, TaskRunner)
|
|
1629
1642
|
futures = task_runner.map(self, parameters, wait_for)
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/utilities/asyncutils/__init__.py
RENAMED
|
@@ -8,7 +8,7 @@ import threading
|
|
|
8
8
|
import warnings
|
|
9
9
|
from collections.abc import AsyncGenerator, Awaitable, Coroutine
|
|
10
10
|
from contextlib import AbstractAsyncContextManager, asynccontextmanager
|
|
11
|
-
from contextvars import ContextVar
|
|
11
|
+
from contextvars import Context, ContextVar
|
|
12
12
|
from functools import partial, wraps
|
|
13
13
|
from logging import Logger
|
|
14
14
|
from typing import TYPE_CHECKING, Any, Callable, NoReturn, Optional, Union, overload
|
|
@@ -474,6 +474,10 @@ class GatherTaskGroup(anyio.abc.TaskGroup):
|
|
|
474
474
|
# The concrete task group implementation to use
|
|
475
475
|
self._task_group: anyio.abc.TaskGroup = task_group
|
|
476
476
|
|
|
477
|
+
@property
|
|
478
|
+
def cancel_scope(self) -> Any:
|
|
479
|
+
return self._task_group.cancel_scope
|
|
480
|
+
|
|
477
481
|
async def _run_and_store(
|
|
478
482
|
self,
|
|
479
483
|
key: UUID,
|
|
@@ -494,6 +498,20 @@ class GatherTaskGroup(anyio.abc.TaskGroup):
|
|
|
494
498
|
self._task_group.start_soon(self._run_and_store, key, func, *args, name=name)
|
|
495
499
|
return key
|
|
496
500
|
|
|
501
|
+
def create_task(
|
|
502
|
+
self,
|
|
503
|
+
coro: Coroutine[Any, Any, T],
|
|
504
|
+
*,
|
|
505
|
+
name: object = None,
|
|
506
|
+
context: Context | None = None,
|
|
507
|
+
) -> Any:
|
|
508
|
+
create_task = getattr(self._task_group, "create_task", None)
|
|
509
|
+
if create_task is None:
|
|
510
|
+
coro.close()
|
|
511
|
+
raise RuntimeError("`create_task` requires AnyIO 4.14.0 or newer.")
|
|
512
|
+
|
|
513
|
+
return create_task(coro, name=name, context=context)
|
|
514
|
+
|
|
497
515
|
async def start(self, func: object, *args: object, name: object = None) -> NoReturn:
|
|
498
516
|
"""
|
|
499
517
|
Since `start` returns the result of `task_status.started()` but here we must
|
|
@@ -28,6 +28,7 @@ import prefect.exceptions
|
|
|
28
28
|
from prefect._internal.concurrency.cancellation import get_deadline
|
|
29
29
|
from prefect.client.schemas import FlowRunResult, OrchestrationResult, TaskRun
|
|
30
30
|
from prefect.client.schemas.objects import (
|
|
31
|
+
FlowRun,
|
|
31
32
|
RunType,
|
|
32
33
|
TaskRunResult,
|
|
33
34
|
)
|
|
@@ -52,7 +53,7 @@ from prefect.results import ResultRecord, should_persist_result
|
|
|
52
53
|
from prefect.settings import PREFECT_LOGGING_LOG_PRINTS
|
|
53
54
|
from prefect.states import State
|
|
54
55
|
from prefect.tasks import Task
|
|
55
|
-
from prefect.utilities.annotations import allow_failure, quote
|
|
56
|
+
from prefect.utilities.annotations import allow_failure, opaque, quote
|
|
56
57
|
from prefect.utilities.collections import StopVisiting, visit_collection
|
|
57
58
|
from prefect.utilities.text import truncated_to
|
|
58
59
|
|
|
@@ -61,7 +62,34 @@ if TYPE_CHECKING:
|
|
|
61
62
|
|
|
62
63
|
API_HEALTHCHECKS: dict[str, float] = {}
|
|
63
64
|
UNTRACKABLE_TYPES: set[type[Any]] = {bool, type(None), type(...), type(NotImplemented)}
|
|
65
|
+
_RUN_SCHEMA_TYPES: tuple[type[Any], ...] = (FlowRun, TaskRun)
|
|
64
66
|
engine_logger: Logger = get_logger("engine")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _raise_on_run_schema_unless_opaque(obj: Any, context: dict[str, Any]) -> None:
|
|
70
|
+
"""Raise a clear error when a Prefect run schema object is passed as a
|
|
71
|
+
task argument without the `opaque` annotation.
|
|
72
|
+
|
|
73
|
+
These Pydantic models contain a `.state` attribute that
|
|
74
|
+
`visit_collection` would recurse into, causing the embedded state
|
|
75
|
+
to be mistakenly treated as an upstream task dependency.
|
|
76
|
+
"""
|
|
77
|
+
if isinstance(obj, _RUN_SCHEMA_TYPES) and not isinstance(
|
|
78
|
+
context.get("annotation"), opaque
|
|
79
|
+
):
|
|
80
|
+
type_name = type(obj).__name__
|
|
81
|
+
lower = type_name[0].lower() + type_name[1:]
|
|
82
|
+
raise PrefectException(
|
|
83
|
+
f"Passing a `{type_name}` object as a task argument is not supported."
|
|
84
|
+
" Prefect inspects task arguments for upstream `State` and"
|
|
85
|
+
" `PrefectFuture` dependencies, which causes the embedded"
|
|
86
|
+
f" `{type_name}.state` attribute to be mistakenly treated as an"
|
|
87
|
+
" upstream task dependency. Pass individual fields instead"
|
|
88
|
+
f" (e.g. `{lower}.id`) or wrap the object with"
|
|
89
|
+
f" `opaque({lower})` to skip dependency traversal."
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
|
|
65
93
|
T = TypeVar("T")
|
|
66
94
|
_prefect_sigterm_handler_depth = 0
|
|
67
95
|
_prefect_sigterm_bridge_lock = threading.RLock()
|
|
@@ -379,6 +407,8 @@ async def resolve_inputs(
|
|
|
379
407
|
if isinstance(context.get("annotation"), quote):
|
|
380
408
|
raise StopVisiting()
|
|
381
409
|
|
|
410
|
+
_raise_on_run_schema_unless_opaque(expr, context)
|
|
411
|
+
|
|
382
412
|
if isinstance(expr, PrefectFuture):
|
|
383
413
|
fut: PrefectFuture[Any] = expr
|
|
384
414
|
futures.add(fut)
|
|
@@ -415,6 +445,8 @@ async def resolve_inputs(
|
|
|
415
445
|
if isinstance(context.get("annotation"), quote):
|
|
416
446
|
raise StopVisiting()
|
|
417
447
|
|
|
448
|
+
_raise_on_run_schema_unless_opaque(expr, context)
|
|
449
|
+
|
|
418
450
|
if isinstance(expr, PrefectFuture):
|
|
419
451
|
state = expr.state
|
|
420
452
|
elif isinstance(expr, State):
|
|
@@ -446,7 +478,9 @@ async def resolve_inputs(
|
|
|
446
478
|
):
|
|
447
479
|
return state.data
|
|
448
480
|
|
|
449
|
-
|
|
481
|
+
resolved = result_by_state.get(state)
|
|
482
|
+
_raise_on_run_schema_unless_opaque(resolved, context)
|
|
483
|
+
return resolved
|
|
450
484
|
|
|
451
485
|
resolved_parameters: dict[str, Any] = {}
|
|
452
486
|
for parameter, value in parameters.items():
|
|
@@ -460,7 +494,7 @@ async def resolve_inputs(
|
|
|
460
494
|
remove_annotations=True,
|
|
461
495
|
context={},
|
|
462
496
|
)
|
|
463
|
-
except UpstreamTaskError:
|
|
497
|
+
except (UpstreamTaskError, PrefectException):
|
|
464
498
|
raise
|
|
465
499
|
except Exception as exc:
|
|
466
500
|
raise PrefectException(
|
|
@@ -951,6 +985,8 @@ def resolve_to_final_result(expr: Any, context: dict[str, Any]) -> Any:
|
|
|
951
985
|
if isinstance(context.get("annotation"), quote):
|
|
952
986
|
raise StopVisiting()
|
|
953
987
|
|
|
988
|
+
_raise_on_run_schema_unless_opaque(expr, context)
|
|
989
|
+
|
|
954
990
|
if isinstance(expr, PrefectFuture):
|
|
955
991
|
upstream_task_run: Optional[TaskRun] = context.get("current_task_run")
|
|
956
992
|
upstream_task: Optional["Task[..., Any]"] = context.get("current_task")
|
|
@@ -996,6 +1032,11 @@ def resolve_to_final_result(expr: Any, context: dict[str, Any]) -> Any:
|
|
|
996
1032
|
|
|
997
1033
|
result: Any = state.result(raise_on_failure=False, _sync=True) # pyright: ignore[reportCallIssue] _sync messes up type inference and can be removed once async_dispatch is removed
|
|
998
1034
|
|
|
1035
|
+
# Check the resolved result: if a task returned a FlowRun/TaskRun, the
|
|
1036
|
+
# caller (visit_collection) would recurse into its Pydantic fields and
|
|
1037
|
+
# misinterpret the embedded .state as an upstream dependency.
|
|
1038
|
+
_raise_on_run_schema_unless_opaque(result, context)
|
|
1039
|
+
|
|
999
1040
|
if state.state_details.traceparent:
|
|
1000
1041
|
parameter_context = propagate.extract(
|
|
1001
1042
|
{"traceparent": state.state_details.traceparent}
|
|
@@ -1046,7 +1087,7 @@ def resolve_inputs_sync(
|
|
|
1046
1087
|
remove_annotations=True,
|
|
1047
1088
|
context={"parameter_name": parameter},
|
|
1048
1089
|
)
|
|
1049
|
-
except UpstreamTaskError:
|
|
1090
|
+
except (UpstreamTaskError, PrefectException):
|
|
1050
1091
|
raise
|
|
1051
1092
|
except Exception as exc:
|
|
1052
1093
|
raise PrefectException(
|
|
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.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/bundles/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/diagnostics.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/ci_detection.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/client.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/device_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/enabled.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/events.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/milestones.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/notice.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/analytics/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/backports.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/blocks.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/deprecated.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/migration.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/compatibility/starlette.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/calls.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/cancellation.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/event_loop.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/inspection.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/primitives.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/services.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/control_listener.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.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/collections.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/plugins/diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/schemas.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/pydantic/validated_func.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/serializers.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/schemas/validators.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev6 → prefect_client-3.7.6}/src/prefect/_internal/send_entrypoint_logs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|