prefect-client 3.7.2.dev5__tar.gz → 3.7.3.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/PKG-INFO +1 -1
- prefect_client-3.7.3.dev1/src/prefect/_build_info.py +5 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/_leases.py +10 -2
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/clients.py +1 -1
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/subscribers.py +1 -1
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/handlers.py +6 -3
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/results.py +4 -0
- prefect_client-3.7.3.dev1/src/prefect/server/api/_ui_static.py +85 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/server.py +4 -22
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/workers.py +1 -1
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/templating/__init__.py +146 -113
- prefect_client-3.7.2.dev5/src/prefect/_build_info.py +0 -5
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/.gitignore +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/LICENSE +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/README.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/hatch_build.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/pyproject.toml +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/__main__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/agent.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/automations.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/base.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/context.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/engine.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/related.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/flows.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/futures.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/main.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/plugins.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/py.typed +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/schedules.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/serializers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/states.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/tasks.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/transactions.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/types/names.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/variables.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/workers/utilities.py +0 -0
|
@@ -143,9 +143,14 @@ def _start_lease_renewal_thread(
|
|
|
143
143
|
stop_event = threading.Event()
|
|
144
144
|
renewal_ctx = contextvars.copy_context()
|
|
145
145
|
|
|
146
|
-
def
|
|
146
|
+
def _run_with_failure_handler() -> None:
|
|
147
|
+
# Runs inside renewal_ctx so the failure handler also sees the
|
|
148
|
+
# copied flow/task run contextvars; otherwise get_run_logger() in
|
|
149
|
+
# _handle_lease_renewal_failure can't find the run context and the
|
|
150
|
+
# message falls back to the plain "prefect.concurrency" logger,
|
|
151
|
+
# never reaching the run logs API.
|
|
147
152
|
try:
|
|
148
|
-
|
|
153
|
+
_lease_renewal_loop(lease_id, lease_duration, stop_event)
|
|
149
154
|
except Exception as exc:
|
|
150
155
|
if not stop_event.is_set():
|
|
151
156
|
_handle_lease_renewal_failure(
|
|
@@ -156,6 +161,9 @@ def _start_lease_renewal_thread(
|
|
|
156
161
|
cancel_scope,
|
|
157
162
|
)
|
|
158
163
|
|
|
164
|
+
def renewal_loop() -> None:
|
|
165
|
+
renewal_ctx.run(_run_with_failure_handler)
|
|
166
|
+
|
|
159
167
|
thread = threading.Thread(
|
|
160
168
|
target=renewal_loop,
|
|
161
169
|
daemon=True,
|
|
@@ -31,7 +31,7 @@ from websockets.exceptions import (
|
|
|
31
31
|
import prefect.types._datetime
|
|
32
32
|
from prefect._internal.version_checking import check_server_version
|
|
33
33
|
from prefect._internal.websockets import websocket_connect
|
|
34
|
-
from prefect.events import Event
|
|
34
|
+
from prefect.events.schemas.events import Event
|
|
35
35
|
from prefect.logging import get_logger
|
|
36
36
|
from prefect.settings import (
|
|
37
37
|
PREFECT_API_KEY,
|
|
@@ -13,9 +13,9 @@ from typing_extensions import Self
|
|
|
13
13
|
|
|
14
14
|
from prefect.client.schemas.filters import LogFilter, LogFilterFlowRunId
|
|
15
15
|
from prefect.client.schemas.objects import TERMINAL_STATES, Log, StateType
|
|
16
|
-
from prefect.events import Event
|
|
17
16
|
from prefect.events.clients import get_events_subscriber
|
|
18
17
|
from prefect.events.filters import EventAnyResourceFilter, EventFilter
|
|
18
|
+
from prefect.events.schemas.events import Event
|
|
19
19
|
from prefect.logging.clients import get_logs_subscriber
|
|
20
20
|
|
|
21
21
|
if TYPE_CHECKING:
|
|
@@ -16,7 +16,6 @@ from rich.highlighter import Highlighter, NullHighlighter
|
|
|
16
16
|
from rich.theme import Theme
|
|
17
17
|
from typing_extensions import Self
|
|
18
18
|
|
|
19
|
-
import prefect.context
|
|
20
19
|
from prefect._internal.concurrency.api import create_call, from_sync
|
|
21
20
|
from prefect._internal.concurrency.event_loop import get_running_loop
|
|
22
21
|
from prefect._internal.concurrency.services import BatchedQueueService
|
|
@@ -161,7 +160,9 @@ class APILogHandler(logging.Handler):
|
|
|
161
160
|
Send a log to the `APILogWorker`
|
|
162
161
|
"""
|
|
163
162
|
try:
|
|
164
|
-
|
|
163
|
+
from prefect.context import get_settings_context
|
|
164
|
+
|
|
165
|
+
profile = get_settings_context()
|
|
165
166
|
|
|
166
167
|
if not profile.settings.logging.to_api.enabled:
|
|
167
168
|
return # Respect the global settings toggle
|
|
@@ -214,7 +215,9 @@ class APILogHandler(logging.Handler):
|
|
|
214
215
|
|
|
215
216
|
if not flow_run_id:
|
|
216
217
|
try:
|
|
217
|
-
|
|
218
|
+
from prefect.context import get_run_context
|
|
219
|
+
|
|
220
|
+
context = get_run_context()
|
|
218
221
|
except MissingContextError:
|
|
219
222
|
raise MissingContextError(
|
|
220
223
|
f"Logger {record.name!r} attempted to send logs to the API without"
|
|
@@ -699,6 +699,8 @@ class ResultStore(BaseModel):
|
|
|
699
699
|
except Exception:
|
|
700
700
|
return False
|
|
701
701
|
else:
|
|
702
|
+
if self.result_storage is None:
|
|
703
|
+
self.result_storage = await aget_default_result_storage()
|
|
702
704
|
try:
|
|
703
705
|
content = await call_explicitly_async_block_method(
|
|
704
706
|
self.result_storage, "read_path", (key,), {}
|
|
@@ -742,6 +744,8 @@ class ResultStore(BaseModel):
|
|
|
742
744
|
except Exception:
|
|
743
745
|
return False
|
|
744
746
|
else:
|
|
747
|
+
if self.result_storage is None:
|
|
748
|
+
self.result_storage = get_default_result_storage(_sync=True)
|
|
745
749
|
try:
|
|
746
750
|
content = call_explicitly_sync_block_method(
|
|
747
751
|
self.result_storage, "read_path", (key,), {}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Private helpers for UI static-file management during server startup."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import errno
|
|
6
|
+
import logging
|
|
7
|
+
import pathlib
|
|
8
|
+
import shutil
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
UIVersion = Literal["v1", "v2"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclass(frozen=True)
|
|
16
|
+
class UIBundle:
|
|
17
|
+
version: UIVersion
|
|
18
|
+
source_static_path: str
|
|
19
|
+
static_dir: str
|
|
20
|
+
base_url: str
|
|
21
|
+
cache_key: str
|
|
22
|
+
mount_name: str
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def log_ui_static_copy_error(
|
|
26
|
+
bundle: UIBundle,
|
|
27
|
+
exc: OSError,
|
|
28
|
+
logger: logging.Logger,
|
|
29
|
+
) -> None:
|
|
30
|
+
"""Log an actionable error when copying a UI bundle's static files fails."""
|
|
31
|
+
if exc.errno == errno.ENOSPC:
|
|
32
|
+
try:
|
|
33
|
+
disk_path = pathlib.Path(bundle.static_dir)
|
|
34
|
+
while not disk_path.exists():
|
|
35
|
+
disk_path = disk_path.parent
|
|
36
|
+
usage = shutil.disk_usage(disk_path)
|
|
37
|
+
available_mb = usage.free / (1024 * 1024)
|
|
38
|
+
except OSError:
|
|
39
|
+
available_mb = None
|
|
40
|
+
try:
|
|
41
|
+
required_bytes = sum(
|
|
42
|
+
f.stat().st_size
|
|
43
|
+
for f in pathlib.Path(bundle.source_static_path).rglob("*")
|
|
44
|
+
if f.is_file()
|
|
45
|
+
)
|
|
46
|
+
required_mb = required_bytes / (1024 * 1024)
|
|
47
|
+
except OSError:
|
|
48
|
+
required_mb = None
|
|
49
|
+
|
|
50
|
+
space_detail = ""
|
|
51
|
+
if required_mb is not None and available_mb is not None:
|
|
52
|
+
space_detail = (
|
|
53
|
+
f" Required: {required_mb:.1f} MB, available: {available_mb:.1f} MB."
|
|
54
|
+
)
|
|
55
|
+
elif available_mb is not None:
|
|
56
|
+
space_detail = f" Available disk space: {available_mb:.1f} MB."
|
|
57
|
+
|
|
58
|
+
logger.error(
|
|
59
|
+
"Not enough disk space to unpack %s UI static"
|
|
60
|
+
" files at %s.%s To resolve this, increase the"
|
|
61
|
+
" size of the volume mounted at that path or set"
|
|
62
|
+
" PREFECT_UI_STATIC_DIRECTORY to a location with"
|
|
63
|
+
" sufficient space.",
|
|
64
|
+
bundle.version.upper(),
|
|
65
|
+
bundle.static_dir,
|
|
66
|
+
space_detail,
|
|
67
|
+
)
|
|
68
|
+
elif isinstance(exc, PermissionError):
|
|
69
|
+
logger.error(
|
|
70
|
+
"Failed to create %s UI static directory at %s:"
|
|
71
|
+
" %s. That UI will not be available. To resolve"
|
|
72
|
+
" this, set PREFECT_UI_STATIC_DIRECTORY to a"
|
|
73
|
+
" writable directory.",
|
|
74
|
+
bundle.version.upper(),
|
|
75
|
+
bundle.static_dir,
|
|
76
|
+
exc,
|
|
77
|
+
)
|
|
78
|
+
else:
|
|
79
|
+
logger.error(
|
|
80
|
+
"Failed to create %s UI static directory at %s:"
|
|
81
|
+
" %s. That UI will not be available.",
|
|
82
|
+
bundle.version.upper(),
|
|
83
|
+
bundle.static_dir,
|
|
84
|
+
exc,
|
|
85
|
+
)
|
|
@@ -21,11 +21,10 @@ import subprocess
|
|
|
21
21
|
import sys
|
|
22
22
|
import time
|
|
23
23
|
from contextlib import AsyncExitStack, asynccontextmanager
|
|
24
|
-
from dataclasses import dataclass
|
|
25
24
|
from datetime import timedelta
|
|
26
25
|
from functools import wraps
|
|
27
26
|
from hashlib import sha256
|
|
28
|
-
from typing import Any, AsyncGenerator, Awaitable, Callable,
|
|
27
|
+
from typing import Any, AsyncGenerator, Awaitable, Callable, Optional
|
|
29
28
|
|
|
30
29
|
import anyio
|
|
31
30
|
import asyncpg
|
|
@@ -52,6 +51,7 @@ from prefect._internal.compatibility.starlette import status
|
|
|
52
51
|
from prefect._internal.observability import configure_logfire
|
|
53
52
|
from prefect.client.constants import SERVER_API_VERSION
|
|
54
53
|
from prefect.logging import get_logger
|
|
54
|
+
from prefect.server.api._ui_static import UIBundle, UIVersion, log_ui_static_copy_error
|
|
55
55
|
from prefect.server.api.background_workers import background_worker
|
|
56
56
|
from prefect.server.api.dependencies import EnforceMinimumAPIVersion
|
|
57
57
|
from prefect.server.exceptions import ObjectNotFoundError
|
|
@@ -128,7 +128,6 @@ SQLITE_LOCKED_MSG = "database is locked"
|
|
|
128
128
|
UI_VERSION_COOKIE_NAME = "prefect_ui_version"
|
|
129
129
|
UI_VERSION_PATH_SEGMENT = "v2"
|
|
130
130
|
UI_STATIC_REFERENCE_FILE_NAME = "UI_SERVE_BASE"
|
|
131
|
-
UIVersion = Literal["v1", "v2"]
|
|
132
131
|
|
|
133
132
|
|
|
134
133
|
class _SQLiteLockedOperationalErrorFilter(logging.Filter):
|
|
@@ -183,16 +182,6 @@ class SPAStaticFiles(StaticFiles):
|
|
|
183
182
|
return await super().get_response("./index.html", scope)
|
|
184
183
|
|
|
185
184
|
|
|
186
|
-
@dataclass(frozen=True)
|
|
187
|
-
class UIBundle:
|
|
188
|
-
version: UIVersion
|
|
189
|
-
source_static_path: str
|
|
190
|
-
static_dir: str
|
|
191
|
-
base_url: str
|
|
192
|
-
cache_key: str
|
|
193
|
-
mount_name: str
|
|
194
|
-
|
|
195
|
-
|
|
196
185
|
def _normalize_ui_base_url(base_url: str) -> str:
|
|
197
186
|
if not base_url:
|
|
198
187
|
return "/"
|
|
@@ -749,15 +738,8 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
749
738
|
if not reference_file_matches_cache_key(bundle):
|
|
750
739
|
try:
|
|
751
740
|
create_ui_static_subpath(bundle)
|
|
752
|
-
except
|
|
753
|
-
logger
|
|
754
|
-
"Failed to create %s UI static directory at %s: %s. "
|
|
755
|
-
"That UI will not be available. "
|
|
756
|
-
"To resolve this, set PREFECT_UI_STATIC_DIRECTORY to a writable directory.",
|
|
757
|
-
bundle.version.upper(),
|
|
758
|
-
bundle.static_dir,
|
|
759
|
-
exc,
|
|
760
|
-
)
|
|
741
|
+
except OSError as exc:
|
|
742
|
+
log_ui_static_copy_error(bundle, exc, logger)
|
|
761
743
|
continue
|
|
762
744
|
|
|
763
745
|
mounted_bundles[bundle.version] = bundle
|
|
@@ -386,7 +386,7 @@ async def _build_worker_ready_frame(
|
|
|
386
386
|
sent_at=now("UTC"),
|
|
387
387
|
payload={
|
|
388
388
|
"consumer_id": hello.payload.consumer_id,
|
|
389
|
-
"worker_id":
|
|
389
|
+
"worker_id": None,
|
|
390
390
|
"selected_channel_version": selected_channel_version,
|
|
391
391
|
"effective_heartbeat_interval_seconds": (
|
|
392
392
|
hello.payload.heartbeat_interval_seconds
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/utilities/templating/__init__.py
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import enum
|
|
2
2
|
import os
|
|
3
3
|
import re
|
|
4
|
+
from copy import deepcopy
|
|
4
5
|
from typing import (
|
|
5
6
|
TYPE_CHECKING,
|
|
6
7
|
Any,
|
|
@@ -24,6 +25,7 @@ if TYPE_CHECKING:
|
|
|
24
25
|
import logging
|
|
25
26
|
|
|
26
27
|
from prefect.client.orchestration import PrefectClient
|
|
28
|
+
from prefect.client.schemas.objects import BlockDocument
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
T = TypeVar("T", str, int, float, bool, dict[Any, Any], list[Any], None)
|
|
@@ -338,7 +340,49 @@ async def resolve_block_document_references(
|
|
|
338
340
|
# the function signature must mark it as optional to callers.
|
|
339
341
|
assert client is not None
|
|
340
342
|
|
|
341
|
-
|
|
343
|
+
block_documents_by_id: dict[Any, "BlockDocument"] = {}
|
|
344
|
+
block_documents_by_name: dict[tuple[str, str], "BlockDocument"] = {}
|
|
345
|
+
|
|
346
|
+
async def _read_block_document_by_name(
|
|
347
|
+
block_type_slug: str, block_document_name: str
|
|
348
|
+
) -> "BlockDocument":
|
|
349
|
+
cache_key = (block_type_slug, block_document_name)
|
|
350
|
+
if cache_key not in block_documents_by_name:
|
|
351
|
+
try:
|
|
352
|
+
block_document = await client.read_block_document_by_name(
|
|
353
|
+
name=block_document_name, block_type_slug=block_type_slug
|
|
354
|
+
)
|
|
355
|
+
except prefect.exceptions.ObjectNotFound as exc:
|
|
356
|
+
raise prefect.exceptions.ObjectNotFound(
|
|
357
|
+
http_exc=exc.http_exc,
|
|
358
|
+
help_message=(
|
|
359
|
+
f"Block not found: '{block_document_name}' of type '{block_type_slug}'. "
|
|
360
|
+
f"This block was referenced in your deployment or work pool configuration but no longer exists. "
|
|
361
|
+
f"It may have been deleted. Please check your configuration or create a new block."
|
|
362
|
+
),
|
|
363
|
+
) from exc
|
|
364
|
+
block_documents_by_name[cache_key] = block_document
|
|
365
|
+
|
|
366
|
+
return block_documents_by_name[cache_key]
|
|
367
|
+
|
|
368
|
+
async def _read_block_document_by_id(block_document_id: Any) -> "BlockDocument":
|
|
369
|
+
if block_document_id not in block_documents_by_id:
|
|
370
|
+
try:
|
|
371
|
+
block_document = await client.read_block_document(block_document_id)
|
|
372
|
+
except prefect.exceptions.ObjectNotFound as exc:
|
|
373
|
+
raise prefect.exceptions.ObjectNotFound(
|
|
374
|
+
http_exc=exc.http_exc,
|
|
375
|
+
help_message=(
|
|
376
|
+
f"Block not found: ID '{block_document_id}'. "
|
|
377
|
+
f"This block was referenced in your deployment or work pool configuration but no longer exists. "
|
|
378
|
+
f"It may have been deleted. Please check your configuration or create a new block."
|
|
379
|
+
),
|
|
380
|
+
) from exc
|
|
381
|
+
block_documents_by_id[block_document_id] = block_document
|
|
382
|
+
|
|
383
|
+
return block_documents_by_id[block_document_id]
|
|
384
|
+
|
|
385
|
+
async def _resolve_single_placeholder(placeholder: Placeholder, tmpl: T) -> Any:
|
|
342
386
|
parts = placeholder.name.replace(BLOCK_DOCUMENT_PLACEHOLDER_PREFIX, "").split(
|
|
343
387
|
".", 2
|
|
344
388
|
)
|
|
@@ -349,19 +393,9 @@ async def resolve_block_document_references(
|
|
|
349
393
|
)
|
|
350
394
|
block_type_slug, block_document_name, *value_keypath = parts
|
|
351
395
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
)
|
|
356
|
-
except prefect.exceptions.ObjectNotFound as exc:
|
|
357
|
-
raise prefect.exceptions.ObjectNotFound(
|
|
358
|
-
http_exc=exc.http_exc,
|
|
359
|
-
help_message=(
|
|
360
|
-
f"Block not found: '{block_document_name}' of type '{block_type_slug}'. "
|
|
361
|
-
f"This block was referenced in your deployment or work pool configuration but no longer exists. "
|
|
362
|
-
f"It may have been deleted. Please check your configuration or create a new block."
|
|
363
|
-
),
|
|
364
|
-
) from exc
|
|
396
|
+
block_document = await _read_block_document_by_name(
|
|
397
|
+
block_type_slug, block_document_name
|
|
398
|
+
)
|
|
365
399
|
|
|
366
400
|
data = block_document.data
|
|
367
401
|
value: Any = data
|
|
@@ -375,80 +409,67 @@ async def resolve_block_document_references(
|
|
|
375
409
|
from_dict: Any = get_from_dict(data, value_keypath[0], default=NotSet)
|
|
376
410
|
if from_dict is NotSet:
|
|
377
411
|
raise ValueError(
|
|
378
|
-
f"Invalid template: {
|
|
412
|
+
f"Invalid template: {tmpl!r}. Could not resolve the"
|
|
379
413
|
" keypath in the block document data."
|
|
380
414
|
)
|
|
381
415
|
value = from_dict
|
|
382
416
|
|
|
417
|
+
value = deepcopy(value)
|
|
418
|
+
|
|
383
419
|
if value_transformer:
|
|
384
420
|
value = value_transformer(placeholder.full_match, value)
|
|
385
421
|
|
|
386
422
|
return value
|
|
387
423
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
block_document = await
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
updated_value = await resolve_block_document_references(
|
|
406
|
-
value, value_transformer=value_transformer, client=client
|
|
424
|
+
async def _resolve(tmpl: T) -> Union[T, dict[str, Any]]:
|
|
425
|
+
if isinstance(tmpl, dict):
|
|
426
|
+
block_document_id = tmpl.get("$ref", {}).get("block_document_id")
|
|
427
|
+
if block_document_id:
|
|
428
|
+
block_document = await _read_block_document_by_id(block_document_id)
|
|
429
|
+
return deepcopy(block_document.data)
|
|
430
|
+
updated_template: dict[str, Any] = {}
|
|
431
|
+
for key, value in tmpl.items():
|
|
432
|
+
updated_template[key] = await _resolve(value)
|
|
433
|
+
return updated_template
|
|
434
|
+
elif isinstance(tmpl, list):
|
|
435
|
+
return [await _resolve(item) for item in tmpl]
|
|
436
|
+
elif isinstance(tmpl, str):
|
|
437
|
+
placeholders = find_placeholders(tmpl)
|
|
438
|
+
has_block_document_placeholder = any(
|
|
439
|
+
placeholder.type is PlaceholderType.BLOCK_DOCUMENT
|
|
440
|
+
for placeholder in placeholders
|
|
407
441
|
)
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
)
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
# Inline substitution: replace each block placeholder with its resolved value.
|
|
434
|
-
# Any non-block placeholders are left intact for later resolution.
|
|
435
|
-
result = template
|
|
436
|
-
for placeholder in placeholders:
|
|
437
|
-
if placeholder.type is not PlaceholderType.BLOCK_DOCUMENT:
|
|
438
|
-
continue
|
|
439
|
-
value = await _resolve_single_placeholder(placeholder)
|
|
440
|
-
if isinstance(value, (dict, list)):
|
|
441
|
-
raise ValueError(
|
|
442
|
-
f"Invalid template: {template!r}. Block placeholder"
|
|
443
|
-
f" {placeholder.full_match!r} resolved to a {type(value).__name__},"
|
|
444
|
-
" which cannot be used for inline string substitution."
|
|
445
|
-
" Resolve a scalar attribute instead (e.g., '.value' or '.url')."
|
|
446
|
-
)
|
|
447
|
-
result = result.replace(placeholder.full_match, str(value))
|
|
442
|
+
if not (placeholders and has_block_document_placeholder):
|
|
443
|
+
return tmpl
|
|
444
|
+
elif (
|
|
445
|
+
len(placeholders) == 1
|
|
446
|
+
and list(placeholders)[0].full_match == tmpl
|
|
447
|
+
and list(placeholders)[0].type is PlaceholderType.BLOCK_DOCUMENT
|
|
448
|
+
):
|
|
449
|
+
[placeholder] = placeholders
|
|
450
|
+
return await _resolve_single_placeholder(placeholder, tmpl)
|
|
451
|
+
else:
|
|
452
|
+
# Inline substitution: replace each block placeholder with its resolved value.
|
|
453
|
+
# Any non-block placeholders are left intact for later resolution.
|
|
454
|
+
result = tmpl
|
|
455
|
+
for placeholder in placeholders:
|
|
456
|
+
if placeholder.type is not PlaceholderType.BLOCK_DOCUMENT:
|
|
457
|
+
continue
|
|
458
|
+
value = await _resolve_single_placeholder(placeholder, tmpl)
|
|
459
|
+
if isinstance(value, (dict, list)):
|
|
460
|
+
raise ValueError(
|
|
461
|
+
f"Invalid template: {tmpl!r}. Block placeholder"
|
|
462
|
+
f" {placeholder.full_match!r} resolved to a {type(value).__name__},"
|
|
463
|
+
" which cannot be used for inline string substitution."
|
|
464
|
+
" Resolve a scalar attribute instead (e.g., '.value' or '.url')."
|
|
465
|
+
)
|
|
466
|
+
result = result.replace(placeholder.full_match, str(value))
|
|
448
467
|
|
|
449
|
-
|
|
468
|
+
return cast(T, result)
|
|
450
469
|
|
|
451
|
-
|
|
470
|
+
return tmpl
|
|
471
|
+
|
|
472
|
+
return await _resolve(template)
|
|
452
473
|
|
|
453
474
|
|
|
454
475
|
@inject_client
|
|
@@ -472,43 +493,55 @@ async def resolve_variables(template: T, client: Optional["PrefectClient"] = Non
|
|
|
472
493
|
# the function signature must mark it as optional to callers.
|
|
473
494
|
assert client is not None
|
|
474
495
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
496
|
+
_SENTINEL = object()
|
|
497
|
+
_MISSING = object()
|
|
498
|
+
cache: dict[str, Any] = {}
|
|
499
|
+
|
|
500
|
+
async def _read_variable(name: str) -> Any:
|
|
501
|
+
variable_name = name.replace(VARIABLE_PLACEHOLDER_PREFIX, "")
|
|
502
|
+
cached = cache.get(variable_name, _SENTINEL)
|
|
503
|
+
if cached is not _SENTINEL:
|
|
504
|
+
return cached
|
|
505
|
+
variable = await client.read_variable_by_name(name=variable_name)
|
|
506
|
+
if variable is None:
|
|
507
|
+
cache[variable_name] = _MISSING
|
|
508
|
+
return _MISSING
|
|
509
|
+
cache[variable_name] = variable.value
|
|
510
|
+
return variable.value
|
|
511
|
+
|
|
512
|
+
async def _resolve(tmpl: T) -> T:
|
|
513
|
+
if isinstance(tmpl, str):
|
|
514
|
+
placeholders = find_placeholders(tmpl)
|
|
515
|
+
has_variable_placeholder = any(
|
|
516
|
+
placeholder.type is PlaceholderType.VARIABLE
|
|
517
|
+
for placeholder in placeholders
|
|
490
518
|
)
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
519
|
+
if not placeholders or not has_variable_placeholder:
|
|
520
|
+
return tmpl
|
|
521
|
+
elif (
|
|
522
|
+
len(placeholders) == 1
|
|
523
|
+
and list(placeholders)[0].full_match == tmpl
|
|
524
|
+
and list(placeholders)[0].type is PlaceholderType.VARIABLE
|
|
525
|
+
):
|
|
526
|
+
value = await _read_variable(list(placeholders)[0].name)
|
|
527
|
+
if value is _MISSING:
|
|
528
|
+
return ""
|
|
529
|
+
else:
|
|
530
|
+
return cast(T, value)
|
|
494
531
|
else:
|
|
495
|
-
|
|
532
|
+
for full_match, name, placeholder_type in placeholders:
|
|
533
|
+
if placeholder_type is PlaceholderType.VARIABLE:
|
|
534
|
+
value = await _read_variable(name)
|
|
535
|
+
if value is _MISSING:
|
|
536
|
+
tmpl = tmpl.replace(full_match, "")
|
|
537
|
+
else:
|
|
538
|
+
tmpl = tmpl.replace(full_match, str(value))
|
|
539
|
+
return tmpl
|
|
540
|
+
elif isinstance(tmpl, dict):
|
|
541
|
+
return {key: await _resolve(value) for key, value in tmpl.items()}
|
|
542
|
+
elif isinstance(tmpl, list):
|
|
543
|
+
return [await _resolve(item) for item in tmpl]
|
|
496
544
|
else:
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
variable = await client.read_variable_by_name(name=variable_name)
|
|
501
|
-
if variable is None:
|
|
502
|
-
template = template.replace(full_match, "")
|
|
503
|
-
else:
|
|
504
|
-
template = template.replace(full_match, str(variable.value))
|
|
505
|
-
return template
|
|
506
|
-
elif isinstance(template, dict):
|
|
507
|
-
return {
|
|
508
|
-
key: await resolve_variables(value, client=client)
|
|
509
|
-
for key, value in template.items()
|
|
510
|
-
}
|
|
511
|
-
elif isinstance(template, list):
|
|
512
|
-
return [await resolve_variables(item, client=client) for item in template]
|
|
513
|
-
else:
|
|
514
|
-
return template
|
|
545
|
+
return tmpl
|
|
546
|
+
|
|
547
|
+
return await _resolve(template)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/_launchers.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.7.2.dev5 → prefect_client-3.7.3.dev1}/src/prefect/_experimental/sla/objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|