prefect-client 3.7.5.dev2__tar.gz → 3.7.5.dev4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/PKG-INFO +1 -1
- prefect_client-3.7.5.dev4/src/prefect/_build_info.py +5 -0
- prefect_client-3.7.5.dev4/src/prefect/_internal/schemas/_registry.py +13 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/validators.py +5 -1
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/actions.py +18 -2
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/AGENTS.md +2 -2
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_event_emitter.py +24 -16
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/deployments.py +5 -1
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/server.py +17 -14
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/ui/schemas.py +6 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/dockerutils.py +1 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/schema_tools/AGENTS.md +1 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/schema_tools/validation.py +14 -2
- prefect_client-3.7.5.dev2/src/prefect/_build_info.py +0 -5
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/.gitignore +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/LICENSE +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/README.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/hatch_build.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/pyproject.toml +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/__main__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/agent.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/automations.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/base.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/context.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/engine.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/related.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/flows.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/futures.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/main.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/plugins.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/py.typed +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/results.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/schedules.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/serializers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/states.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/tasks.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/transactions.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/types/names.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/templating/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/variables.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/workers/utilities.py +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from referencing import Registry
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def non_fetching_registry() -> Registry:
|
|
5
|
+
"""An empty `referencing.Registry` that disables remote `$ref` fetching.
|
|
6
|
+
|
|
7
|
+
Passing an explicit registry to jsonschema suppresses its default behavior of
|
|
8
|
+
fetching `$ref` URLs over the network while validating an instance. With an
|
|
9
|
+
empty registry, external references raise `referencing.exceptions.Unresolvable`
|
|
10
|
+
without any network request, while in-document references (`#/$defs/...`) still
|
|
11
|
+
resolve normally.
|
|
12
|
+
"""
|
|
13
|
+
return Registry()
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/validators.py
RENAMED
|
@@ -21,7 +21,9 @@ from uuid import UUID
|
|
|
21
21
|
from zoneinfo import ZoneInfo
|
|
22
22
|
|
|
23
23
|
import jsonschema
|
|
24
|
+
import referencing.exceptions
|
|
24
25
|
|
|
26
|
+
from prefect._internal.schemas._registry import non_fetching_registry
|
|
25
27
|
from prefect.types._datetime import DateTime, create_datetime_instance, get_timezones
|
|
26
28
|
from prefect.utilities.collections import isiterable
|
|
27
29
|
from prefect.utilities.filesystem import relative_path_to_current_platform
|
|
@@ -65,7 +67,9 @@ def validate_values_conform_to_schema(
|
|
|
65
67
|
|
|
66
68
|
try:
|
|
67
69
|
if schema is not None and values is not None:
|
|
68
|
-
jsonschema.validate(values, schema)
|
|
70
|
+
jsonschema.validate(values, schema, registry=non_fetching_registry())
|
|
71
|
+
except referencing.exceptions.Unresolvable as exc:
|
|
72
|
+
raise ValueError(f"Validation failed. Failure reason: {exc}") from exc
|
|
69
73
|
except jsonschema.ValidationError as exc:
|
|
70
74
|
if exc.json_path == "$":
|
|
71
75
|
error_message = "Validation failed."
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/client/schemas/actions.py
RENAMED
|
@@ -6,6 +6,7 @@ from typing import Annotated, Any, Callable, Optional, TypeVar, Union
|
|
|
6
6
|
from uuid import UUID, uuid4
|
|
7
7
|
|
|
8
8
|
import jsonschema
|
|
9
|
+
import referencing.exceptions
|
|
9
10
|
from pydantic import (
|
|
10
11
|
AfterValidator,
|
|
11
12
|
BaseModel,
|
|
@@ -18,6 +19,7 @@ from pydantic import (
|
|
|
18
19
|
import prefect.client.schemas.objects as objects
|
|
19
20
|
from prefect._internal.result_records import ResultRecordMetadata
|
|
20
21
|
from prefect._internal.schema import ParameterSchema
|
|
22
|
+
from prefect._internal.schemas._registry import non_fetching_registry
|
|
21
23
|
from prefect._internal.schemas.bases import ActionBaseModel
|
|
22
24
|
from prefect._internal.schemas.validators import (
|
|
23
25
|
convert_to_strings,
|
|
@@ -324,7 +326,14 @@ class DeploymentCreate(ActionBaseModel):
|
|
|
324
326
|
if "default" in v and k in required:
|
|
325
327
|
required.remove(k)
|
|
326
328
|
|
|
327
|
-
|
|
329
|
+
try:
|
|
330
|
+
jsonschema.validate(
|
|
331
|
+
self.job_variables,
|
|
332
|
+
variables_schema,
|
|
333
|
+
registry=non_fetching_registry(),
|
|
334
|
+
)
|
|
335
|
+
except referencing.exceptions.Unresolvable as exc:
|
|
336
|
+
raise jsonschema.ValidationError(str(exc)) from exc
|
|
328
337
|
|
|
329
338
|
|
|
330
339
|
class DeploymentUpdate(ActionBaseModel):
|
|
@@ -403,7 +412,14 @@ class DeploymentUpdate(ActionBaseModel):
|
|
|
403
412
|
required.remove(k)
|
|
404
413
|
|
|
405
414
|
if variables_schema is not None:
|
|
406
|
-
|
|
415
|
+
try:
|
|
416
|
+
jsonschema.validate(
|
|
417
|
+
self.job_variables,
|
|
418
|
+
variables_schema,
|
|
419
|
+
registry=non_fetching_registry(),
|
|
420
|
+
)
|
|
421
|
+
except referencing.exceptions.Unresolvable as exc:
|
|
422
|
+
raise jsonschema.ValidationError(str(exc)) from exc
|
|
407
423
|
|
|
408
424
|
|
|
409
425
|
class DeploymentBranch(ActionBaseModel):
|
|
@@ -15,7 +15,7 @@ Thin facade over single-responsibility extracted classes. New behavior belongs i
|
|
|
15
15
|
| CancelFinalizer | _cancel_finalizer.py | Persist Cancelled state after kill; fall back to Crashed if state cannot be confirmed |
|
|
16
16
|
| ControlChannel | _control_channel.py | Runner-side TCP loopback IPC for delivering cancel intent to child processes before kill |
|
|
17
17
|
| HookRunner | _hook_runner.py | on_cancellation / on_crashed hook execution |
|
|
18
|
-
| EventEmitter | _event_emitter.py | Event emission via EventsClient; degrades to NullEventsClient on WebSocket
|
|
18
|
+
| EventEmitter | _event_emitter.py | Event emission via EventsClient; degrades to NullEventsClient on any WebSocket connection failure |
|
|
19
19
|
| LimitManager | _limit_manager.py | Concurrency limiting |
|
|
20
20
|
| DeploymentRegistry | _deployment_registry.py | Deployment/flow/storage/bundle maps |
|
|
21
21
|
| ScheduledRunPoller | _scheduled_run_poller.py | Poll loop, run discovery, scheduling |
|
|
@@ -49,7 +49,7 @@ These will be removed once internal callers (notably ProcessWorker) are migrated
|
|
|
49
49
|
|
|
50
50
|
## EventEmitter WebSocket Degradation
|
|
51
51
|
|
|
52
|
-
`EventEmitter.__aenter__` catches
|
|
52
|
+
`EventEmitter.__aenter__` catches connection failures and silently swaps the failed client for a `NullEventsClient` — events are non-critical telemetry (the runner emits only `prefect.runner.cancelled-flow-run`), so the flow run must not crash when the events WebSocket is unreachable. Two failure classes are caught (`_NONFATAL_CONNECTION_EXCEPTIONS`): permanent rejections (`websockets.exceptions.InvalidStatus`, i.e. HTTP 4xx — e.g. a client ≤3.6.13 connecting to a server ≥3.6.14 with `PREFECT_SERVER_API_AUTH_STRING` configured) and transient failures (`RETRYABLE_EXCEPTIONS` from `events/clients.py`: `ConnectionClosed`, `TimeoutError`, `OSError`) that outlive the events client's own reconnection attempts. A `WARNING` is logged. If `__aenter__` raises, `__aexit__` is **not** called on the original client (it was never successfully entered); the replacement `NullEventsClient` is entered instead.
|
|
53
53
|
|
|
54
54
|
## AsyncExitStack LIFO Ordering
|
|
55
55
|
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/runner/_event_emitter.py
RENAMED
|
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Callable
|
|
|
5
5
|
from cachetools import TTLCache
|
|
6
6
|
from websockets.exceptions import InvalidStatus as _WsInvalidStatus
|
|
7
7
|
|
|
8
|
-
from prefect.events.clients import NullEventsClient
|
|
8
|
+
from prefect.events.clients import RETRYABLE_EXCEPTIONS, NullEventsClient
|
|
9
9
|
from prefect.events.related import tags_as_related_resources
|
|
10
10
|
from prefect.events.schemas.events import Event, RelatedResource, Resource
|
|
11
11
|
from prefect.logging import get_logger
|
|
@@ -18,12 +18,19 @@ if TYPE_CHECKING:
|
|
|
18
18
|
from prefect.client.schemas.responses import DeploymentResponse
|
|
19
19
|
from prefect.events.clients import EventsClient
|
|
20
20
|
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
21
|
+
# Connection failures that must not crash the flow run. The events WebSocket
|
|
22
|
+
# carries non-critical telemetry, so a failure to connect degrades to
|
|
23
|
+
# NullEventsClient rather than taking the flow run down with it.
|
|
24
|
+
# - _WsInvalidStatus: the server rejected the handshake (HTTP 401/403), e.g. a
|
|
25
|
+
# client <=3.6.13 connecting to a server >=3.6.14 that has
|
|
26
|
+
# PREFECT_SERVER_API_AUTH_STRING configured. A permanent failure.
|
|
27
|
+
# - RETRYABLE_EXCEPTIONS: transient failures (handshake timeout, dropped
|
|
28
|
+
# connection, network errors) that the events client already retries; once
|
|
29
|
+
# those retries are exhausted the error must still not be fatal here.
|
|
30
|
+
_NONFATAL_CONNECTION_EXCEPTIONS: tuple[type[Exception], ...] = (
|
|
31
|
+
_WsInvalidStatus,
|
|
32
|
+
*RETRYABLE_EXCEPTIONS,
|
|
33
|
+
)
|
|
27
34
|
|
|
28
35
|
|
|
29
36
|
def _default_get_events_client() -> "EventsClient":
|
|
@@ -60,17 +67,18 @@ class EventEmitter:
|
|
|
60
67
|
try:
|
|
61
68
|
await self._events_client.__aenter__()
|
|
62
69
|
except _NONFATAL_CONNECTION_EXCEPTIONS as exc:
|
|
63
|
-
# The events WebSocket
|
|
64
|
-
#
|
|
65
|
-
# >=3.6.14
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
70
|
+
# The events WebSocket could not be established -- either rejected by
|
|
71
|
+
# the server (HTTP 401/403, e.g. a client <=3.6.13 connecting to a
|
|
72
|
+
# server >=3.6.14 with PREFECT_SERVER_API_AUTH_STRING configured) or a
|
|
73
|
+
# transient connection failure that outlived the events client's own
|
|
74
|
+
# retries. Events are non-critical telemetry, so degrade gracefully
|
|
75
|
+
# instead of crashing the flow run.
|
|
69
76
|
self._logger.warning(
|
|
70
77
|
"Unable to connect to the events WebSocket (%s). "
|
|
71
|
-
"Event data will not be emitted for this runner
|
|
72
|
-
"Upgrade the Prefect client to >=3.6.14 to
|
|
73
|
-
"
|
|
78
|
+
"Event data will not be emitted for this runner; the flow run "
|
|
79
|
+
"will continue. Upgrade the Prefect client to >=3.6.14 to "
|
|
80
|
+
"restore event support if the server has authentication "
|
|
81
|
+
"configured.",
|
|
74
82
|
exc,
|
|
75
83
|
)
|
|
76
84
|
# __aenter__ failed, so __aexit__ must NOT be called on the original
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/deployments.py
RENAMED
|
@@ -311,7 +311,11 @@ async def update_deployment(
|
|
|
311
311
|
)
|
|
312
312
|
try:
|
|
313
313
|
deployment.check_valid_configuration(work_pool.base_job_template)
|
|
314
|
-
except (
|
|
314
|
+
except (
|
|
315
|
+
MissingVariableError,
|
|
316
|
+
jsonschema.exceptions.ValidationError,
|
|
317
|
+
ValidationError,
|
|
318
|
+
) as exc:
|
|
315
319
|
raise HTTPException(
|
|
316
320
|
status_code=status.HTTP_409_CONFLICT,
|
|
317
321
|
detail=f"Error creating deployment: {exc!r}",
|
|
@@ -10,6 +10,7 @@ import base64
|
|
|
10
10
|
import contextlib
|
|
11
11
|
import gc
|
|
12
12
|
import hmac
|
|
13
|
+
import importlib.metadata
|
|
13
14
|
import logging
|
|
14
15
|
import mimetypes
|
|
15
16
|
import os
|
|
@@ -41,6 +42,7 @@ from fastapi.middleware.gzip import GZipMiddleware
|
|
|
41
42
|
from fastapi.openapi.utils import get_openapi
|
|
42
43
|
from fastapi.responses import JSONResponse, RedirectResponse
|
|
43
44
|
from fastapi.staticfiles import StaticFiles
|
|
45
|
+
from packaging.version import Version
|
|
44
46
|
from starlette.exceptions import HTTPException
|
|
45
47
|
from typing_extensions import Self
|
|
46
48
|
|
|
@@ -73,6 +75,12 @@ from prefect.utilities.hashing import hash_objects
|
|
|
73
75
|
|
|
74
76
|
logfire: Any | None = configure_logfire()
|
|
75
77
|
|
|
78
|
+
# FastAPI < 0.137 copies routes when including a router; 0.137+ keeps a
|
|
79
|
+
# reference to the original via _IncludedRouter.
|
|
80
|
+
_FASTAPI_COPIES_ROUTES_ON_INCLUDE: bool = Version(
|
|
81
|
+
importlib.metadata.version("fastapi")
|
|
82
|
+
) < Version("0.137.0")
|
|
83
|
+
|
|
76
84
|
TITLE = "Prefect Server"
|
|
77
85
|
API_TITLE = "Prefect REST API"
|
|
78
86
|
UI_TITLE = "Prefect REST API UI"
|
|
@@ -491,21 +499,16 @@ def create_api_app(
|
|
|
491
499
|
|
|
492
500
|
for router in API_ROUTERS:
|
|
493
501
|
api_app.include_router(router, dependencies=dependencies)
|
|
494
|
-
if final:
|
|
495
|
-
#
|
|
496
|
-
#
|
|
497
|
-
#
|
|
498
|
-
#
|
|
499
|
-
# router. This is because the dependencies may change if the same router is
|
|
500
|
-
# included multiple times, but it also means that we are holding onto an
|
|
501
|
-
# entire set of Pydantic models on the original routers for the duration of
|
|
502
|
-
# the server process that will never be used.
|
|
502
|
+
if final and _FASTAPI_COPIES_ROUTES_ON_INCLUDE:
|
|
503
|
+
# When including a router, older versions of FastAPI (< 0.137) copy
|
|
504
|
+
# the routes and build entirely new Pydantic models. Since Prefect
|
|
505
|
+
# does not reuse routers, we can delete the originals to reclaim
|
|
506
|
+
# ~50-55 MB of memory.
|
|
503
507
|
#
|
|
504
|
-
#
|
|
505
|
-
#
|
|
506
|
-
#
|
|
507
|
-
#
|
|
508
|
-
# of introducing this change).
|
|
508
|
+
# FastAPI 0.137+ wraps included routers in an _IncludedRouter that
|
|
509
|
+
# references the original router for request matching, so the
|
|
510
|
+
# originals must be kept. The duplication no longer occurs in this
|
|
511
|
+
# case either, so the optimisation is unnecessary.
|
|
509
512
|
del router.routes
|
|
510
513
|
|
|
511
514
|
if final:
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/server/api/ui/schemas.py
RENAMED
|
@@ -10,6 +10,7 @@ from prefect.server.utilities.server import APIRouter
|
|
|
10
10
|
from prefect.utilities.schema_tools.hydration import HydrationContext, hydrate
|
|
11
11
|
from prefect.utilities.schema_tools.validation import (
|
|
12
12
|
CircularSchemaRefError,
|
|
13
|
+
ValidationError,
|
|
13
14
|
build_error_obj,
|
|
14
15
|
is_valid_schema,
|
|
15
16
|
preprocess_schema,
|
|
@@ -60,6 +61,11 @@ async def validate_obj(
|
|
|
60
61
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
61
62
|
detail="Invalid schema: Unable to validate schema with circular references.",
|
|
62
63
|
)
|
|
64
|
+
except ValidationError as exc:
|
|
65
|
+
raise HTTPException(
|
|
66
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
67
|
+
detail=f"Invalid schema: {exc}",
|
|
68
|
+
)
|
|
63
69
|
error_obj = build_error_obj(errors)
|
|
64
70
|
|
|
65
71
|
return error_obj
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/utilities/schema_tools/AGENTS.md
RENAMED
|
@@ -47,6 +47,7 @@ Handlers return `Placeholder` subclasses (e.g. `RemoveValue`, `InvalidJSON`, `In
|
|
|
47
47
|
|
|
48
48
|
- **Don't use `jinja` kind and expect a typed value** — it always returns a string. Use `json` + `jinja` + `| tojson` for type preservation.
|
|
49
49
|
- **Don't add server imports to this module** — it's used client-side too. `HydrationContext.build()` is an explicit exception (async, server-only); the rest of `hydration.py` must remain importable without a running server.
|
|
50
|
+
- **Don't call `jsonschema.validate()` without `registry=non_fetching_registry()`.** The default behavior fetches remote `$ref` URLs over the network (SSRF). Always pass `registry=non_fetching_registry()` from `prefect._internal.schemas._registry`; external refs raise `referencing.exceptions.Unresolvable` without any network request, while in-document `#/$defs/…` refs still resolve normally.
|
|
50
51
|
|
|
51
52
|
## Pitfalls
|
|
52
53
|
|
|
@@ -4,10 +4,12 @@ from copy import deepcopy
|
|
|
4
4
|
from typing import TYPE_CHECKING, Any, cast
|
|
5
5
|
|
|
6
6
|
import jsonschema
|
|
7
|
+
import referencing.exceptions
|
|
7
8
|
from jsonschema.exceptions import ValidationError as JSONSchemaValidationError
|
|
8
9
|
from jsonschema.validators import Draft202012Validator, create
|
|
9
10
|
from referencing.jsonschema import ObjectSchema, Schema
|
|
10
11
|
|
|
12
|
+
from prefect._internal.schemas._registry import non_fetching_registry
|
|
11
13
|
from prefect.utilities.collections import remove_nested_keys
|
|
12
14
|
from prefect.utilities.schema_tools.hydration import HydrationError, Placeholder
|
|
13
15
|
|
|
@@ -87,9 +89,13 @@ def validate(
|
|
|
87
89
|
|
|
88
90
|
if raise_on_error:
|
|
89
91
|
try:
|
|
90
|
-
jsonschema.validate(
|
|
92
|
+
jsonschema.validate(
|
|
93
|
+
obj, schema, _VALIDATOR, registry=non_fetching_registry()
|
|
94
|
+
)
|
|
91
95
|
except RecursionError:
|
|
92
96
|
raise CircularSchemaRefError
|
|
97
|
+
except referencing.exceptions.Unresolvable as exc:
|
|
98
|
+
raise ValidationError(f"Validation failed. Failure reason: {exc}") from exc
|
|
93
99
|
except JSONSchemaValidationError as exc:
|
|
94
100
|
if exc.json_path == "$":
|
|
95
101
|
error_message = "Validation failed."
|
|
@@ -102,10 +108,16 @@ def validate(
|
|
|
102
108
|
return []
|
|
103
109
|
else:
|
|
104
110
|
try:
|
|
105
|
-
validator = _VALIDATOR(
|
|
111
|
+
validator = _VALIDATOR(
|
|
112
|
+
schema,
|
|
113
|
+
format_checker=_VALIDATOR.FORMAT_CHECKER,
|
|
114
|
+
registry=non_fetching_registry(),
|
|
115
|
+
)
|
|
106
116
|
errors = list(validator.iter_errors(obj)) # type: ignore
|
|
107
117
|
except RecursionError:
|
|
108
118
|
raise CircularSchemaRefError
|
|
119
|
+
except referencing.exceptions.Unresolvable as exc:
|
|
120
|
+
raise ValidationError(f"Validation failed. Failure reason: {exc}") from exc
|
|
109
121
|
return errors
|
|
110
122
|
|
|
111
123
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/_launchers.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_experimental/sla/objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/client.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/device_id.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/emit.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/enabled.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/events.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/notice.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/analytics/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/api.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/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.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/control_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/installation.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/observability.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/apply.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/collections.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/diagnostics.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/plugins/startup.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/schemas.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/result_records.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/bases.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/fields.py
RENAMED
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/src/prefect/_internal/schemas/serializers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.5.dev2 → prefect_client-3.7.5.dev4}/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
|