prefect-client 3.8.6.dev2__tar.gz → 3.8.6.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/PKG-INFO +1 -1
- prefect_client-3.8.6.dev3/src/prefect/_build_info.py +5 -0
- prefect_client-3.8.6.dev3/src/prefect/server/api/run_history.py +155 -0
- prefect_client-3.8.6.dev2/src/prefect/_build_info.py +0 -5
- prefect_client-3.8.6.dev2/src/prefect/server/api/run_history.py +0 -170
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/.gitignore +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/LICENSE +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/README.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/hatch_build.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/pyproject.toml +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/__main__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/attempt_control.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/agent.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/automations.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/base.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/context.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/engine.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/related.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/flows.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/futures.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/main.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/plugins.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/py.typed +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/results.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_uv_command.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_workspace_hook_runner.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_workspace_runtime.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/_workspace_supervisor.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/schedules.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/serializers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/states.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/tasks.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/transactions.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/types/names.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/templating/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/variables.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/workers/utilities.py +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Utilities for querying flow and task run history.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import datetime
|
|
6
|
+
from collections import defaultdict
|
|
7
|
+
from typing import TYPE_CHECKING, Any, List, Optional
|
|
8
|
+
|
|
9
|
+
import pydantic
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
from typing_extensions import Literal
|
|
12
|
+
|
|
13
|
+
import prefect.server.models as models
|
|
14
|
+
import prefect.server.schemas as schemas
|
|
15
|
+
from prefect.logging import get_logger
|
|
16
|
+
from prefect.server.database import PrefectDBInterface, db_injector
|
|
17
|
+
from prefect.types import DateTime
|
|
18
|
+
|
|
19
|
+
if TYPE_CHECKING:
|
|
20
|
+
import logging
|
|
21
|
+
|
|
22
|
+
logger: "logging.Logger" = get_logger("server.api")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@db_injector
|
|
26
|
+
async def run_history(
|
|
27
|
+
db: PrefectDBInterface,
|
|
28
|
+
session: sa.orm.Session,
|
|
29
|
+
run_type: Literal["flow_run", "task_run"],
|
|
30
|
+
history_start: DateTime,
|
|
31
|
+
history_end: DateTime,
|
|
32
|
+
history_interval: datetime.timedelta,
|
|
33
|
+
flows: Optional[schemas.filters.FlowFilter] = None,
|
|
34
|
+
flow_runs: Optional[schemas.filters.FlowRunFilter] = None,
|
|
35
|
+
task_runs: Optional[schemas.filters.TaskRunFilter] = None,
|
|
36
|
+
deployments: Optional[schemas.filters.DeploymentFilter] = None,
|
|
37
|
+
work_pools: Optional[schemas.filters.WorkPoolFilter] = None,
|
|
38
|
+
work_queues: Optional[schemas.filters.WorkQueueFilter] = None,
|
|
39
|
+
) -> list[schemas.responses.HistoryResponse]:
|
|
40
|
+
"""
|
|
41
|
+
Produce a history of runs aggregated by interval and state
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
# normalize to stdlib timedeltas; pendulum intervals, which the timestamp
|
|
45
|
+
# arguments produce when they are pendulum instances, do not support floor
|
|
46
|
+
# division by a timedelta
|
|
47
|
+
history_interval = datetime.timedelta(seconds=history_interval.total_seconds())
|
|
48
|
+
|
|
49
|
+
# SQLite has issues with very small intervals
|
|
50
|
+
# (by 0.001 seconds it stops incrementing the interval)
|
|
51
|
+
if history_interval < datetime.timedelta(seconds=1):
|
|
52
|
+
raise ValueError("History interval must not be less than 1 second.")
|
|
53
|
+
|
|
54
|
+
# prepare run-specific models
|
|
55
|
+
if run_type == "flow_run":
|
|
56
|
+
run_model = db.FlowRun
|
|
57
|
+
run_filter_function = models.flow_runs._apply_flow_run_filters
|
|
58
|
+
elif run_type == "task_run":
|
|
59
|
+
run_model = db.TaskRun
|
|
60
|
+
run_filter_function = models.task_runs._apply_task_run_filters
|
|
61
|
+
else:
|
|
62
|
+
raise ValueError(
|
|
63
|
+
f"Unknown run type {run_type!r}. Expected 'flow_run' or 'task_run'."
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
elapsed = datetime.timedelta(seconds=(history_end - history_start).total_seconds())
|
|
67
|
+
interval_count = (
|
|
68
|
+
min(-((-elapsed) // history_interval), 500)
|
|
69
|
+
if elapsed > datetime.timedelta(0)
|
|
70
|
+
else 0
|
|
71
|
+
)
|
|
72
|
+
if interval_count == 0:
|
|
73
|
+
return []
|
|
74
|
+
|
|
75
|
+
history_query_end = history_start + interval_count * history_interval
|
|
76
|
+
|
|
77
|
+
# apply filters to the flow runs (and related states)
|
|
78
|
+
runs = await run_filter_function(
|
|
79
|
+
db,
|
|
80
|
+
sa.select(
|
|
81
|
+
run_model.id,
|
|
82
|
+
run_model.expected_start_time,
|
|
83
|
+
run_model.estimated_run_time,
|
|
84
|
+
run_model.estimated_start_time_delta,
|
|
85
|
+
run_model.state_type,
|
|
86
|
+
run_model.state_name,
|
|
87
|
+
db.queries.make_timestamp_bucket_index(
|
|
88
|
+
run_model.expected_start_time,
|
|
89
|
+
history_start,
|
|
90
|
+
history_interval,
|
|
91
|
+
).label("bucket_index"),
|
|
92
|
+
)
|
|
93
|
+
.select_from(run_model)
|
|
94
|
+
.where(
|
|
95
|
+
run_model.expected_start_time >= history_start,
|
|
96
|
+
run_model.expected_start_time < history_query_end,
|
|
97
|
+
),
|
|
98
|
+
flow_filter=flows,
|
|
99
|
+
flow_run_filter=flow_runs,
|
|
100
|
+
task_run_filter=task_runs,
|
|
101
|
+
deployment_filter=deployments,
|
|
102
|
+
work_pool_filter=work_pools,
|
|
103
|
+
work_queue_filter=work_queues,
|
|
104
|
+
)
|
|
105
|
+
runs = runs.alias("runs")
|
|
106
|
+
|
|
107
|
+
counts = sa.select(
|
|
108
|
+
runs.c.bucket_index,
|
|
109
|
+
runs.c.state_type,
|
|
110
|
+
runs.c.state_name,
|
|
111
|
+
sa.func.count(runs.c.id).label("count_runs"),
|
|
112
|
+
# estimated run times only includes positive run times (to avoid any unexpected corner cases)
|
|
113
|
+
sa.func.sum(
|
|
114
|
+
sa.func.greatest(0, sa.extract("epoch", runs.c.estimated_run_time))
|
|
115
|
+
).label("sum_estimated_run_time"),
|
|
116
|
+
# estimated lateness is the sum of any positive start time deltas
|
|
117
|
+
sa.func.sum(
|
|
118
|
+
sa.func.greatest(0, sa.extract("epoch", runs.c.estimated_start_time_delta))
|
|
119
|
+
).label("sum_estimated_lateness"),
|
|
120
|
+
).group_by(
|
|
121
|
+
runs.c.bucket_index,
|
|
122
|
+
runs.c.state_type,
|
|
123
|
+
runs.c.state_name,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
# issue the query
|
|
127
|
+
result = await session.execute(counts)
|
|
128
|
+
states_by_bucket: dict[int, list[dict[str, Any]]] = defaultdict(list)
|
|
129
|
+
for record in result.mappings():
|
|
130
|
+
states_by_bucket[record["bucket_index"]].append(
|
|
131
|
+
{
|
|
132
|
+
"state_type": record["state_type"],
|
|
133
|
+
"state_name": record["state_name"],
|
|
134
|
+
"count_runs": record["count_runs"],
|
|
135
|
+
"sum_estimated_run_time": record["sum_estimated_run_time"],
|
|
136
|
+
"sum_estimated_lateness": record["sum_estimated_lateness"],
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
records = [
|
|
141
|
+
{
|
|
142
|
+
"interval_start": (history_start + i * history_interval).astimezone(
|
|
143
|
+
datetime.timezone.utc
|
|
144
|
+
),
|
|
145
|
+
"interval_end": (history_start + (i + 1) * history_interval).astimezone(
|
|
146
|
+
datetime.timezone.utc
|
|
147
|
+
),
|
|
148
|
+
"states": states_by_bucket[i],
|
|
149
|
+
}
|
|
150
|
+
for i in range(interval_count)
|
|
151
|
+
]
|
|
152
|
+
|
|
153
|
+
return pydantic.TypeAdapter(
|
|
154
|
+
List[schemas.responses.HistoryResponse]
|
|
155
|
+
).validate_python(records)
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Utilities for querying flow and task run history.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
import datetime
|
|
6
|
-
import json
|
|
7
|
-
from typing import TYPE_CHECKING, List, Optional
|
|
8
|
-
|
|
9
|
-
import pydantic
|
|
10
|
-
import sqlalchemy as sa
|
|
11
|
-
from typing_extensions import Literal
|
|
12
|
-
|
|
13
|
-
import prefect.server.models as models
|
|
14
|
-
import prefect.server.schemas as schemas
|
|
15
|
-
from prefect.logging import get_logger
|
|
16
|
-
from prefect.server.database import PrefectDBInterface, db_injector
|
|
17
|
-
from prefect.types import DateTime
|
|
18
|
-
|
|
19
|
-
if TYPE_CHECKING:
|
|
20
|
-
import logging
|
|
21
|
-
|
|
22
|
-
logger: "logging.Logger" = get_logger("server.api")
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@db_injector
|
|
26
|
-
async def run_history(
|
|
27
|
-
db: PrefectDBInterface,
|
|
28
|
-
session: sa.orm.Session,
|
|
29
|
-
run_type: Literal["flow_run", "task_run"],
|
|
30
|
-
history_start: DateTime,
|
|
31
|
-
history_end: DateTime,
|
|
32
|
-
history_interval: datetime.timedelta,
|
|
33
|
-
flows: Optional[schemas.filters.FlowFilter] = None,
|
|
34
|
-
flow_runs: Optional[schemas.filters.FlowRunFilter] = None,
|
|
35
|
-
task_runs: Optional[schemas.filters.TaskRunFilter] = None,
|
|
36
|
-
deployments: Optional[schemas.filters.DeploymentFilter] = None,
|
|
37
|
-
work_pools: Optional[schemas.filters.WorkPoolFilter] = None,
|
|
38
|
-
work_queues: Optional[schemas.filters.WorkQueueFilter] = None,
|
|
39
|
-
) -> list[schemas.responses.HistoryResponse]:
|
|
40
|
-
"""
|
|
41
|
-
Produce a history of runs aggregated by interval and state
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
# SQLite has issues with very small intervals
|
|
45
|
-
# (by 0.001 seconds it stops incrementing the interval)
|
|
46
|
-
if history_interval < datetime.timedelta(seconds=1):
|
|
47
|
-
raise ValueError("History interval must not be less than 1 second.")
|
|
48
|
-
|
|
49
|
-
# prepare run-specific models
|
|
50
|
-
if run_type == "flow_run":
|
|
51
|
-
run_model = db.FlowRun
|
|
52
|
-
run_filter_function = models.flow_runs._apply_flow_run_filters
|
|
53
|
-
elif run_type == "task_run":
|
|
54
|
-
run_model = db.TaskRun
|
|
55
|
-
run_filter_function = models.task_runs._apply_task_run_filters
|
|
56
|
-
else:
|
|
57
|
-
raise ValueError(
|
|
58
|
-
f"Unknown run type {run_type!r}. Expected 'flow_run' or 'task_run'."
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
# create a CTE for timestamp intervals
|
|
62
|
-
intervals = db.queries.make_timestamp_intervals(
|
|
63
|
-
history_start,
|
|
64
|
-
history_end,
|
|
65
|
-
history_interval,
|
|
66
|
-
).cte("intervals")
|
|
67
|
-
|
|
68
|
-
# apply filters to the flow runs (and related states)
|
|
69
|
-
runs = (
|
|
70
|
-
await run_filter_function(
|
|
71
|
-
db,
|
|
72
|
-
sa.select(
|
|
73
|
-
run_model.id,
|
|
74
|
-
run_model.expected_start_time,
|
|
75
|
-
run_model.estimated_run_time,
|
|
76
|
-
run_model.estimated_start_time_delta,
|
|
77
|
-
run_model.state_type,
|
|
78
|
-
run_model.state_name,
|
|
79
|
-
).select_from(run_model),
|
|
80
|
-
flow_filter=flows,
|
|
81
|
-
flow_run_filter=flow_runs,
|
|
82
|
-
task_run_filter=task_runs,
|
|
83
|
-
deployment_filter=deployments,
|
|
84
|
-
work_pool_filter=work_pools,
|
|
85
|
-
work_queue_filter=work_queues,
|
|
86
|
-
)
|
|
87
|
-
).alias("runs")
|
|
88
|
-
# outer join intervals to the filtered runs to create a dataset composed of
|
|
89
|
-
# every interval and the aggregate of all its runs. The runs aggregate is represented
|
|
90
|
-
# by a descriptive JSON object
|
|
91
|
-
counts = (
|
|
92
|
-
sa.select(
|
|
93
|
-
intervals.c.interval_start,
|
|
94
|
-
intervals.c.interval_end,
|
|
95
|
-
# build a JSON object, ignoring the case where the count of runs is 0
|
|
96
|
-
sa.case(
|
|
97
|
-
(sa.func.count(runs.c.id) == 0, None),
|
|
98
|
-
else_=db.queries.build_json_object(
|
|
99
|
-
"state_type",
|
|
100
|
-
runs.c.state_type,
|
|
101
|
-
"state_name",
|
|
102
|
-
runs.c.state_name,
|
|
103
|
-
"count_runs",
|
|
104
|
-
sa.func.count(runs.c.id),
|
|
105
|
-
# estimated run times only includes positive run times (to avoid any unexpected corner cases)
|
|
106
|
-
"sum_estimated_run_time",
|
|
107
|
-
sa.func.sum(
|
|
108
|
-
sa.func.greatest(
|
|
109
|
-
0, sa.extract("epoch", runs.c.estimated_run_time)
|
|
110
|
-
)
|
|
111
|
-
),
|
|
112
|
-
# estimated lateness is the sum of any positive start time deltas
|
|
113
|
-
"sum_estimated_lateness",
|
|
114
|
-
sa.func.sum(
|
|
115
|
-
sa.func.greatest(
|
|
116
|
-
0, sa.extract("epoch", runs.c.estimated_start_time_delta)
|
|
117
|
-
)
|
|
118
|
-
),
|
|
119
|
-
),
|
|
120
|
-
).label("state_agg"),
|
|
121
|
-
)
|
|
122
|
-
.select_from(intervals)
|
|
123
|
-
.join(
|
|
124
|
-
runs,
|
|
125
|
-
sa.and_(
|
|
126
|
-
runs.c.expected_start_time >= intervals.c.interval_start,
|
|
127
|
-
runs.c.expected_start_time < intervals.c.interval_end,
|
|
128
|
-
),
|
|
129
|
-
isouter=True,
|
|
130
|
-
)
|
|
131
|
-
.group_by(
|
|
132
|
-
intervals.c.interval_start,
|
|
133
|
-
intervals.c.interval_end,
|
|
134
|
-
runs.c.state_type,
|
|
135
|
-
runs.c.state_name,
|
|
136
|
-
)
|
|
137
|
-
).alias("counts")
|
|
138
|
-
|
|
139
|
-
# aggregate all state-aggregate objects into a single array for each interval,
|
|
140
|
-
# ensuring that intervals with no runs have an empty array
|
|
141
|
-
query = (
|
|
142
|
-
sa.select(
|
|
143
|
-
counts.c.interval_start,
|
|
144
|
-
counts.c.interval_end,
|
|
145
|
-
sa.func.coalesce(
|
|
146
|
-
db.queries.json_arr_agg(
|
|
147
|
-
db.queries.cast_to_json(counts.c.state_agg)
|
|
148
|
-
).filter(counts.c.state_agg.is_not(None)),
|
|
149
|
-
sa.literal("[]", literal_execute=True),
|
|
150
|
-
).label("states"),
|
|
151
|
-
)
|
|
152
|
-
.group_by(counts.c.interval_start, counts.c.interval_end)
|
|
153
|
-
.order_by(counts.c.interval_start)
|
|
154
|
-
# return no more than 500 bars
|
|
155
|
-
.limit(500)
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
# issue the query
|
|
159
|
-
result = await session.execute(query)
|
|
160
|
-
records = result.mappings()
|
|
161
|
-
|
|
162
|
-
# load and parse the record if the database returns JSON as strings
|
|
163
|
-
if db.queries.uses_json_strings:
|
|
164
|
-
records = [dict(r) for r in records]
|
|
165
|
-
for r in records:
|
|
166
|
-
r["states"] = json.loads(r["states"])
|
|
167
|
-
|
|
168
|
-
return pydantic.TypeAdapter(
|
|
169
|
-
List[schemas.responses.HistoryResponse]
|
|
170
|
-
).validate_python(records)
|
|
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.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/_launchers.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_experimental/sla/objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/client.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/device_id.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/emit.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/enabled.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/events.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/notice.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/analytics/service.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/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.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/api.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/calls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/control_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/installation.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/observability.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/apply.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/collections.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/diagnostics.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/plugins/startup.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/schemas.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/result_records.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/_registry.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/bases.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/fields.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/serializers.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/schemas/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_internal/version_checking.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
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/schema_converter.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/templates/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_sdk/templates/sdk.py.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.8.6.dev2 → prefect_client-3.8.6.dev3}/src/prefect/_vendor/croniter/__init__.py
RENAMED
|
File without changes
|