prefect-client 3.6.30.dev4__tar.gz → 3.7.1__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.6.30.dev4 → prefect_client-3.7.1}/PKG-INFO +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/AGENTS.md +4 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/__init__.py +4 -5
- prefect_client-3.7.1/src/prefect/_build_info.py +5 -0
- prefect_client-3.7.1/src/prefect/_experimental/_launchers.py +31 -0
- prefect_client-3.7.1/src/prefect/_experimental/bundles/__init__.py +68 -0
- prefect_client-3.7.1/src/prefect/_experimental/bundles/execute.py +46 -0
- prefect_client-3.7.1/src/prefect/_experimental/plugins/__init__.py +16 -0
- prefect_client-3.7.1/src/prefect/_experimental/plugins/apply.py +5 -0
- prefect_client-3.7.1/src/prefect/_experimental/plugins/diagnostics.py +7 -0
- prefect_client-3.7.1/src/prefect/_experimental/plugins/manager.py +7 -0
- prefect_client-3.7.1/src/prefect/_experimental/plugins/spec.py +7 -0
- prefect_client-3.7.1/src/prefect/_flow_run_suspension.py +136 -0
- prefect_client-3.7.1/src/prefect/_internal/compatibility/deprecated_paths.py +60 -0
- prefect_client-3.6.30.dev4/src/prefect/_experimental/_launchers.py → prefect_client-3.7.1/src/prefect/_internal/launchers.py +1 -1
- prefect_client-3.7.1/src/prefect/_internal/observers.py +494 -0
- prefect_client-3.7.1/src/prefect/_internal/plugins/__init__.py +7 -0
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/apply.py +1 -1
- prefect_client-3.6.30.dev4/src/prefect/plugins.py → prefect_client-3.7.1/src/prefect/_internal/plugins/collections.py +5 -5
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/diagnostics.py +1 -1
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/manager.py +5 -2
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect/_internal}/plugins/spec.py +7 -3
- prefect_client-3.6.30.dev4/src/prefect/_experimental/plugins/__init__.py → prefect_client-3.7.1/src/prefect/_internal/plugins/startup.py +16 -29
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/core.py +21 -3
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/__init__.py +18 -3
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_file_collector.py +2 -2
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/execute.py +6 -5
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/AGENTS.md +2 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/__init__.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/actions.py +2 -2
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/objects.py +1 -1
- prefect_client-3.7.1/src/prefect/client/schemas/worker_channel.py +590 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/AGENTS.md +2 -2
- prefect_client-3.7.1/src/prefect/concurrency/_leases.py +230 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/context.py +9 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/base.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/flow_runs.py +3 -3
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/runner.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/docker/__init__.py +1 -1
- prefect_client-3.7.1/src/prefect/docker/_buildx.py +18 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/docker/docker_image.py +2 -2
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/engine.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/AGENTS.md +2 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/clients.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/flow_engine.py +150 -51
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/flow_runs.py +5 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/flows.py +9 -26
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/futures.py +22 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/AGENTS.md +1 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/clients.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/loggers.py +12 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/main.py +1 -1
- prefect_client-3.7.1/src/prefect/plugins.py +76 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/results.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/AGENTS.md +3 -3
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_cancellation_manager.py +21 -10
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_deployment_registry.py +10 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_flow_run_executor.py +2 -2
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_hook_runner.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_scheduled_run_poller.py +4 -7
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_starter_bundle.py +3 -3
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_starter_direct.py +5 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_starter_engine.py +8 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_workspace_starter.py +3 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/runner.py +49 -22
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_documents.py +9 -3
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/flow_runs.py +27 -15
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/server.py +7 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/AGENTS.md +1 -0
- prefect_client-3.7.1/src/prefect/settings/models/experiments.py +88 -0
- prefect_client-3.7.1/src/prefect/settings/models/plugins.py +191 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/root.py +58 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/states.py +3 -3
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_engine.py +15 -4
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_runners.py +3 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/tasks.py +9 -2
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/transactions.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/_datetime.py +30 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/AGENTS.md +0 -8
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/engine/AGENTS.md +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/processutils/AGENTS.md +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/processutils/__init__.py +12 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/pydantic.py +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/AGENTS.md +1 -1
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/templating/AGENTS.md +1 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/AGENTS.md +6 -0
- prefect_client-3.7.1/src/prefect/workers/_cleanup.py +660 -0
- prefect_client-3.7.1/src/prefect/workers/_cleanup_handlers.py +142 -0
- prefect_client-3.7.1/src/prefect/workers/_worker_channel/__init__.py +27 -0
- prefect_client-3.7.1/src/prefect/workers/_worker_channel/_protocol.py +399 -0
- prefect_client-3.7.1/src/prefect/workers/_worker_channel/_state.py +187 -0
- prefect_client-3.7.1/src/prefect/workers/_worker_channel/_sync.py +360 -0
- prefect_client-3.7.1/src/prefect/workers/_worker_channel/_transport.py +250 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/base.py +186 -175
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/process.py +1 -1
- prefect_client-3.6.30.dev4/src/prefect/_build_info.py +0 -5
- prefect_client-3.6.30.dev4/src/prefect/_observers.py +0 -245
- prefect_client-3.6.30.dev4/src/prefect/concurrency/_leases.py +0 -190
- prefect_client-3.6.30.dev4/src/prefect/settings/models/experiments.py +0 -77
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/.gitignore +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/LICENSE +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/README.md +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/hatch_build.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/pyproject.toml +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/__main__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/analytics/service.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/utilities/_ast.py → /prefect_client-3.7.1/src/prefect/_internal/ast_utils.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/docker/_buildx.py → /prefect_client-3.7.1/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/control_listener.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/utilities/_deprecated.py → /prefect_client-3.7.1/src/prefect/_internal/deprecated.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/utilities/_engine.py → /prefect_client-3.7.1/src/prefect/_internal/engine.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/utilities/_git.py → /prefect_client-3.7.1/src/prefect/_internal/git.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/utilities/_infrastructure_exit_codes.py → /prefect_client-3.7.1/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/lazy.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/telemetry/_metrics.py → /prefect_client-3.7.1/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/pytz.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/_result_records.py → /prefect_client-3.7.1/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/retries.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/types/_schema.py → /prefect_client-3.7.1/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/_states.py → /prefect_client-3.7.1/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/uuid7.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/client/_version_checking.py → /prefect_client-3.7.1/src/prefect/_internal/version_checking.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/_versioning.py → /prefect_client-3.7.1/src/prefect/_internal/versioning.py +0 -0
- /prefect_client-3.6.30.dev4/src/prefect/_waiters.py → /prefect_client-3.7.1/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/agent.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/automations.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_path_resolver.py +0 -0
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_zip_builder.py +0 -0
- {prefect_client-3.6.30.dev4/src/prefect/_experimental → prefect_client-3.7.1/src/prefect}/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/base.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/related.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/py.typed +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/schedules.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/serializers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/types/names.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/filesystem/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/templating/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/variables.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.6.30.dev4 → prefect_client-3.7.1}/src/prefect/workers/utilities.py +0 -0
|
@@ -23,7 +23,7 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
|
|
|
23
23
|
- **Engine ordering matters.** The engines apply features (retries, caching, result persistence, transactions) in a specific order. Changing the order or forgetting a feature in one engine path is the most common source of breakage.
|
|
24
24
|
- **Set run metadata before state transitions.** Any run attribute that event subscribers observe at the moment of a state transition (e.g., custom `flow_run_name`) must be persisted to the server *before* `set_state()` is called for that transition. Metadata set after the call appears stale to subscribers of that state event.
|
|
25
25
|
- **Sync and async must stay in sync.** Both `flow_engine.py` and `task_engine.py` have sync and async paths. Any behavior change must be applied to both.
|
|
26
|
-
- **Use `whenever` compat helpers for all datetime conversions on Python 3.13+.** `types/_datetime.py` provides `now()`, `_whenever_to_stdlib()`, `_whenever_zdt_from_py()`, and `_whenever_pdt_from_py()` to abstract over API differences between whenever 0.7.x–0.9.x and ≥ 0.10.0. The `_WHENEVER_NEW_API` flag (True when whenever ≥ 0.10.0) guards version-specific code. Never call `DateTime.now()` or `pendulum.now()` directly — use `now()` from `types/_datetime.py` instead. Never call `ZonedDateTime.from_py_datetime()`, `PlainDateTime.from_py_datetime()`, or `.py_datetime()` directly — use the helpers instead. Violations will silently break on whichever whenever version the helpers weren't written for.
|
|
26
|
+
- **Use `whenever` compat helpers for all datetime conversions on Python 3.13+.** `types/_datetime.py` provides `now()`, `_whenever_to_stdlib()`, `_whenever_zdt_from_py()`, and `_whenever_pdt_from_py()` to abstract over API differences between whenever 0.7.x–0.9.x and ≥ 0.10.0. The `_WHENEVER_NEW_API` flag (True when whenever ≥ 0.10.0) guards version-specific code. Never call `DateTime.now()` or `pendulum.now()` directly — use `now()` from `types/_datetime.py` instead. Avoid no-argument `datetime.datetime.now()` because it returns a tz-naive datetime that raises `TypeError` when compared to the tz-aware datetimes produced by `now()`. Explicitly timezone-aware stdlib calls such as `datetime.now(ZoneInfo("UTC"))` are allowed when needed to preserve timezone information. Never call `ZonedDateTime.from_py_datetime()`, `PlainDateTime.from_py_datetime()`, or `.py_datetime()` directly — use the helpers instead. Violations will silently break on whichever whenever version the helpers weren't written for.
|
|
27
27
|
- **Flow and task engines advance state differently.** The flow engine makes blocking API calls to the server to propose and advance states. The task engine emits `prefect.task_run.*` events (delivered via WebSockets) but advances state locally through `set_state` calls with polling/backoff — do not assume the two engines work the same way.
|
|
28
28
|
- **Flow state transitions go through the server.** The flow engine proposes states to the server, which accepts or rejects them via orchestration rules. The task engine, by contrast, manages state transitions locally via `set_state` and emits `prefect.task_run.*` events — it does not propose states to the server.
|
|
29
29
|
- **`ProcessPoolTaskRunner` requires picklable data across subprocess boundaries.** `PrefectFuture` objects are not picklable and cannot be passed to worker subprocesses. Any `wait_for` futures must be waited on in the parent process and converted to `State` objects before submission. The subprocess task engine handles `State` objects via `resolve_to_final_result`, which raises `UpstreamTaskError` for non-completed upstreams.
|
|
@@ -31,6 +31,7 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
|
|
|
31
31
|
- **`ThreadPoolTaskRunner` is cloudpickled when a flow run is dispatched to a subprocess.** `threading.Lock` and other non-picklable thread primitives must be dropped in `__getstate__` and rebuilt in `__setstate__`. Any new instance state added to this class must be evaluated for picklability.
|
|
32
32
|
- **Nested task submissions on a bounded `ThreadPoolTaskRunner` can deadlock.** When a worker task submits children and blocks on `.result()` while all `max_workers` threads are busy, the pool starves. `_warn_if_nested_submit_would_deadlock` detects this and emits a one-time warning — preserve this detection when changing pool management.
|
|
33
33
|
- **`ResultRecordMetadata` tolerates unknown serializer types.** When loading persisted metadata, an unrecognized serializer `type` is converted to an `UnknownSerializer` placeholder rather than raising `ValidationError`. This allows inspecting result metadata when the serializer implementation is unavailable in the current environment. However, known serializer types with invalid fields still raise `ValidationError`. `UnknownSerializer.dumps()` and `UnknownSerializer.loads()` raise `RuntimeError` — the tolerance is for inspection only, not actual serialization/deserialization.
|
|
34
|
+
- **Flow-run suspension is enforced at orchestration boundaries.** Suspension is delivered via `FlowRunSuspensionRequest` and raised with `raise_if_flow_run_suspension_requested()`. When changing engines, futures, task runners, or generator execution, check before returning control to flow user code or proposing a flow state that could leave `Suspended`; keep sync/async paths aligned and avoid per-boundary API reads.
|
|
34
35
|
|
|
35
36
|
## Logging
|
|
36
37
|
|
|
@@ -58,6 +59,8 @@ Use `get_logger()` from `prefect.logging` instead of raw `logging.getLogger()`
|
|
|
58
59
|
- `utilities/` → Cross-cutting helpers: async utils, schema hydration, callables introspection, and more (see utilities/AGENTS.md)
|
|
59
60
|
- `blocks/` → Server-persisted configuration objects for external service credentials and settings (see blocks/AGENTS.md)
|
|
60
61
|
- `workers/` → Work-pool-based execution layer: polls for flow runs, dispatches to infrastructure (see workers/AGENTS.md)
|
|
62
|
+
- `bundles/` → Flow bundling for remote execution (`create_bundle_for_flow_run`, cloudpickle+gzip); used by workers when dispatching `InfrastructureBoundFlow` runs; `execute_bundle_from_file` is lazy-loaded via `__getattr__` to avoid `runpy` warnings when invoked as `python -m prefect.bundles.execute`
|
|
63
|
+
- `plugins.py` → Stable public surface for startup hooks and `prefect.collections` entrypoint loading; pluggy symbols are lazy-loaded so `prefect-client` builds (which don't ship pluggy) can still import `load_prefect_collections` without error
|
|
61
64
|
- `docker/` → `DockerImage` class for building and pushing Docker images during deployment
|
|
62
65
|
- `telemetry/` → OS-level resource metric collection and run telemetry
|
|
63
66
|
- `testing/` → Test utilities shipped with the SDK: `prefect_test_harness`, assertion helpers, and reusable fixtures (see testing/AGENTS.md)
|
|
@@ -78,25 +78,24 @@ del _build_info, pathlib
|
|
|
78
78
|
|
|
79
79
|
def _initialize_plugins() -> None:
|
|
80
80
|
"""
|
|
81
|
-
Initialize the
|
|
81
|
+
Initialize the plugin system if enabled.
|
|
82
82
|
|
|
83
83
|
This runs automatically when Prefect is imported and plugins are enabled
|
|
84
|
-
via
|
|
84
|
+
via the `plugins.enabled` setting. Errors are logged but don't prevent
|
|
85
85
|
Prefect from loading.
|
|
86
86
|
"""
|
|
87
87
|
try:
|
|
88
88
|
# Import here to avoid circular imports and defer cost until needed
|
|
89
89
|
from prefect.settings import get_current_settings
|
|
90
90
|
|
|
91
|
-
if not get_current_settings().
|
|
91
|
+
if not get_current_settings().plugins.enabled:
|
|
92
92
|
return
|
|
93
93
|
|
|
94
94
|
import anyio
|
|
95
95
|
|
|
96
|
-
from prefect._experimental.plugins import run_startup_hooks
|
|
97
|
-
from prefect._experimental.plugins.spec import HookContext
|
|
98
96
|
from prefect.context import refresh_global_settings_context
|
|
99
97
|
from prefect.logging import get_logger
|
|
98
|
+
from prefect.plugins import HookContext, run_startup_hooks
|
|
100
99
|
from prefect.settings import get_current_settings
|
|
101
100
|
|
|
102
101
|
ctx = HookContext(
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Compatibility shim for the legacy `prefect._experimental._launchers` path.
|
|
3
|
+
|
|
4
|
+
The launcher utilities graduated to GA at `prefect._internal.launchers` when the
|
|
5
|
+
infrastructure decorators feature became stable. This module re-exports
|
|
6
|
+
the public symbols from the new location and emits a
|
|
7
|
+
`DeprecationWarning` so consumers know to migrate.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import warnings
|
|
11
|
+
|
|
12
|
+
from prefect._internal.launchers import (
|
|
13
|
+
get_launcher_for_side,
|
|
14
|
+
normalize_launcher,
|
|
15
|
+
resolve_bundle_step_with_launcher,
|
|
16
|
+
validate_bundle_step_launcher,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
warnings.warn(
|
|
20
|
+
"`prefect._experimental._launchers` has moved to `prefect._internal.launchers`. "
|
|
21
|
+
"The old import path will be removed in a future release.",
|
|
22
|
+
DeprecationWarning,
|
|
23
|
+
stacklevel=2,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
__all__ = [
|
|
27
|
+
"get_launcher_for_side",
|
|
28
|
+
"normalize_launcher",
|
|
29
|
+
"resolve_bundle_step_with_launcher",
|
|
30
|
+
"validate_bundle_step_launcher",
|
|
31
|
+
]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Compatibility shim for the legacy `prefect._experimental.bundles` path.
|
|
3
|
+
|
|
4
|
+
The bundle implementation graduated to GA at `prefect.bundles` when the
|
|
5
|
+
infrastructure decorators feature became stable. This package keeps the
|
|
6
|
+
old import path importable (and `python -m`-runnable for the legacy
|
|
7
|
+
`...bundles.execute` entrypoint), but emits a `DeprecationWarning` so
|
|
8
|
+
consumers know to migrate to `prefect.bundles`.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import warnings
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
from prefect.bundles import (
|
|
15
|
+
BundleCreationResult,
|
|
16
|
+
BundleLauncher,
|
|
17
|
+
BundleLauncherOverride,
|
|
18
|
+
BundleLauncherSide,
|
|
19
|
+
SerializedBundle,
|
|
20
|
+
aupload_bundle_to_storage,
|
|
21
|
+
convert_step_to_command,
|
|
22
|
+
create_bundle_for_flow_run,
|
|
23
|
+
execute_bundle_in_subprocess,
|
|
24
|
+
extract_flow_from_bundle,
|
|
25
|
+
upload_bundle_to_storage,
|
|
26
|
+
)
|
|
27
|
+
from prefect.bundles import _pin_prefect_in_bundle_step_requires # noqa: F401
|
|
28
|
+
|
|
29
|
+
warnings.warn(
|
|
30
|
+
"`prefect._experimental.bundles` has moved to `prefect.bundles`. "
|
|
31
|
+
"The old import path will be removed in a future release.",
|
|
32
|
+
DeprecationWarning,
|
|
33
|
+
stacklevel=2,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
__all__ = [
|
|
37
|
+
"BundleCreationResult",
|
|
38
|
+
"BundleLauncher",
|
|
39
|
+
"BundleLauncherOverride",
|
|
40
|
+
"BundleLauncherSide",
|
|
41
|
+
"SerializedBundle",
|
|
42
|
+
"aupload_bundle_to_storage",
|
|
43
|
+
"convert_step_to_command",
|
|
44
|
+
"create_bundle_for_flow_run",
|
|
45
|
+
"execute_bundle_from_file",
|
|
46
|
+
"execute_bundle_in_subprocess",
|
|
47
|
+
"extract_flow_from_bundle",
|
|
48
|
+
"upload_bundle_to_storage",
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def __getattr__(name: str) -> Any:
|
|
53
|
+
"""Lazy-load `execute_bundle_from_file` from the `.execute` submodule
|
|
54
|
+
so importing this package does not pre-populate
|
|
55
|
+
`sys.modules["prefect._experimental.bundles.execute"]`. That would
|
|
56
|
+
make `python -m prefect._experimental.bundles.execute` emit a
|
|
57
|
+
`runpy` `RuntimeWarning` and hard-fail under
|
|
58
|
+
`PYTHONWARNINGS=error`. Accessing the legacy `.execute` submodule
|
|
59
|
+
by attribute (rather than importing it eagerly) still works because
|
|
60
|
+
Python binds it on the package after a separate `from . import
|
|
61
|
+
execute` (the legacy execute shim is reachable via plain
|
|
62
|
+
`import prefect._experimental.bundles.execute`).
|
|
63
|
+
"""
|
|
64
|
+
if name == "execute_bundle_from_file":
|
|
65
|
+
from prefect.bundles.execute import execute_bundle_from_file
|
|
66
|
+
|
|
67
|
+
return execute_bundle_from_file
|
|
68
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Compatibility shim for the legacy `prefect._experimental.bundles.execute`
|
|
3
|
+
entrypoint.
|
|
4
|
+
|
|
5
|
+
Existing work pool storage configurations may have stored the command
|
|
6
|
+
`python -m prefect._experimental.bundles.execute --key ...` before the
|
|
7
|
+
bundle implementation graduated to GA. This module re-exports the new
|
|
8
|
+
`prefect.bundles.execute` symbols and forwards `python -m` execution to
|
|
9
|
+
the new entrypoint, while emitting a `DeprecationWarning` so users know
|
|
10
|
+
to migrate to `prefect.bundles.execute`.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import warnings
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
warnings.warn(
|
|
17
|
+
"`prefect._experimental.bundles.execute` has moved to "
|
|
18
|
+
"`prefect.bundles.execute`. The old import path will be removed in a "
|
|
19
|
+
"future release.",
|
|
20
|
+
DeprecationWarning,
|
|
21
|
+
stacklevel=2,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
__all__ = ["execute_bundle", "execute_bundle_from_file"] # noqa: F822
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def __getattr__(name: str) -> Any:
|
|
28
|
+
"""Lazy-load symbols from `prefect.bundles.execute` so that running
|
|
29
|
+
`python -m prefect._experimental.bundles.execute` does not put
|
|
30
|
+
`prefect.bundles.execute` in `sys.modules` before the
|
|
31
|
+
`runpy.run_module` forward below executes — that would trigger a
|
|
32
|
+
runpy `RuntimeWarning` (and hard-fail under `PYTHONWARNINGS=error`).
|
|
33
|
+
"""
|
|
34
|
+
if name in {"execute_bundle", "execute_bundle_from_file"}:
|
|
35
|
+
from prefect.bundles.execute import execute_bundle, execute_bundle_from_file
|
|
36
|
+
|
|
37
|
+
if name == "execute_bundle":
|
|
38
|
+
return execute_bundle
|
|
39
|
+
return execute_bundle_from_file
|
|
40
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
if __name__ == "__main__":
|
|
44
|
+
import runpy
|
|
45
|
+
|
|
46
|
+
runpy.run_module("prefect.bundles.execute", run_name="__main__")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Deprecated. Use `prefect.plugins` instead.
|
|
3
|
+
|
|
4
|
+
The plugin system has graduated from experimental to general availability.
|
|
5
|
+
Imports from this path continue to work but emit a `DeprecationWarning`.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
|
|
9
|
+
|
|
10
|
+
# Names are lazily resolved by `__getattr__` below; ruff's F822 (undefined
|
|
11
|
+
# name in __all__) doesn't fit this deprecation-shim pattern.
|
|
12
|
+
# fmt: off
|
|
13
|
+
__all__ = ("run_startup_hooks", "HookContext", "SetupResult", "HookSpec", "SetupSummary", "PREFECT_PLUGIN_API_VERSION", "register_hook") # noqa: F822
|
|
14
|
+
# fmt: on
|
|
15
|
+
|
|
16
|
+
__getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""Deprecated. Use `prefect.plugins` instead."""
|
|
2
|
+
|
|
3
|
+
from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
|
|
4
|
+
|
|
5
|
+
__all__ = ("SetupSummary",) # noqa: F822 - lazily resolved by `__getattr__`
|
|
6
|
+
|
|
7
|
+
__getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""Deprecated. Use `prefect.plugins` instead."""
|
|
2
|
+
|
|
3
|
+
from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
|
|
4
|
+
|
|
5
|
+
__all__ = ("register_hook",) # noqa: F822 - lazily resolved by `__getattr__`
|
|
6
|
+
|
|
7
|
+
__getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""Deprecated. Use `prefect.plugins` instead."""
|
|
2
|
+
|
|
3
|
+
from prefect._internal.compatibility.deprecated_paths import deprecated_module_attrs
|
|
4
|
+
|
|
5
|
+
__all__ = ("HookContext", "SetupResult", "HookSpec", "PREFECT_PLUGIN_API_VERSION") # noqa: F822 - names lazily resolved by `__getattr__`
|
|
6
|
+
|
|
7
|
+
__getattr__ = deprecated_module_attrs(__name__, "prefect.plugins", __all__)
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import contextvars
|
|
5
|
+
import threading
|
|
6
|
+
from contextlib import contextmanager
|
|
7
|
+
from typing import Generator
|
|
8
|
+
from uuid import UUID
|
|
9
|
+
|
|
10
|
+
from prefect.client.schemas.objects import State
|
|
11
|
+
from prefect.exceptions import Pause
|
|
12
|
+
from prefect.logging.loggers import get_logger
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class FlowRunSuspensionRequest:
|
|
16
|
+
"""
|
|
17
|
+
Mutable in-process suspension request shared by flow, child flow, and task contexts.
|
|
18
|
+
|
|
19
|
+
The stored state is the server-accepted `Suspended` state that should be raised
|
|
20
|
+
through Prefect's existing `Pause` control-flow path at the next orchestration
|
|
21
|
+
boundary.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def __init__(self) -> None:
|
|
25
|
+
self._suspended_state: State | None = None
|
|
26
|
+
self._lock = threading.Lock()
|
|
27
|
+
|
|
28
|
+
def mark_requested(self, state: State) -> None:
|
|
29
|
+
with self._lock:
|
|
30
|
+
self._suspended_state = state
|
|
31
|
+
|
|
32
|
+
def get_state(self) -> State | None:
|
|
33
|
+
with self._lock:
|
|
34
|
+
return self._suspended_state
|
|
35
|
+
|
|
36
|
+
def is_requested(self) -> bool:
|
|
37
|
+
return self.get_state() is not None
|
|
38
|
+
|
|
39
|
+
def raise_if_requested(self) -> None:
|
|
40
|
+
if state := self.get_state():
|
|
41
|
+
raise Pause(state=state)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def is_suspended_flow_run_state(state: State | None) -> bool:
|
|
45
|
+
return bool(state and state.is_paused() and state.name == "Suspended")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
_active_flow_run_suspension_requests: dict[UUID, FlowRunSuspensionRequest] = {}
|
|
49
|
+
_active_flow_run_suspension_requests_lock = threading.Lock()
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@contextmanager
|
|
53
|
+
def register_flow_run_suspension_request(
|
|
54
|
+
flow_run_id: UUID,
|
|
55
|
+
suspension_request: FlowRunSuspensionRequest,
|
|
56
|
+
) -> Generator[None, None, None]:
|
|
57
|
+
with _active_flow_run_suspension_requests_lock:
|
|
58
|
+
_active_flow_run_suspension_requests[flow_run_id] = suspension_request
|
|
59
|
+
|
|
60
|
+
try:
|
|
61
|
+
yield
|
|
62
|
+
finally:
|
|
63
|
+
with _active_flow_run_suspension_requests_lock:
|
|
64
|
+
if (
|
|
65
|
+
_active_flow_run_suspension_requests.get(flow_run_id)
|
|
66
|
+
is suspension_request
|
|
67
|
+
):
|
|
68
|
+
_active_flow_run_suspension_requests.pop(flow_run_id, None)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def mark_flow_run_suspension_requested(flow_run_id: UUID, state: State) -> bool:
|
|
72
|
+
with _active_flow_run_suspension_requests_lock:
|
|
73
|
+
suspension_request = _active_flow_run_suspension_requests.get(flow_run_id)
|
|
74
|
+
|
|
75
|
+
if suspension_request is None:
|
|
76
|
+
return False
|
|
77
|
+
|
|
78
|
+
suspension_request.mark_requested(state)
|
|
79
|
+
return True
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def raise_if_flow_run_suspension_requested() -> None:
|
|
83
|
+
from prefect.context import FlowRunContext
|
|
84
|
+
|
|
85
|
+
if flow_run_context := FlowRunContext.get():
|
|
86
|
+
flow_run_context.flow_run_suspension_request.raise_if_requested()
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@contextmanager
|
|
90
|
+
def observe_flow_run_suspension(
|
|
91
|
+
flow_run_id: UUID,
|
|
92
|
+
suspension_request: FlowRunSuspensionRequest,
|
|
93
|
+
polling_interval: float = 10,
|
|
94
|
+
) -> Generator[None, None, None]:
|
|
95
|
+
from prefect._internal.observers import FlowRunSuspendingObserver
|
|
96
|
+
|
|
97
|
+
logger = get_logger("flow_run_suspension")
|
|
98
|
+
stop_event = threading.Event()
|
|
99
|
+
ready_event = threading.Event()
|
|
100
|
+
|
|
101
|
+
def mark_suspended(flow_run_id: UUID, state: State) -> None:
|
|
102
|
+
if not mark_flow_run_suspension_requested(flow_run_id, state):
|
|
103
|
+
suspension_request.mark_requested(state)
|
|
104
|
+
|
|
105
|
+
async def run_observer() -> None:
|
|
106
|
+
async with FlowRunSuspendingObserver(
|
|
107
|
+
on_suspended=mark_suspended,
|
|
108
|
+
polling_interval=polling_interval,
|
|
109
|
+
) as observer:
|
|
110
|
+
await observer.watch_flow_run_id(flow_run_id)
|
|
111
|
+
ready_event.set()
|
|
112
|
+
while not stop_event.is_set():
|
|
113
|
+
await asyncio.sleep(0.2)
|
|
114
|
+
|
|
115
|
+
context = contextvars.copy_context()
|
|
116
|
+
|
|
117
|
+
def observer_thread() -> None:
|
|
118
|
+
try:
|
|
119
|
+
context.run(lambda: asyncio.run(run_observer()))
|
|
120
|
+
except Exception:
|
|
121
|
+
logger.debug(
|
|
122
|
+
"Flow run suspension observer exited with an exception",
|
|
123
|
+
exc_info=True,
|
|
124
|
+
)
|
|
125
|
+
finally:
|
|
126
|
+
ready_event.set()
|
|
127
|
+
|
|
128
|
+
thread = threading.Thread(target=observer_thread, daemon=True)
|
|
129
|
+
thread.start()
|
|
130
|
+
ready_event.wait()
|
|
131
|
+
|
|
132
|
+
try:
|
|
133
|
+
yield
|
|
134
|
+
finally:
|
|
135
|
+
stop_event.set()
|
|
136
|
+
thread.join(timeout=2)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Generic helper for keeping a deprecated module path working as a re-export
|
|
3
|
+
of a new location, emitting a DeprecationWarning per attribute access.
|
|
4
|
+
|
|
5
|
+
Independent of any specific Prefect version migration. Intended for cases
|
|
6
|
+
where a feature graduates between lifecycle stages (e.g., experimental to
|
|
7
|
+
GA) and we want the old import path to continue working with a clear hand
|
|
8
|
+
off message, but without coupling to the v2->v3 module migration helpers
|
|
9
|
+
in `prefect._internal.compatibility.migration`.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
import importlib
|
|
15
|
+
import warnings
|
|
16
|
+
from typing import Any, Callable, Iterable
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def deprecated_module_attrs(
|
|
20
|
+
old_module: str,
|
|
21
|
+
new_module: str,
|
|
22
|
+
names: Iterable[str],
|
|
23
|
+
) -> Callable[[str], Any]:
|
|
24
|
+
"""
|
|
25
|
+
Build a `__getattr__` for a deprecated module that re-exports public
|
|
26
|
+
symbols from a new location. Each access emits a DeprecationWarning
|
|
27
|
+
pointing the user at the new path.
|
|
28
|
+
|
|
29
|
+
Symbols not in `names` raise `AttributeError` (rather than being
|
|
30
|
+
silently re-exported) — this keeps the public surface explicit and
|
|
31
|
+
avoids leaking implementation details that the new location does not
|
|
32
|
+
intend to expose.
|
|
33
|
+
|
|
34
|
+
Usage at the bottom of the deprecated module:
|
|
35
|
+
|
|
36
|
+
from prefect._internal.compatibility.deprecated_paths import (
|
|
37
|
+
deprecated_module_attrs,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
__getattr__ = deprecated_module_attrs(
|
|
41
|
+
__name__,
|
|
42
|
+
"prefect.plugins",
|
|
43
|
+
("register_hook", "HookContext"),
|
|
44
|
+
)
|
|
45
|
+
"""
|
|
46
|
+
name_set = frozenset(names)
|
|
47
|
+
|
|
48
|
+
def __getattr__(name: str) -> Any:
|
|
49
|
+
if name in name_set:
|
|
50
|
+
warnings.warn(
|
|
51
|
+
f"`{old_module}.{name}` has moved to `{new_module}.{name}`. "
|
|
52
|
+
f"Update your imports; the old path will be removed in a "
|
|
53
|
+
f"future release.",
|
|
54
|
+
DeprecationWarning,
|
|
55
|
+
stacklevel=2,
|
|
56
|
+
)
|
|
57
|
+
return getattr(importlib.import_module(new_module), name)
|
|
58
|
+
raise AttributeError(f"module {old_module!r} has no attribute {name!r}")
|
|
59
|
+
|
|
60
|
+
return __getattr__
|