prefect-client 3.8.8.dev2__tar.gz → 3.8.8.dev4__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.8.dev2 → prefect_client-3.8.8.dev4}/PKG-INFO +1 -1
- prefect_client-3.8.8.dev4/src/prefect/_build_info.py +5 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/services.py +33 -12
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/notifications.py +1 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/cache_policies.py +3 -3
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/base.py +35 -4
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/runner.py +8 -1
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_engine.py +22 -10
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/tasks.py +3 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/validation.py +5 -2
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/templating/__init__.py +9 -2
- prefect_client-3.8.8.dev2/src/prefect/_build_info.py +0 -5
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/.gitignore +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/LICENSE +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/README.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/hatch_build.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/pyproject.toml +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/__main__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/attempt_control.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/agent.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/automations.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/context.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/engine.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/related.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/flows.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/futures.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/main.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/plugins.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/py.typed +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/results.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_uv_command.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_hook_runner.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_runtime.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/_workspace_supervisor.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/schedules.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/serializers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/states.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/transactions.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/types/names.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/variables.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/workers/utilities.py +0 -0
|
@@ -57,6 +57,9 @@ if hasattr(os, "register_at_fork"):
|
|
|
57
57
|
class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
58
58
|
_instances: dict[int, Self] = {}
|
|
59
59
|
_instance_lock = threading.Lock()
|
|
60
|
+
# Keep cache access separate from startup serialization: instance() waits for
|
|
61
|
+
# the global loop, whose service cleanup must be able to evict instances.
|
|
62
|
+
_instance_cache_lock = threading.Lock()
|
|
60
63
|
_max_queue_size: int = 0 # 0 means unbounded
|
|
61
64
|
|
|
62
65
|
def __init__(self, *args: Hashable) -> None:
|
|
@@ -96,6 +99,7 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
96
99
|
"""Reset class-level state after fork() to prevent deadlocks in child process."""
|
|
97
100
|
cls._instances.clear()
|
|
98
101
|
cls._instance_lock = threading.Lock()
|
|
102
|
+
cls._instance_cache_lock = threading.Lock()
|
|
99
103
|
|
|
100
104
|
def start(self) -> None:
|
|
101
105
|
logger.debug("Starting service %r", self)
|
|
@@ -281,7 +285,8 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
281
285
|
"""
|
|
282
286
|
futures: list[concurrent.futures.Future[bool]] = []
|
|
283
287
|
with cls._instance_lock:
|
|
284
|
-
|
|
288
|
+
with cls._instance_cache_lock:
|
|
289
|
+
instances = tuple(cls._instances.values())
|
|
285
290
|
|
|
286
291
|
for instance in instances:
|
|
287
292
|
futures.append(instance._drain(at_exit=at_exit))
|
|
@@ -312,28 +317,44 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
312
317
|
"""
|
|
313
318
|
with cls._instance_lock:
|
|
314
319
|
key = hash((cls, *args))
|
|
315
|
-
|
|
316
|
-
|
|
320
|
+
with cls._instance_cache_lock:
|
|
321
|
+
instance = cls._instances.get(key)
|
|
322
|
+
if instance is None or instance._stopped:
|
|
323
|
+
instance = cls._new_instance(*args)
|
|
317
324
|
|
|
318
|
-
return
|
|
325
|
+
return instance
|
|
319
326
|
|
|
320
327
|
def _remove_instance(self):
|
|
321
|
-
|
|
328
|
+
# Only evict this instance; a newer instance may already be cached under
|
|
329
|
+
# the same key
|
|
330
|
+
with self._instance_cache_lock:
|
|
331
|
+
if self._instances.get(self._key) is self:
|
|
332
|
+
self._instances.pop(self._key, None)
|
|
322
333
|
|
|
323
334
|
@classmethod
|
|
324
335
|
def _new_instance(cls, *args: Hashable) -> Self:
|
|
325
336
|
"""
|
|
326
|
-
Create and start a new instance of the service.
|
|
337
|
+
Create, cache, and start a new instance of the service.
|
|
327
338
|
"""
|
|
328
339
|
instance = cls(*args)
|
|
329
340
|
|
|
330
|
-
#
|
|
331
|
-
|
|
332
|
-
|
|
341
|
+
# Cache before starting so that a service which stops while starting, e.g.
|
|
342
|
+
# because its lifespan failed, evicts itself instead of being cached after
|
|
343
|
+
# it has already stopped
|
|
344
|
+
with cls._instance_cache_lock:
|
|
345
|
+
cls._instances[instance._key] = instance
|
|
333
346
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
347
|
+
try:
|
|
348
|
+
# If already on the global loop, just start it here to avoid deadlock
|
|
349
|
+
if threading.get_ident() == get_global_loop().thread.ident:
|
|
350
|
+
instance.start()
|
|
351
|
+
|
|
352
|
+
# Otherwise, bind the service to the global loop
|
|
353
|
+
else:
|
|
354
|
+
from_sync.call_soon_in_loop_thread(create_call(instance.start)).result()
|
|
355
|
+
except BaseException:
|
|
356
|
+
instance._remove_instance()
|
|
357
|
+
raise
|
|
337
358
|
|
|
338
359
|
return instance
|
|
339
360
|
|
|
@@ -751,6 +751,7 @@ class MattermostWebhook(AbstractAppriseNotificationBlock):
|
|
|
751
751
|
token=self.token.get_secret_value(),
|
|
752
752
|
fullpath=self.path,
|
|
753
753
|
host=self.hostname,
|
|
754
|
+
user=self.botname,
|
|
754
755
|
targets=self.channels,
|
|
755
756
|
include_image=self.include_image,
|
|
756
757
|
port=self.port,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
import sys
|
|
3
3
|
from copy import deepcopy
|
|
4
|
-
from dataclasses import dataclass, field
|
|
4
|
+
from dataclasses import dataclass, field, replace
|
|
5
5
|
from logging import Logger
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from typing import (
|
|
@@ -255,7 +255,7 @@ class CompoundCachePolicy(CachePolicy):
|
|
|
255
255
|
|
|
256
256
|
if inputs_policies:
|
|
257
257
|
new = Inputs(exclude=[other])
|
|
258
|
-
return
|
|
258
|
+
return replace(self, policies=[*self.policies, new])
|
|
259
259
|
else:
|
|
260
260
|
# no dependency on inputs already
|
|
261
261
|
return self
|
|
@@ -404,7 +404,7 @@ class Inputs(CachePolicy):
|
|
|
404
404
|
def __sub__(self, other: str) -> "CachePolicy":
|
|
405
405
|
if not isinstance(other, str): # type: ignore[reportUnnecessaryIsInstance]
|
|
406
406
|
raise TypeError("Can only subtract strings from key policies.")
|
|
407
|
-
return
|
|
407
|
+
return replace(self, exclude=self.exclude + [other])
|
|
408
408
|
|
|
409
409
|
|
|
410
410
|
INPUTS = Inputs()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import copy
|
|
2
|
+
import math
|
|
2
3
|
import sys
|
|
3
4
|
import threading
|
|
4
5
|
import time
|
|
@@ -7,6 +8,7 @@ from collections import defaultdict
|
|
|
7
8
|
from collections.abc import AsyncGenerator, Awaitable, MutableMapping
|
|
8
9
|
from contextlib import asynccontextmanager
|
|
9
10
|
from datetime import datetime, timezone
|
|
11
|
+
from email.utils import parsedate_to_datetime
|
|
10
12
|
from logging import Logger
|
|
11
13
|
from typing import TYPE_CHECKING, Any, Callable, Optional, Protocol, runtime_checkable
|
|
12
14
|
|
|
@@ -177,6 +179,31 @@ class PrefectResponse(httpx.Response):
|
|
|
177
179
|
return new_response
|
|
178
180
|
|
|
179
181
|
|
|
182
|
+
def _parse_retry_after(value: str) -> float | None:
|
|
183
|
+
"""
|
|
184
|
+
Parse a `Retry-After` header value into a number of seconds to wait.
|
|
185
|
+
|
|
186
|
+
Supports both forms allowed by RFC 9110: delay-seconds and HTTP-date. Returns
|
|
187
|
+
`None` if the value cannot be interpreted so callers can fall back to their
|
|
188
|
+
default backoff.
|
|
189
|
+
"""
|
|
190
|
+
try:
|
|
191
|
+
seconds = float(value)
|
|
192
|
+
except ValueError:
|
|
193
|
+
try:
|
|
194
|
+
retry_at = parsedate_to_datetime(value)
|
|
195
|
+
except (TypeError, ValueError, OverflowError):
|
|
196
|
+
return None
|
|
197
|
+
if retry_at.tzinfo is None:
|
|
198
|
+
retry_at = retry_at.replace(tzinfo=timezone.utc)
|
|
199
|
+
seconds = (retry_at - datetime.now(timezone.utc)).total_seconds()
|
|
200
|
+
|
|
201
|
+
if not math.isfinite(seconds):
|
|
202
|
+
return None
|
|
203
|
+
|
|
204
|
+
return max(0.0, seconds)
|
|
205
|
+
|
|
206
|
+
|
|
180
207
|
class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
181
208
|
"""
|
|
182
209
|
A Prefect wrapper for the async httpx client with support for retry-after headers
|
|
@@ -293,7 +320,9 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
|
293
320
|
return response
|
|
294
321
|
|
|
295
322
|
if "Retry-After" in response.headers:
|
|
296
|
-
retry_seconds =
|
|
323
|
+
retry_seconds = _parse_retry_after(response.headers["Retry-After"])
|
|
324
|
+
|
|
325
|
+
retry_after_from_header = retry_seconds is not None
|
|
297
326
|
|
|
298
327
|
# Use an exponential back-off if not set in a header
|
|
299
328
|
if retry_seconds is None:
|
|
@@ -302,7 +331,7 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
|
302
331
|
# Add jitter
|
|
303
332
|
jitter_factor = PREFECT_CLIENT_RETRY_JITTER_FACTOR.value()
|
|
304
333
|
if retry_seconds > 0 and jitter_factor > 0:
|
|
305
|
-
if
|
|
334
|
+
if retry_after_from_header:
|
|
306
335
|
# Always wait for _at least_ retry seconds if requested by the API
|
|
307
336
|
retry_seconds = bounded_poisson_interval(
|
|
308
337
|
retry_seconds, retry_seconds * (1 + jitter_factor)
|
|
@@ -563,7 +592,9 @@ class PrefectHttpxSyncClient(httpx.Client):
|
|
|
563
592
|
return response
|
|
564
593
|
|
|
565
594
|
if "Retry-After" in response.headers:
|
|
566
|
-
retry_seconds =
|
|
595
|
+
retry_seconds = _parse_retry_after(response.headers["Retry-After"])
|
|
596
|
+
|
|
597
|
+
retry_after_from_header = retry_seconds is not None
|
|
567
598
|
|
|
568
599
|
# Use an exponential back-off if not set in a header
|
|
569
600
|
if retry_seconds is None:
|
|
@@ -572,7 +603,7 @@ class PrefectHttpxSyncClient(httpx.Client):
|
|
|
572
603
|
# Add jitter
|
|
573
604
|
jitter_factor = PREFECT_CLIENT_RETRY_JITTER_FACTOR.value()
|
|
574
605
|
if retry_seconds > 0 and jitter_factor > 0:
|
|
575
|
-
if
|
|
606
|
+
if retry_after_from_header:
|
|
576
607
|
# Always wait for _at least_ retry seconds if requested by the API
|
|
577
608
|
retry_seconds = bounded_poisson_interval(
|
|
578
609
|
retry_seconds, retry_seconds * (1 + jitter_factor)
|
|
@@ -241,7 +241,14 @@ class Runner:
|
|
|
241
241
|
|
|
242
242
|
if name and ("/" in name or "%" in name):
|
|
243
243
|
raise ValueError("Runner name cannot contain '/' or '%'")
|
|
244
|
-
|
|
244
|
+
if name is None:
|
|
245
|
+
self.name: str = f"runner-{uuid4()}"
|
|
246
|
+
else:
|
|
247
|
+
# Only strip the suffix when a filename was actually passed; a `.` is
|
|
248
|
+
# legal in a runner name and `Path().stem` would otherwise treat
|
|
249
|
+
# everything after the last one as a file extension. Mirrors
|
|
250
|
+
# `RunnerDeployment.validate_name`.
|
|
251
|
+
self.name = Path(name).stem if name.endswith(".py") else name
|
|
245
252
|
self._logger: "logging.Logger" = get_logger("runner")
|
|
246
253
|
|
|
247
254
|
self.started: bool = False
|
|
@@ -444,8 +444,6 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
|
444
444
|
Callable[["Task[P, Coroutine[Any, Any, R]]", TaskRun, State[R]], bool]
|
|
445
445
|
] = self.task.retry_condition_fn
|
|
446
446
|
|
|
447
|
-
failure_type = "exception" if isinstance(exc_or_state, Exception) else "state"
|
|
448
|
-
|
|
449
447
|
if not self.task_run:
|
|
450
448
|
raise ValueError("Task run is not set")
|
|
451
449
|
try:
|
|
@@ -453,9 +451,13 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
|
453
451
|
f"Running `retry_condition_fn` check {retry_condition!r} for task"
|
|
454
452
|
f" {self.task.name!r}"
|
|
455
453
|
)
|
|
456
|
-
state =
|
|
457
|
-
|
|
458
|
-
|
|
454
|
+
state = (
|
|
455
|
+
exc_or_state
|
|
456
|
+
if isinstance(exc_or_state, State)
|
|
457
|
+
else Failed(
|
|
458
|
+
data=exc_or_state,
|
|
459
|
+
message=f"Task run encountered unexpected exception: {repr(exc_or_state)}",
|
|
460
|
+
)
|
|
459
461
|
)
|
|
460
462
|
if inspect.iscoroutinefunction(retry_condition):
|
|
461
463
|
should_retry = run_coro_as_sync(
|
|
@@ -674,6 +676,10 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
|
674
676
|
if isinstance(self.task.retry_delay_seconds, Sequence)
|
|
675
677
|
else self.task.retry_delay_seconds
|
|
676
678
|
)
|
|
679
|
+
if self.task.retry_jitter_factor and delay > 0:
|
|
680
|
+
delay = clamped_poisson_interval(
|
|
681
|
+
delay, clamping_factor=self.task.retry_jitter_factor
|
|
682
|
+
)
|
|
677
683
|
new_state = AwaitingRetry(
|
|
678
684
|
scheduled_time=prefect.types._datetime.now("UTC")
|
|
679
685
|
+ timedelta(seconds=delay)
|
|
@@ -1056,8 +1062,6 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
|
1056
1062
|
Callable[["Task[P, Coroutine[Any, Any, R]]", TaskRun, State[R]], bool]
|
|
1057
1063
|
] = self.task.retry_condition_fn
|
|
1058
1064
|
|
|
1059
|
-
failure_type = "exception" if isinstance(exc_or_state, Exception) else "state"
|
|
1060
|
-
|
|
1061
1065
|
if not self.task_run:
|
|
1062
1066
|
raise ValueError("Task run is not set")
|
|
1063
1067
|
try:
|
|
@@ -1065,9 +1069,13 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
|
1065
1069
|
f"Running `retry_condition_fn` check {retry_condition!r} for task"
|
|
1066
1070
|
f" {self.task.name!r}"
|
|
1067
1071
|
)
|
|
1068
|
-
state =
|
|
1069
|
-
|
|
1070
|
-
|
|
1072
|
+
state = (
|
|
1073
|
+
exc_or_state
|
|
1074
|
+
if isinstance(exc_or_state, State)
|
|
1075
|
+
else Failed(
|
|
1076
|
+
data=exc_or_state,
|
|
1077
|
+
message=f"Task run encountered unexpected exception: {repr(exc_or_state)}",
|
|
1078
|
+
)
|
|
1071
1079
|
)
|
|
1072
1080
|
if inspect.iscoroutinefunction(retry_condition):
|
|
1073
1081
|
should_retry = await retry_condition(self.task, self.task_run, state)
|
|
@@ -1301,6 +1309,10 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
|
1301
1309
|
if isinstance(self.task.retry_delay_seconds, Sequence)
|
|
1302
1310
|
else self.task.retry_delay_seconds
|
|
1303
1311
|
)
|
|
1312
|
+
if self.task.retry_jitter_factor and delay > 0:
|
|
1313
|
+
delay = clamped_poisson_interval(
|
|
1314
|
+
delay, clamping_factor=self.task.retry_jitter_factor
|
|
1315
|
+
)
|
|
1304
1316
|
new_state = AwaitingRetry(
|
|
1305
1317
|
scheduled_time=prefect.types._datetime.now("UTC")
|
|
1306
1318
|
+ timedelta(seconds=delay)
|
|
@@ -792,6 +792,7 @@ class Task(Generic[P, R]):
|
|
|
792
792
|
name=name or self.name,
|
|
793
793
|
description=description or self.description,
|
|
794
794
|
tags=tags or copy(self.tags),
|
|
795
|
+
version=self.version,
|
|
795
796
|
cache_policy=cache_policy
|
|
796
797
|
if cache_policy is not NotSet
|
|
797
798
|
else self._user_cache_policy,
|
|
@@ -844,6 +845,8 @@ class Task(Generic[P, R]):
|
|
|
844
845
|
on_completion=on_completion or self.on_completion_hooks,
|
|
845
846
|
on_failure=on_failure or self.on_failure_hooks,
|
|
846
847
|
on_running=on_running or self.on_running_hooks,
|
|
848
|
+
on_rollback=copy(self.on_rollback_hooks),
|
|
849
|
+
on_commit=copy(self.on_commit_hooks),
|
|
847
850
|
retry_condition_fn=retry_condition_fn or self.retry_condition_fn,
|
|
848
851
|
viz_return_value=viz_return_value or self.viz_return_value,
|
|
849
852
|
asset_deps=asset_deps or self.asset_deps,
|
|
@@ -251,8 +251,11 @@ def process_properties(
|
|
|
251
251
|
_fix_tuple_items(schema)
|
|
252
252
|
|
|
253
253
|
if "properties" in schema:
|
|
254
|
-
|
|
255
|
-
|
|
254
|
+
process_properties(
|
|
255
|
+
schema["properties"],
|
|
256
|
+
schema.get("required", []),
|
|
257
|
+
allow_none_with_default,
|
|
258
|
+
)
|
|
256
259
|
|
|
257
260
|
|
|
258
261
|
def preprocess_schema(
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/utilities/templating/__init__.py
RENAMED
|
@@ -401,8 +401,15 @@ async def resolve_block_document_references(
|
|
|
401
401
|
value: Any = data
|
|
402
402
|
|
|
403
403
|
if len(data) == 1 and "value" in data:
|
|
404
|
-
# only resolve the value if the keypath is not already pointing to "value"
|
|
405
|
-
|
|
404
|
+
# only resolve the value if the keypath is not already pointing to "value";
|
|
405
|
+
# a key that merely starts with "value" (e.g. "values") is inside it
|
|
406
|
+
if not (
|
|
407
|
+
value_keypath
|
|
408
|
+
and (
|
|
409
|
+
value_keypath[0] == "value"
|
|
410
|
+
or value_keypath[0].startswith(("value.", "value["))
|
|
411
|
+
)
|
|
412
|
+
):
|
|
406
413
|
data = value = value["value"]
|
|
407
414
|
|
|
408
415
|
if value_keypath:
|
|
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.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/_launchers.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_experimental/sla/objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/client.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/device_id.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/emit.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/enabled.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/events.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/notice.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/analytics/service.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/attempt_control.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
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/api.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/calls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/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.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/installation.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/observability.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/apply.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/collections.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/diagnostics.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/plugins/startup.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/schemas.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/result_records.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/_registry.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/bases.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/fields.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/schemas/serializers.py
RENAMED
|
File without changes
|
{prefect_client-3.8.8.dev2 → prefect_client-3.8.8.dev4}/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.8.dev2 → prefect_client-3.8.8.dev4}/src/prefect/_internal/version_checking.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|