prefect-client 3.7.6.dev3__tar.gz → 3.7.7__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.6.dev3 → prefect_client-3.7.7}/PKG-INFO +1 -1
- prefect_client-3.7.7/src/prefect/_build_info.py +5 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/steps/core.py +5 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/steps/pull.py +5 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/steps/utility.py +2 -2
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/flows.py +16 -13
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_workspace_resolver.py +40 -22
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/server.py +17 -2
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/workers.py +1 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/task_engine.py +4 -1
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/engine/__init__.py +45 -4
- prefect_client-3.7.6.dev3/src/prefect/_build_info.py +0 -5
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/.gitignore +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/LICENSE +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/README.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/hatch_build.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/pyproject.toml +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/__main__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/agent.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/automations.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/base.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/context.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/engine.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/related.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/futures.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/main.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/plugins.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/py.typed +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/results.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/schedules.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/serializers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/states.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/tasks.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/transactions.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/types/names.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/templating/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/variables.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/AGENTS.md +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/workers/utilities.py +0 -0
|
@@ -52,6 +52,11 @@ _STEP_COMPLETION_OBSERVER: ContextVar[_StepCompletionObserver | None] = ContextV
|
|
|
52
52
|
default=None,
|
|
53
53
|
)
|
|
54
54
|
|
|
55
|
+
_PULL_STEP_SOURCE_CWD: ContextVar[Path | None] = ContextVar(
|
|
56
|
+
"pull_step_source_cwd",
|
|
57
|
+
default=None,
|
|
58
|
+
)
|
|
59
|
+
|
|
55
60
|
|
|
56
61
|
class StepExecutionError(Exception):
|
|
57
62
|
"""
|
|
@@ -8,6 +8,7 @@ from typing import TYPE_CHECKING, Any, Optional
|
|
|
8
8
|
|
|
9
9
|
from prefect._internal.compatibility.async_dispatch import async_dispatch
|
|
10
10
|
from prefect._internal.retries import retry_async_fn
|
|
11
|
+
from prefect.deployments.steps.core import _PULL_STEP_SOURCE_CWD
|
|
11
12
|
from prefect.logging.loggers import get_logger
|
|
12
13
|
from prefect.runner.storage import BlockStorageAdapter, GitRepository, RemoteStorage
|
|
13
14
|
from prefect.utilities.asyncutils import run_coro_as_sync
|
|
@@ -32,6 +33,10 @@ def set_working_directory(directory: str) -> dict[str, str]:
|
|
|
32
33
|
dict: a dictionary containing a `directory` key of the
|
|
33
34
|
absolute path of the directory that was set
|
|
34
35
|
"""
|
|
36
|
+
source_cwd = _PULL_STEP_SOURCE_CWD.get()
|
|
37
|
+
if source_cwd is not None and not Path(directory).expanduser().is_absolute():
|
|
38
|
+
directory = str((source_cwd / directory).resolve())
|
|
39
|
+
|
|
35
40
|
os.chdir(directory)
|
|
36
41
|
return dict(directory=os.getcwd())
|
|
37
42
|
|
|
@@ -15,7 +15,7 @@ Example:
|
|
|
15
15
|
- prefect_docker.deployments.steps.build_docker_image:
|
|
16
16
|
requires: prefect-docker
|
|
17
17
|
image_name: my-image
|
|
18
|
-
|
|
18
|
+
tag: "{{ get-commit-hash.stdout }}"
|
|
19
19
|
dockerfile: auto
|
|
20
20
|
```
|
|
21
21
|
"""
|
|
@@ -153,7 +153,7 @@ async def run_shell_script(
|
|
|
153
153
|
- prefect_docker.deployments.steps.build_docker_image:
|
|
154
154
|
requires: prefect-docker
|
|
155
155
|
image_name: my-image
|
|
156
|
-
|
|
156
|
+
tag: "{{ get-commit-hash.stdout }}"
|
|
157
157
|
dockerfile: auto
|
|
158
158
|
```
|
|
159
159
|
|
|
@@ -3212,19 +3212,11 @@ async def load_flow_from_flow_run(
|
|
|
3212
3212
|
"PREFECT__STORAGE_BASE_PATH"
|
|
3213
3213
|
)
|
|
3214
3214
|
|
|
3215
|
-
#
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
f"Importing flow code from module path {deployment.entrypoint}"
|
|
3219
|
-
)
|
|
3220
|
-
flow = await run_sync_in_worker_thread(
|
|
3221
|
-
load_flow_from_entrypoint,
|
|
3222
|
-
deployment.entrypoint,
|
|
3223
|
-
use_placeholder_flow=use_placeholder_flow,
|
|
3224
|
-
)
|
|
3225
|
-
return flow
|
|
3215
|
+
# Module-path entrypoints (no colon) rely on pull steps to place the code on
|
|
3216
|
+
# sys.path, so the import must run *after* pull steps — not before.
|
|
3217
|
+
is_module_path = ":" not in deployment.entrypoint
|
|
3226
3218
|
|
|
3227
|
-
if not ignore_storage and not deployment.pull_steps:
|
|
3219
|
+
if not is_module_path and not ignore_storage and not deployment.pull_steps:
|
|
3228
3220
|
sys.path.insert(0, ".")
|
|
3229
3221
|
if deployment.storage_document_id:
|
|
3230
3222
|
storage_document = await client.read_block_document(
|
|
@@ -3249,7 +3241,7 @@ async def load_flow_from_flow_run(
|
|
|
3249
3241
|
run_logger.info(f"Downloading flow code from storage at {from_path!r}")
|
|
3250
3242
|
await storage_block.get_directory(from_path=from_path, local_path=".")
|
|
3251
3243
|
|
|
3252
|
-
if deployment.pull_steps:
|
|
3244
|
+
if not ignore_storage and deployment.pull_steps:
|
|
3253
3245
|
run_logger.info(f"Running {len(deployment.pull_steps)} deployment pull step(s)")
|
|
3254
3246
|
|
|
3255
3247
|
from prefect.deployments.steps.core import StepExecutionError, run_steps
|
|
@@ -3271,6 +3263,17 @@ async def load_flow_from_flow_run(
|
|
|
3271
3263
|
run_logger.debug(f"Changing working directory to {output['directory']!r}")
|
|
3272
3264
|
os.chdir(output["directory"])
|
|
3273
3265
|
|
|
3266
|
+
if is_module_path:
|
|
3267
|
+
run_logger.debug(
|
|
3268
|
+
f"Importing flow code from module path {deployment.entrypoint}"
|
|
3269
|
+
)
|
|
3270
|
+
flow = await run_sync_in_worker_thread(
|
|
3271
|
+
load_flow_from_entrypoint,
|
|
3272
|
+
deployment.entrypoint,
|
|
3273
|
+
use_placeholder_flow=use_placeholder_flow,
|
|
3274
|
+
)
|
|
3275
|
+
return flow
|
|
3276
|
+
|
|
3274
3277
|
import_path = relative_path_to_current_platform(deployment.entrypoint)
|
|
3275
3278
|
run_logger.debug(f"Importing flow code from '{import_path}'")
|
|
3276
3279
|
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/runner/_workspace_resolver.py
RENAMED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
|
-
import builtins
|
|
5
4
|
import contextlib
|
|
6
5
|
import os
|
|
7
6
|
import sys
|
|
@@ -14,9 +13,14 @@ import anyio
|
|
|
14
13
|
from pydantic import BaseModel
|
|
15
14
|
|
|
16
15
|
from prefect.client.orchestration import get_client
|
|
17
|
-
from prefect.deployments.steps.core import
|
|
16
|
+
from prefect.deployments.steps.core import (
|
|
17
|
+
_PULL_STEP_SOURCE_CWD,
|
|
18
|
+
_observe_step_completion,
|
|
19
|
+
run_steps,
|
|
20
|
+
)
|
|
18
21
|
from prefect.filesystems import LocalFileSystem
|
|
19
|
-
from prefect.logging.
|
|
22
|
+
from prefect.logging.handlers import APILogHandler
|
|
23
|
+
from prefect.logging.loggers import PrefectLogAdapter, flow_run_logger
|
|
20
24
|
from prefect.utilities.filesystem import relative_path_to_current_platform
|
|
21
25
|
from prefect.utilities.processutils import get_sys_executable
|
|
22
26
|
|
|
@@ -25,7 +29,6 @@ if TYPE_CHECKING:
|
|
|
25
29
|
from prefect.client.schemas.objects import FlowRun
|
|
26
30
|
from prefect.client.schemas.responses import DeploymentResponse
|
|
27
31
|
|
|
28
|
-
LOGGER = get_logger("prefect.runner.workspace_resolver")
|
|
29
32
|
STORAGE_BASE_PATH_PLACEHOLDER = "$STORAGE_BASE_PATH"
|
|
30
33
|
|
|
31
34
|
|
|
@@ -63,11 +66,6 @@ def get_workspace_resolver_command(
|
|
|
63
66
|
]
|
|
64
67
|
|
|
65
68
|
|
|
66
|
-
def _stderr_print(*args: Any, **kwargs: Any) -> None:
|
|
67
|
-
kwargs.pop("style", None)
|
|
68
|
-
builtins.print(*args, file=sys.stderr, **kwargs)
|
|
69
|
-
|
|
70
|
-
|
|
71
69
|
def _resolve_runtime_entrypoint(entrypoint: str) -> str:
|
|
72
70
|
if ":" not in entrypoint:
|
|
73
71
|
return entrypoint
|
|
@@ -207,6 +205,7 @@ async def _ensure_entrypoint_in_workspace(
|
|
|
207
205
|
workspace_root: Path,
|
|
208
206
|
source_cwd: Path,
|
|
209
207
|
storage_base_path: Path | None,
|
|
208
|
+
logger: PrefectLogAdapter,
|
|
210
209
|
) -> Path:
|
|
211
210
|
if _has_entrypoint_file(deployment.entrypoint, workspace_root):
|
|
212
211
|
return workspace_root
|
|
@@ -225,6 +224,7 @@ async def _ensure_entrypoint_in_workspace(
|
|
|
225
224
|
workspace_root,
|
|
226
225
|
source_cwd,
|
|
227
226
|
storage_base_path,
|
|
227
|
+
logger,
|
|
228
228
|
)
|
|
229
229
|
return workspace_root
|
|
230
230
|
|
|
@@ -255,6 +255,7 @@ async def _pull_storage_into_workspace(
|
|
|
255
255
|
workspace_root: Path,
|
|
256
256
|
source_cwd: Path,
|
|
257
257
|
storage_base_path: Path | None,
|
|
258
|
+
logger: PrefectLogAdapter,
|
|
258
259
|
) -> Path:
|
|
259
260
|
local_path = _workspace_destination_for_deployment_path(
|
|
260
261
|
deployment.path, workspace_root, storage_base_path
|
|
@@ -281,7 +282,7 @@ async def _pull_storage_into_workspace(
|
|
|
281
282
|
)
|
|
282
283
|
storage_block = LocalFileSystem(basepath=from_path)
|
|
283
284
|
|
|
284
|
-
|
|
285
|
+
logger.info("Downloading flow code from storage at %r", from_path)
|
|
285
286
|
await storage_block.get_directory(from_path=from_path, local_path=str(local_path))
|
|
286
287
|
return local_path
|
|
287
288
|
|
|
@@ -297,6 +298,8 @@ async def prepare_workspace(
|
|
|
297
298
|
f"Deployment {deployment.id} does not have an entrypoint and can not be run."
|
|
298
299
|
)
|
|
299
300
|
|
|
301
|
+
run_logger = flow_run_logger(flow_run)
|
|
302
|
+
|
|
300
303
|
source_cwd = Path.cwd().resolve()
|
|
301
304
|
storage_base_path = _get_configured_storage_base_path()
|
|
302
305
|
resolved_workspace_root = Path(workspace_root).expanduser().resolve()
|
|
@@ -310,6 +313,7 @@ async def prepare_workspace(
|
|
|
310
313
|
resolved_workspace_root,
|
|
311
314
|
source_cwd,
|
|
312
315
|
storage_base_path,
|
|
316
|
+
run_logger,
|
|
313
317
|
)
|
|
314
318
|
local_runtime_directory = _resolve_local_runtime_directory(
|
|
315
319
|
deployment.path, source_cwd, storage_base_path
|
|
@@ -322,7 +326,9 @@ async def prepare_workspace(
|
|
|
322
326
|
working_directory = resolved_workspace_root
|
|
323
327
|
step_selected_working_directory = False
|
|
324
328
|
os.chdir(resolved_workspace_root)
|
|
325
|
-
|
|
329
|
+
run_logger.info(
|
|
330
|
+
"Running %s deployment pull step(s)", len(deployment.pull_steps)
|
|
331
|
+
)
|
|
326
332
|
|
|
327
333
|
def _track_step_workspace(
|
|
328
334
|
_step: dict[str, Any],
|
|
@@ -339,20 +345,29 @@ async def prepare_workspace(
|
|
|
339
345
|
if resolved_directory is not None:
|
|
340
346
|
step_selected_working_directory = True
|
|
341
347
|
working_directory = resolved_directory
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
if step_end_cwd is not None and step_end_cwd != step_start_cwd:
|
|
348
|
+
elif step_end_cwd is not None and step_end_cwd != step_start_cwd:
|
|
345
349
|
step_selected_working_directory = True
|
|
346
350
|
working_directory = step_end_cwd
|
|
347
351
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
352
|
+
# Clear source CWD after every step so the fallback only applies
|
|
353
|
+
# to the first pull step (the baked-image case). Steps that run
|
|
354
|
+
# before set_working_directory (e.g. run_shell_script) create
|
|
355
|
+
# workspace-relative content, so subsequent relative paths must
|
|
356
|
+
# resolve against the current CWD, not the original process CWD.
|
|
357
|
+
_PULL_STEP_SOURCE_CWD.set(None)
|
|
358
|
+
|
|
359
|
+
source_cwd_token = _PULL_STEP_SOURCE_CWD.set(source_cwd)
|
|
360
|
+
try:
|
|
361
|
+
with _observe_step_completion(_track_step_workspace):
|
|
362
|
+
await run_steps(
|
|
363
|
+
deployment.pull_steps,
|
|
364
|
+
print_function=run_logger.warning,
|
|
365
|
+
deployment=deployment,
|
|
366
|
+
flow_run=flow_run,
|
|
367
|
+
logger=run_logger,
|
|
368
|
+
)
|
|
369
|
+
finally:
|
|
370
|
+
_PULL_STEP_SOURCE_CWD.reset(source_cwd_token)
|
|
356
371
|
|
|
357
372
|
if not step_selected_working_directory:
|
|
358
373
|
working_directory = await _ensure_entrypoint_in_workspace(
|
|
@@ -361,6 +376,7 @@ async def prepare_workspace(
|
|
|
361
376
|
resolved_workspace_root,
|
|
362
377
|
source_cwd,
|
|
363
378
|
storage_base_path,
|
|
379
|
+
run_logger,
|
|
364
380
|
)
|
|
365
381
|
|
|
366
382
|
os.chdir(working_directory)
|
|
@@ -423,6 +439,8 @@ async def _main_async(argv: list[str] | None = None) -> int:
|
|
|
423
439
|
sys.stdout.write(result.model_dump_json())
|
|
424
440
|
sys.stdout.write("\n")
|
|
425
441
|
return 1
|
|
442
|
+
finally:
|
|
443
|
+
await APILogHandler.aflush()
|
|
426
444
|
|
|
427
445
|
result = PreparedWorkspaceResult(status="success", workspace=workspace)
|
|
428
446
|
sys.stdout.write(result.model_dump_json())
|
|
@@ -52,6 +52,7 @@ import prefect.settings
|
|
|
52
52
|
from prefect._internal.compatibility.starlette import status
|
|
53
53
|
from prefect._internal.observability import configure_logfire
|
|
54
54
|
from prefect.client.constants import SERVER_API_VERSION
|
|
55
|
+
from prefect.locking._filelock import FileLock
|
|
55
56
|
from prefect.logging import get_logger
|
|
56
57
|
from prefect.server.api._ui_static import UIBundle, UIVersion, log_ui_static_copy_error
|
|
57
58
|
from prefect.server.api.background_workers import background_worker
|
|
@@ -691,7 +692,9 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
691
692
|
if scope_path.endswith(path) and path != "/"
|
|
692
693
|
else request.scope.get("root_path", "")
|
|
693
694
|
)
|
|
694
|
-
redirect_url =
|
|
695
|
+
redirect_url = f"{scope_prefix}{redirect_path}"
|
|
696
|
+
if request.url.query:
|
|
697
|
+
redirect_url = f"{redirect_url}?{request.url.query}"
|
|
695
698
|
return RedirectResponse(
|
|
696
699
|
url=redirect_url,
|
|
697
700
|
status_code=status.HTTP_307_TEMPORARY_REDIRECT,
|
|
@@ -739,8 +742,20 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
739
742
|
continue
|
|
740
743
|
|
|
741
744
|
if not reference_file_matches_cache_key(bundle):
|
|
745
|
+
lock_path = os.path.join(
|
|
746
|
+
os.path.dirname(bundle.static_dir),
|
|
747
|
+
f".{bundle.version}_ui_static.lock",
|
|
748
|
+
)
|
|
749
|
+
lock = FileLock(lock_path, timeout=90)
|
|
742
750
|
try:
|
|
743
|
-
|
|
751
|
+
lock.acquire()
|
|
752
|
+
try:
|
|
753
|
+
# Re-check after acquiring the lock; another worker
|
|
754
|
+
# may have completed the copy while we waited.
|
|
755
|
+
if not reference_file_matches_cache_key(bundle):
|
|
756
|
+
create_ui_static_subpath(bundle)
|
|
757
|
+
finally:
|
|
758
|
+
lock.release()
|
|
744
759
|
except OSError as exc:
|
|
745
760
|
log_ui_static_copy_error(bundle, exc, logger)
|
|
746
761
|
continue
|
|
@@ -1148,6 +1148,7 @@ async def worker_channel_connect(
|
|
|
1148
1148
|
work_pool_id=ready.payload.initial_snapshot.work_pool.id,
|
|
1149
1149
|
consumer_id=hello.payload.consumer_id,
|
|
1150
1150
|
worker_name=hello.payload.worker_name,
|
|
1151
|
+
work_pool_updated=ready.payload.initial_snapshot.work_pool.updated,
|
|
1151
1152
|
cleanup_queue=(
|
|
1152
1153
|
cleanup_queue
|
|
1153
1154
|
if CLEANUP_DELIVERY_CAPABILITY
|
|
@@ -299,6 +299,8 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
|
299
299
|
def _resolve_parameters(self):
|
|
300
300
|
if not self.parameters:
|
|
301
301
|
return None
|
|
302
|
+
if getattr(self, "_parameters_resolved", False):
|
|
303
|
+
return None
|
|
302
304
|
|
|
303
305
|
resolved_parameters = {}
|
|
304
306
|
for parameter, value in self.parameters.items():
|
|
@@ -311,7 +313,7 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
|
311
313
|
remove_annotations=True,
|
|
312
314
|
context={"parameter_name": parameter},
|
|
313
315
|
)
|
|
314
|
-
except UpstreamTaskError:
|
|
316
|
+
except (UpstreamTaskError, PrefectException):
|
|
315
317
|
raise
|
|
316
318
|
except Exception as exc:
|
|
317
319
|
raise PrefectException(
|
|
@@ -322,6 +324,7 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
|
322
324
|
) from exc
|
|
323
325
|
|
|
324
326
|
self.parameters = resolved_parameters
|
|
327
|
+
self._parameters_resolved = True
|
|
325
328
|
|
|
326
329
|
def _set_custom_task_run_name(self):
|
|
327
330
|
from prefect._internal.engine import resolve_custom_task_run_name
|
|
@@ -28,6 +28,7 @@ import prefect.exceptions
|
|
|
28
28
|
from prefect._internal.concurrency.cancellation import get_deadline
|
|
29
29
|
from prefect.client.schemas import FlowRunResult, OrchestrationResult, TaskRun
|
|
30
30
|
from prefect.client.schemas.objects import (
|
|
31
|
+
FlowRun,
|
|
31
32
|
RunType,
|
|
32
33
|
TaskRunResult,
|
|
33
34
|
)
|
|
@@ -52,7 +53,7 @@ from prefect.results import ResultRecord, should_persist_result
|
|
|
52
53
|
from prefect.settings import PREFECT_LOGGING_LOG_PRINTS
|
|
53
54
|
from prefect.states import State
|
|
54
55
|
from prefect.tasks import Task
|
|
55
|
-
from prefect.utilities.annotations import allow_failure, quote
|
|
56
|
+
from prefect.utilities.annotations import allow_failure, opaque, quote
|
|
56
57
|
from prefect.utilities.collections import StopVisiting, visit_collection
|
|
57
58
|
from prefect.utilities.text import truncated_to
|
|
58
59
|
|
|
@@ -61,7 +62,34 @@ if TYPE_CHECKING:
|
|
|
61
62
|
|
|
62
63
|
API_HEALTHCHECKS: dict[str, float] = {}
|
|
63
64
|
UNTRACKABLE_TYPES: set[type[Any]] = {bool, type(None), type(...), type(NotImplemented)}
|
|
65
|
+
_RUN_SCHEMA_TYPES: tuple[type[Any], ...] = (FlowRun, TaskRun)
|
|
64
66
|
engine_logger: Logger = get_logger("engine")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _raise_on_run_schema_unless_opaque(obj: Any, context: dict[str, Any]) -> None:
|
|
70
|
+
"""Raise a clear error when a Prefect run schema object is passed as a
|
|
71
|
+
task argument without the `opaque` annotation.
|
|
72
|
+
|
|
73
|
+
These Pydantic models contain a `.state` attribute that
|
|
74
|
+
`visit_collection` would recurse into, causing the embedded state
|
|
75
|
+
to be mistakenly treated as an upstream task dependency.
|
|
76
|
+
"""
|
|
77
|
+
if isinstance(obj, _RUN_SCHEMA_TYPES) and not isinstance(
|
|
78
|
+
context.get("annotation"), opaque
|
|
79
|
+
):
|
|
80
|
+
type_name = type(obj).__name__
|
|
81
|
+
lower = type_name[0].lower() + type_name[1:]
|
|
82
|
+
raise PrefectException(
|
|
83
|
+
f"Passing a `{type_name}` object as a task argument is not supported."
|
|
84
|
+
" Prefect inspects task arguments for upstream `State` and"
|
|
85
|
+
" `PrefectFuture` dependencies, which causes the embedded"
|
|
86
|
+
f" `{type_name}.state` attribute to be mistakenly treated as an"
|
|
87
|
+
" upstream task dependency. Pass individual fields instead"
|
|
88
|
+
f" (e.g. `{lower}.id`) or wrap the object with"
|
|
89
|
+
f" `opaque({lower})` to skip dependency traversal."
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
|
|
65
93
|
T = TypeVar("T")
|
|
66
94
|
_prefect_sigterm_handler_depth = 0
|
|
67
95
|
_prefect_sigterm_bridge_lock = threading.RLock()
|
|
@@ -379,6 +407,8 @@ async def resolve_inputs(
|
|
|
379
407
|
if isinstance(context.get("annotation"), quote):
|
|
380
408
|
raise StopVisiting()
|
|
381
409
|
|
|
410
|
+
_raise_on_run_schema_unless_opaque(expr, context)
|
|
411
|
+
|
|
382
412
|
if isinstance(expr, PrefectFuture):
|
|
383
413
|
fut: PrefectFuture[Any] = expr
|
|
384
414
|
futures.add(fut)
|
|
@@ -415,6 +445,8 @@ async def resolve_inputs(
|
|
|
415
445
|
if isinstance(context.get("annotation"), quote):
|
|
416
446
|
raise StopVisiting()
|
|
417
447
|
|
|
448
|
+
_raise_on_run_schema_unless_opaque(expr, context)
|
|
449
|
+
|
|
418
450
|
if isinstance(expr, PrefectFuture):
|
|
419
451
|
state = expr.state
|
|
420
452
|
elif isinstance(expr, State):
|
|
@@ -446,7 +478,9 @@ async def resolve_inputs(
|
|
|
446
478
|
):
|
|
447
479
|
return state.data
|
|
448
480
|
|
|
449
|
-
|
|
481
|
+
resolved = result_by_state.get(state)
|
|
482
|
+
_raise_on_run_schema_unless_opaque(resolved, context)
|
|
483
|
+
return resolved
|
|
450
484
|
|
|
451
485
|
resolved_parameters: dict[str, Any] = {}
|
|
452
486
|
for parameter, value in parameters.items():
|
|
@@ -460,7 +494,7 @@ async def resolve_inputs(
|
|
|
460
494
|
remove_annotations=True,
|
|
461
495
|
context={},
|
|
462
496
|
)
|
|
463
|
-
except UpstreamTaskError:
|
|
497
|
+
except (UpstreamTaskError, PrefectException):
|
|
464
498
|
raise
|
|
465
499
|
except Exception as exc:
|
|
466
500
|
raise PrefectException(
|
|
@@ -951,6 +985,8 @@ def resolve_to_final_result(expr: Any, context: dict[str, Any]) -> Any:
|
|
|
951
985
|
if isinstance(context.get("annotation"), quote):
|
|
952
986
|
raise StopVisiting()
|
|
953
987
|
|
|
988
|
+
_raise_on_run_schema_unless_opaque(expr, context)
|
|
989
|
+
|
|
954
990
|
if isinstance(expr, PrefectFuture):
|
|
955
991
|
upstream_task_run: Optional[TaskRun] = context.get("current_task_run")
|
|
956
992
|
upstream_task: Optional["Task[..., Any]"] = context.get("current_task")
|
|
@@ -996,6 +1032,11 @@ def resolve_to_final_result(expr: Any, context: dict[str, Any]) -> Any:
|
|
|
996
1032
|
|
|
997
1033
|
result: Any = state.result(raise_on_failure=False, _sync=True) # pyright: ignore[reportCallIssue] _sync messes up type inference and can be removed once async_dispatch is removed
|
|
998
1034
|
|
|
1035
|
+
# Check the resolved result: if a task returned a FlowRun/TaskRun, the
|
|
1036
|
+
# caller (visit_collection) would recurse into its Pydantic fields and
|
|
1037
|
+
# misinterpret the embedded .state as an upstream dependency.
|
|
1038
|
+
_raise_on_run_schema_unless_opaque(result, context)
|
|
1039
|
+
|
|
999
1040
|
if state.state_details.traceparent:
|
|
1000
1041
|
parameter_context = propagate.extract(
|
|
1001
1042
|
{"traceparent": state.state_details.traceparent}
|
|
@@ -1046,7 +1087,7 @@ def resolve_inputs_sync(
|
|
|
1046
1087
|
remove_annotations=True,
|
|
1047
1088
|
context={"parameter_name": parameter},
|
|
1048
1089
|
)
|
|
1049
|
-
except UpstreamTaskError:
|
|
1090
|
+
except (UpstreamTaskError, PrefectException):
|
|
1050
1091
|
raise
|
|
1051
1092
|
except Exception as exc:
|
|
1052
1093
|
raise PrefectException(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/bundles/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/apply.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/diagnostics.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/manager.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/plugins/spec.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/ci_detection.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/client.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/device_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/enabled.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/events.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/milestones.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/notice.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/analytics/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/backports.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/blocks.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/deprecated.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/migration.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/compatibility/starlette.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/calls.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/cancellation.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/event_loop.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/inspection.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/primitives.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/services.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.7.6.dev3 → prefect_client-3.7.7}/src/prefect/_internal/control_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|