prefect-client 3.8.9.dev7__tar.gz → 3.9.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.8.9.dev7 → prefect_client-3.9.1}/PKG-INFO +12 -11
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/README.md +2 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/pyproject.toml +10 -8
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/AGENTS.md +10 -1
- prefect_client-3.9.1/src/prefect/_build_info.py +5 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/notice.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/deprecated.py +5 -3
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/migration.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/services.py +36 -8
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/result_records.py +13 -9
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/artifacts.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/notifications.py +12 -14
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/system.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/webhook.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/cache_policies.py +22 -4
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/__init__.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/__init__.py +2 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_work_pools/client.py +2 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/sorting.py +2 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/context.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/base.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/runner.py +90 -15
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/steps/core.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/steps/pull.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/AGENTS.md +1 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/schemas/automations.py +19 -7
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/schemas/events.py +7 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/filesystems.py +3 -9
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/flow_engine.py +24 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/flow_runs.py +14 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/flows.py +5 -5
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/provisioners/ecs.py +86 -19
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/AGENTS.md +2 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/handlers.py +40 -9
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/AGENTS.md +4 -13
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_flow_run_executor.py +42 -16
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_process_manager.py +9 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_scheduled_run_poller.py +1 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_starter_bundle.py +0 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_starter_direct.py +0 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_starter_engine.py +2 -3
- prefect_client-3.9.1/src/prefect/runner/runner.py +924 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/server.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/storage.py +18 -7
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runtime/flow_run.py +7 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/__init__.py +2 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/artifacts.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/automations.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/background_workers.py +25 -19
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/block_capabilities.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/block_documents.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/block_schemas.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/block_types.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/clients.py +35 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/concurrency_limits.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/concurrency_limits_v2.py +4 -4
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/deployments.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/events.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/flow_run_states.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/flow_runs.py +20 -11
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/flows.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/logs.py +1 -1
- prefect_client-3.9.1/src/prefect/server/api/observed_states.py +32 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/server.py +2 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/task_run_states.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/task_runs.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/task_workers.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/ui/flow_runs.py +2 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/ui/flows.py +2 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/ui/task_runs.py +4 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/variables.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/work_queues.py +1 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/workers.py +2 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/_types.py +1 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/deployments.py +11 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/task_engine.py +63 -7
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/task_runners.py +28 -12
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/tasks.py +11 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/types/__init__.py +31 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/types/_datetime.py +102 -32
- prefect_client-3.9.1/src/prefect/types/_datetime_deprecations.py +332 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/collections.py +34 -10
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/filesystem/__init__.py +50 -5
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/pydantic.py +2 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/templating/AGENTS.md +1 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/templating/__init__.py +9 -3
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/urls.py +14 -1
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/AGENTS.md +2 -2
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/process.py +18 -27
- prefect_client-3.8.9.dev7/src/prefect/_build_info.py +0 -5
- prefect_client-3.8.9.dev7/src/prefect/runner/runner.py +0 -1891
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/.gitignore +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/LICENSE +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/hatch_build.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/__main__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/_observation_delivery.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/attempt_control.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/collections.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/manager.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/server_maintenance.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/agent.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/automations.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/base.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/engine.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/related.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/futures.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/main.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/plugins.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/py.typed +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/results.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_uv_command.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_workspace_hook_runner.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_workspace_runtime.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runner/_workspace_supervisor.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/schedules.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/serializers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/states.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/transactions.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/types/names.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/callables/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/filesystem/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/variables.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/workers/utilities.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: prefect-client
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.9.1
|
|
4
4
|
Summary: Workflow orchestration and management.
|
|
5
5
|
Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
|
|
6
|
-
Project-URL: Documentation, https://
|
|
6
|
+
Project-URL: Documentation, https://www.prefect.io/docs
|
|
7
7
|
Project-URL: Source, https://github.com/PrefectHQ/prefect
|
|
8
8
|
Project-URL: Tracker, https://github.com/PrefectHQ/prefect/issues
|
|
9
9
|
Author-email: "Prefect Technologies, Inc." <help@prefect.io>
|
|
@@ -18,17 +18,19 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
21
22
|
Classifier: Topic :: Software Development :: Libraries
|
|
22
|
-
Requires-Python: <3.
|
|
23
|
+
Requires-Python: <3.16,>=3.11
|
|
23
24
|
Requires-Dist: amplitude-analytics<2.0.0,>=1.2.1
|
|
24
25
|
Requires-Dist: anyio<5.0.0,>=4.4.0
|
|
25
26
|
Requires-Dist: asgi-lifespan<3.0,>=1.0
|
|
26
27
|
Requires-Dist: cachetools<8.0,>=5.3
|
|
28
|
+
Requires-Dist: certifi>=2026.10.19
|
|
27
29
|
Requires-Dist: cloudpickle<4.0,>=2.0
|
|
28
30
|
Requires-Dist: coolname<6.0.0,>=1.0.4
|
|
29
31
|
Requires-Dist: dateparser<2.0.0,>=1.1.1
|
|
30
32
|
Requires-Dist: exceptiongroup>=1.0.0
|
|
31
|
-
Requires-Dist: fastapi<
|
|
33
|
+
Requires-Dist: fastapi<0.151,>=0.139.0
|
|
32
34
|
Requires-Dist: fsspec>=2022.5.0
|
|
33
35
|
Requires-Dist: graphviz>=0.20.1
|
|
34
36
|
Requires-Dist: griffe<3.0.0,>=0.49.0
|
|
@@ -48,22 +50,21 @@ Requires-Dist: pydantic-core<3.0.0,>=2.12.0
|
|
|
48
50
|
Requires-Dist: pydantic-extra-types<3.0.0,>=2.8.2
|
|
49
51
|
Requires-Dist: pydantic-settings<3.0.0,>=2.9.1
|
|
50
52
|
Requires-Dist: python-dateutil<3.0.0,>=2.8.2
|
|
51
|
-
Requires-Dist: python-slugify<9.
|
|
53
|
+
Requires-Dist: python-slugify<9.2,>=9
|
|
52
54
|
Requires-Dist: pytz<2027,>=2021.1
|
|
53
55
|
Requires-Dist: pyyaml<7.0.0,>=5.4.1
|
|
54
56
|
Requires-Dist: rfc3339-validator<0.2.0,>=0.1.4
|
|
55
57
|
Requires-Dist: rich<16.0,>=11.0
|
|
56
|
-
Requires-Dist: ruamel-yaml
|
|
57
|
-
Requires-Dist: ruamel-yaml>=0.17.0
|
|
58
|
+
Requires-Dist: ruamel-yaml!=0.19.0,>=0.17.0
|
|
58
59
|
Requires-Dist: sniffio<2.0.0,>=1.3.0
|
|
59
60
|
Requires-Dist: starlette>=1.0.1
|
|
60
61
|
Requires-Dist: toml>=0.10.0
|
|
61
62
|
Requires-Dist: typing-extensions<5.0.0,>=4.10.0
|
|
62
63
|
Requires-Dist: uvicorn!=0.29.0,>=0.14.0
|
|
63
64
|
Requires-Dist: websockets<17.0,>=15.0.1
|
|
64
|
-
Requires-Dist: whenever<0.
|
|
65
|
+
Requires-Dist: whenever<0.12.0,>=0.10.5; python_version >= '3.13'
|
|
65
66
|
Provides-Extra: notifications
|
|
66
|
-
Requires-Dist: apprise<2.
|
|
67
|
+
Requires-Dist: apprise<2.1.0,>=1.13.0; extra == 'notifications'
|
|
67
68
|
Description-Content-Type: text/markdown
|
|
68
69
|
|
|
69
70
|
<p align="center"><img src="https://github.com/PrefectHQ/prefect/assets/3407835/c654cbc6-63e8-4ada-a92a-efd2f8f24b85" width=1000></p>
|
|
@@ -162,7 +163,7 @@ describing the functionality you are interested in using and we will do our best
|
|
|
162
163
|
## Next steps
|
|
163
164
|
|
|
164
165
|
There's lots more you can do to orchestrate and observe your workflows with Prefect!
|
|
165
|
-
Start with our [friendly tutorial](https://
|
|
166
|
+
Start with our [friendly tutorial](https://www.prefect.io/docs/v3/get-started/quickstart) or explore the [core concepts of Prefect workflows](https://www.prefect.io/docs/concepts/).
|
|
166
167
|
|
|
167
168
|
## Join the community
|
|
168
169
|
|
|
@@ -172,6 +173,6 @@ All community forums, including code contributions, issue discussions, and Slack
|
|
|
172
173
|
|
|
173
174
|
## Contribute
|
|
174
175
|
|
|
175
|
-
See our [documentation on contributing to Prefect](https://
|
|
176
|
+
See our [documentation on contributing to Prefect](https://www.prefect.io/docs/contribute).
|
|
176
177
|
|
|
177
178
|
Thanks for being part of the mission to build a new kind of workflow system and, of course, **happy engineering!**
|
|
@@ -94,7 +94,7 @@ describing the functionality you are interested in using and we will do our best
|
|
|
94
94
|
## Next steps
|
|
95
95
|
|
|
96
96
|
There's lots more you can do to orchestrate and observe your workflows with Prefect!
|
|
97
|
-
Start with our [friendly tutorial](https://
|
|
97
|
+
Start with our [friendly tutorial](https://www.prefect.io/docs/v3/get-started/quickstart) or explore the [core concepts of Prefect workflows](https://www.prefect.io/docs/concepts/).
|
|
98
98
|
|
|
99
99
|
## Join the community
|
|
100
100
|
|
|
@@ -104,6 +104,6 @@ All community forums, including code contributions, issue discussions, and Slack
|
|
|
104
104
|
|
|
105
105
|
## Contribute
|
|
106
106
|
|
|
107
|
-
See our [documentation on contributing to Prefect](https://
|
|
107
|
+
See our [documentation on contributing to Prefect](https://www.prefect.io/docs/contribute).
|
|
108
108
|
|
|
109
109
|
Thanks for being part of the mission to build a new kind of workflow system and, of course, **happy engineering!**
|
|
@@ -7,7 +7,7 @@ name = "prefect-client"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = "Workflow orchestration and management."
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.11,<3.
|
|
10
|
+
requires-python = ">=3.11,<3.16"
|
|
11
11
|
license = { text = "Apache-2.0" }
|
|
12
12
|
authors = [{ name = "Prefect Technologies, Inc.", email = "help@prefect.io" }]
|
|
13
13
|
classifiers = [
|
|
@@ -20,6 +20,7 @@ classifiers = [
|
|
|
20
20
|
"Programming Language :: Python :: 3.12",
|
|
21
21
|
"Programming Language :: Python :: 3.13",
|
|
22
22
|
"Programming Language :: Python :: 3.14",
|
|
23
|
+
"Programming Language :: Python :: 3.15",
|
|
23
24
|
"Topic :: Software Development :: Libraries",
|
|
24
25
|
]
|
|
25
26
|
dependencies = [
|
|
@@ -28,11 +29,13 @@ dependencies = [
|
|
|
28
29
|
"anyio>=4.4.0,<5.0.0",
|
|
29
30
|
"asgi-lifespan>=1.0,<3.0",
|
|
30
31
|
"cachetools>=5.3,<8.0",
|
|
32
|
+
"certifi>=2026.10.19",
|
|
31
33
|
"cloudpickle>=2.0,<4.0",
|
|
32
34
|
"coolname>=1.0.4,<6.0.0",
|
|
33
35
|
"dateparser>=1.1.1,<2.0.0",
|
|
34
36
|
"exceptiongroup>=1.0.0",
|
|
35
|
-
|
|
37
|
+
# 0.151 rejects an explicit null for a body param with a default, and released clients send null
|
|
38
|
+
"fastapi>=0.139.0,<0.151",
|
|
36
39
|
"fsspec>=2022.5.0",
|
|
37
40
|
"graphviz>=0.20.1",
|
|
38
41
|
"griffe>=0.49.0,<3.0.0",
|
|
@@ -52,28 +55,27 @@ dependencies = [
|
|
|
52
55
|
"pydantic_extra_types>=2.8.2,<3.0.0",
|
|
53
56
|
"pydantic_settings>=2.9.1,<3.0.0",
|
|
54
57
|
"python-dateutil>=2.8.2,<3.0.0",
|
|
55
|
-
"python-slugify>=9,<9.
|
|
58
|
+
"python-slugify>=9,<9.2",
|
|
56
59
|
"pytz>=2021.1,<2027",
|
|
57
60
|
"pyyaml>=5.4.1,<7.0.0",
|
|
58
61
|
"rfc3339-validator>=0.1.4,<0.2.0",
|
|
59
62
|
"rich>=11.0,<16.0",
|
|
60
|
-
"ruamel.yaml>=0.17.0",
|
|
61
|
-
"ruamel.yaml.clib>=0.2.8; platform_python_implementation == 'CPython'",
|
|
63
|
+
"ruamel.yaml>=0.17.0,!=0.19.0",
|
|
62
64
|
"sniffio>=1.3.0,<2.0.0",
|
|
63
65
|
"starlette>=1.0.1",
|
|
64
66
|
"toml>=0.10.0",
|
|
65
67
|
"typing_extensions>=4.10.0,<5.0.0",
|
|
66
68
|
"uvicorn>=0.14.0,!=0.29.0",
|
|
67
69
|
"websockets>=15.0.1,<17.0",
|
|
68
|
-
"whenever>=0.
|
|
70
|
+
"whenever>=0.10.5,<0.12.0; python_version>='3.13'",
|
|
69
71
|
]
|
|
70
72
|
[project.urls]
|
|
71
73
|
Changelog = "https://github.com/PrefectHQ/prefect/releases"
|
|
72
|
-
Documentation = "https://
|
|
74
|
+
Documentation = "https://www.prefect.io/docs"
|
|
73
75
|
Source = "https://github.com/PrefectHQ/prefect"
|
|
74
76
|
Tracker = "https://github.com/PrefectHQ/prefect/issues"
|
|
75
77
|
[project.optional-dependencies]
|
|
76
|
-
notifications = ["apprise>=1.13.0, <2.
|
|
78
|
+
notifications = ["apprise>=1.13.0, <2.1.0"]
|
|
77
79
|
|
|
78
80
|
|
|
79
81
|
[tool.hatch.version]
|
|
@@ -6,6 +6,10 @@ The foundation for building and executing workflows with Python. This covers the
|
|
|
6
6
|
|
|
7
7
|
There is no formal public/private boundary beyond the `_` prefix convention. Modules and functions prefixed with `_` are internal. Everything else is considered public and requires backward compatibility.
|
|
8
8
|
|
|
9
|
+
## Runtime Parameter Defaults
|
|
10
|
+
|
|
11
|
+
Runtime flow/task parameter values must come from `utilities.callables.get_call_parameters` or `get_parameter_defaults`: raw signature defaults can be `pydantic.Field(...)` objects. These helpers unwrap `FieldInfo` defaults; schema generation intentionally retains `FieldInfo` to preserve metadata.
|
|
12
|
+
|
|
9
13
|
## Entry Points
|
|
10
14
|
|
|
11
15
|
- `flows.py` / `tasks.py` — `@flow` and `@task` decorator definitions. The primary user-facing API.
|
|
@@ -25,7 +29,8 @@ There is no formal public/private boundary beyond the `_` prefix convention. Mod
|
|
|
25
29
|
- **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
30
|
- **Event and log WebSocket subscribers are parallel implementations.** `events/clients.py::PrefectEventSubscriber` and `logging/clients.py::PrefectLogsSubscriber` duplicate the same reconnect/backoff/dedup logic, including the `reconnect_on_clean_close` option (used by `events/subscribers.py::FlowRunSubscriber` so a clean disconnect doesn't hide a terminal event). Mirror any reconnection-behavior change across both.
|
|
27
31
|
- **Flow run observers own their stream recovery.** `_internal/observers.py` observers create subscribers with `reconnection_attempts=0` and delegate polling fallback, reconnect backoff, and setup deadlines to `_internal/_observation_delivery.py::ObservationDelivery`. Subscribers close any socket left by a failed or cancelled `__aenter__`, since callers never exit a context that failed to enter.
|
|
28
|
-
- **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
|
|
32
|
+
- **Use `whenever` compat helpers for all datetime conversions on Python 3.13+.** `prefect-client` depends on `whenever` only on Python 3.13+, so modules it ships must keep `whenever` imports behind `sys.version_info >= (3, 13)`; only server code that the client build strips may import it unconditionally (see `client/AGENTS.md`). `types/_datetime.py` provides `now()`, `_whenever_to_stdlib()`, `_whenever_zdt_from_py()`, and `_whenever_pdt_from_py()` to abstract over API differences across supported whenever releases. Version-specific code is guarded by feature-detection flags (`_WHENEVER_NEW_API` for ≥ 0.10.0, `_SYSTEM_TZ` for ≥ 0.11), not version checks. 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. Likewise avoid `.assume_system_tz()`/`.to_system_tz()` (deprecated in 0.11; the warning fails tests under `filterwarnings = error`) — use `in_local_tz()` — and direct `DateTimeDelta` imports (removed in 0.11) — use the `Interval` alias. Violations will silently break on whichever whenever version the helpers weren't written for.
|
|
33
|
+
- **Call Pendulum-only members via `types/_datetime.py::_pendulum_call` on Python 3.11/3.12.** Prefect's `DateTime`/`Date`/`Duration` wrap Pendulum-only members (and some shared stdlib methods like `replace`) with user-facing deprecation warnings; `_pendulum_call` bypasses them so users only see warnings for their own calls. `pyproject.toml` ignores these warnings in pytest, so direct calls from Prefect code pass tests silently unless covered by the guards in `tests/test_datetime.py`.
|
|
29
34
|
- **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.
|
|
30
35
|
- **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.
|
|
31
36
|
- **`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.
|
|
@@ -69,3 +74,7 @@ Use `get_logger()` from `prefect.logging` instead of raw `logging.getLogger()`
|
|
|
69
74
|
- `docker/` → `DockerImage` class for building and pushing Docker images during deployment
|
|
70
75
|
- `telemetry/` → OS-level resource metric collection and run telemetry
|
|
71
76
|
- `testing/` → Test utilities shipped with the SDK: `prefect_test_harness`, assertion helpers, and reusable fixtures (see testing/AGENTS.md)
|
|
77
|
+
|
|
78
|
+
## Multi-pass Templating
|
|
79
|
+
|
|
80
|
+
When applying `utilities.templating.apply_values` in stages, use `remove_notset=False` on passes that must preserve placeholders for later values. The default drops unresolved whole-value dict entries and list items and blanks unresolved inline placeholders. This matters when deployment preparation applies environment values before build/push outputs exist; only remove unresolved values when the caller has reached its final resolution pass.
|
{prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/analytics/notice.py
RENAMED
|
@@ -14,7 +14,7 @@ from prefect.settings import get_current_settings
|
|
|
14
14
|
NOTICE_TEXT = """
|
|
15
15
|
Prefect collects anonymous usage data to improve the product.
|
|
16
16
|
To opt out: set PREFECT_SERVER_ANALYTICS_ENABLED=false on the server, or DO_NOT_TRACK=1 in the client.
|
|
17
|
-
Learn more: https://
|
|
17
|
+
Learn more: https://www.prefect.io/docs/concepts/telemetry
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
20
|
|
{prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/deprecated.py
RENAMED
|
@@ -21,7 +21,7 @@ from typing import TYPE_CHECKING, Any, Callable, Optional, Union
|
|
|
21
21
|
from pydantic import BaseModel
|
|
22
22
|
from typing_extensions import ParamSpec, TypeAlias, TypeVar
|
|
23
23
|
|
|
24
|
-
from prefect.types._datetime import now
|
|
24
|
+
from prefect.types._datetime import _pendulum_call, now
|
|
25
25
|
from prefect.utilities.callables import get_call_parameters
|
|
26
26
|
from prefect.utilities.importtools import (
|
|
27
27
|
AliasedModuleDefinition,
|
|
@@ -96,14 +96,16 @@ def generate_deprecation_message(
|
|
|
96
96
|
if hasattr(PlainDateTime, "to_stdlib")
|
|
97
97
|
else PlainDateTime.from_py_datetime
|
|
98
98
|
)
|
|
99
|
-
|
|
99
|
+
# PlainDateTime requires a naive datetime; the warning only renders
|
|
100
|
+
# month and year, so any tzinfo on start_date is dropped.
|
|
101
|
+
_dt = _pdt_from_dt(start_date.replace(tzinfo=None)).add(months=6)
|
|
100
102
|
end_date = (
|
|
101
103
|
_dt.to_stdlib() if hasattr(_dt, "to_stdlib") else _dt.py_datetime()
|
|
102
104
|
)
|
|
103
105
|
else:
|
|
104
106
|
import pendulum
|
|
105
107
|
|
|
106
|
-
end_date = pendulum.instance(start_date)
|
|
108
|
+
end_date = _pendulum_call(pendulum.instance(start_date), "add", months=6)
|
|
107
109
|
|
|
108
110
|
if when:
|
|
109
111
|
when = " when " + when
|
{prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/compatibility/migration.py
RENAMED
|
@@ -59,7 +59,7 @@ MOVED_IN_V3 = {
|
|
|
59
59
|
"prefect.client:get_client": "prefect.client.orchestration:get_client",
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
upgrade_guide_msg = "Refer to the upgrade guide for more information: https://
|
|
62
|
+
upgrade_guide_msg = "Refer to the upgrade guide for more information: https://www.prefect.io/docs/v3/how-to-guides/migrate/upgrade-agents-to-workers."
|
|
63
63
|
|
|
64
64
|
REMOVED_IN_V3 = {
|
|
65
65
|
"prefect.client.schemas.objects:MinimalDeploymentSchedule": "Use `prefect.client.schemas.actions.DeploymentScheduleCreate` instead.",
|
{prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/_internal/concurrency/services.py
RENAMED
|
@@ -27,6 +27,11 @@ R = TypeVar("R", infer_variance=True)
|
|
|
27
27
|
# Track all active services for fork handling
|
|
28
28
|
_active_services: weakref.WeakSet[_QueueServiceBase[Any]] = weakref.WeakSet()
|
|
29
29
|
|
|
30
|
+
# Services take items that are already queued without leaving the event loop.
|
|
31
|
+
# Other services share the global loop, so a service working through a backlog
|
|
32
|
+
# yields to them after this many items in a row.
|
|
33
|
+
_READY_ITEMS_PER_YIELD = 256
|
|
34
|
+
|
|
30
35
|
|
|
31
36
|
def _reset_services_after_fork():
|
|
32
37
|
"""
|
|
@@ -73,6 +78,7 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
73
78
|
self._started: bool = False
|
|
74
79
|
self._key = hash((self.__class__, *args))
|
|
75
80
|
self._lock = threading.Lock()
|
|
81
|
+
self._ready_items_since_yield = 0
|
|
76
82
|
self._queue_get_thread = WorkerThread(
|
|
77
83
|
# TODO: This thread should not need to be a daemon but when it is not, it
|
|
78
84
|
# can prevent the interpreter from exiting.
|
|
@@ -184,14 +190,37 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
184
190
|
assert self._done_event is not None
|
|
185
191
|
self._done_event.set()
|
|
186
192
|
|
|
193
|
+
async def _get_item(self, timeout: Optional[float] = None) -> Optional[T]:
|
|
194
|
+
"""
|
|
195
|
+
Take the next item from the queue.
|
|
196
|
+
|
|
197
|
+
An item that is already queued is taken on the event loop. Only an empty
|
|
198
|
+
queue waits on the queue thread, which raises `queue.Empty` if `timeout`
|
|
199
|
+
passes first.
|
|
200
|
+
"""
|
|
201
|
+
if self._ready_items_since_yield >= _READY_ITEMS_PER_YIELD:
|
|
202
|
+
self._ready_items_since_yield = 0
|
|
203
|
+
await asyncio.sleep(0)
|
|
204
|
+
|
|
205
|
+
try:
|
|
206
|
+
item = self._queue.get_nowait()
|
|
207
|
+
except queue.Empty:
|
|
208
|
+
pass
|
|
209
|
+
else:
|
|
210
|
+
self._ready_items_since_yield += 1
|
|
211
|
+
return item
|
|
212
|
+
|
|
213
|
+
self._ready_items_since_yield = 0
|
|
214
|
+
return await self._queue_get_thread.submit(
|
|
215
|
+
create_call(self._queue.get, timeout=timeout)
|
|
216
|
+
).aresult()
|
|
217
|
+
|
|
187
218
|
async def _main_loop(self) -> None:
|
|
188
219
|
last_log_time = 0
|
|
189
220
|
log_interval = 4 # log every 4 seconds
|
|
190
221
|
|
|
191
222
|
while True:
|
|
192
|
-
item: Optional[T] = await self.
|
|
193
|
-
create_call(self._queue.get)
|
|
194
|
-
).aresult()
|
|
223
|
+
item: Optional[T] = await self._get_item()
|
|
195
224
|
|
|
196
225
|
if self._stopped:
|
|
197
226
|
current_time = asyncio.get_event_loop().time()
|
|
@@ -242,8 +271,9 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
242
271
|
|
|
243
272
|
self._stop(at_exit=at_exit)
|
|
244
273
|
|
|
245
|
-
|
|
246
|
-
|
|
274
|
+
# `_done_event` is unset if the service never started in this process, e.g.
|
|
275
|
+
# in a child process after `reset_for_fork`
|
|
276
|
+
if self._done_event is None or self._done_event.is_set():
|
|
247
277
|
future: concurrent.futures.Future[bool] = concurrent.futures.Future()
|
|
248
278
|
future.set_result(False)
|
|
249
279
|
return future
|
|
@@ -500,9 +530,7 @@ class BatchedQueueService(QueueService[T]):
|
|
|
500
530
|
deadline = get_deadline(self.min_interval)
|
|
501
531
|
while batch_size < self.max_batch_size:
|
|
502
532
|
try:
|
|
503
|
-
item = await self.
|
|
504
|
-
create_call(self._queue.get, timeout=get_timeout(deadline))
|
|
505
|
-
).aresult()
|
|
533
|
+
item = await self._get_item(timeout=get_timeout(deadline))
|
|
506
534
|
|
|
507
535
|
if item is None:
|
|
508
536
|
done = True
|
|
@@ -37,6 +37,7 @@ if TYPE_CHECKING:
|
|
|
37
37
|
ResultSerializer = Union[Serializer, str]
|
|
38
38
|
LITERAL_TYPES: set[type] = {type(None), bool, UUID}
|
|
39
39
|
R = TypeVar("R")
|
|
40
|
+
_LEGACY_RESULT_BLOB_KEYS = {"serializer", "data", "prefect_version", "expiration"}
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
class ResultRecordMetadata(BaseModel):
|
|
@@ -173,16 +174,19 @@ class ResultRecord(BaseModel, Generic[R]):
|
|
|
173
174
|
if isinstance(value, dict):
|
|
174
175
|
if TYPE_CHECKING: # TODO: # isintance doesn't accept generic parameters
|
|
175
176
|
value = cast(dict[str, Any], value)
|
|
176
|
-
|
|
177
|
+
# Only coerce the exact legacy `PersistedResultBlob` shape so that raw
|
|
178
|
+
# JSON results that happen to contain a `data` key aren't misread
|
|
179
|
+
if (
|
|
180
|
+
{"data", "serializer"} <= value.keys() <= _LEGACY_RESULT_BLOB_KEYS
|
|
181
|
+
and isinstance(value["data"], str)
|
|
182
|
+
and isinstance(value["serializer"], dict)
|
|
183
|
+
):
|
|
177
184
|
value["result"] = value.pop("data")
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
value["metadata"]["serializer"] = value.pop("serializer")
|
|
184
|
-
if "prefect_version" in value:
|
|
185
|
-
value["metadata"]["prefect_version"] = value.pop("prefect_version")
|
|
185
|
+
value["metadata"] = {"serializer": value.pop("serializer")}
|
|
186
|
+
if "expiration" in value:
|
|
187
|
+
value["metadata"]["expiration"] = value.pop("expiration")
|
|
188
|
+
if "prefect_version" in value:
|
|
189
|
+
value["metadata"]["prefect_version"] = value.pop("prefect_version")
|
|
186
190
|
return value
|
|
187
191
|
|
|
188
192
|
def serialize_metadata(self) -> bytes:
|
|
@@ -34,7 +34,7 @@ logger: "logging.Logger" = get_logger("artifacts")
|
|
|
34
34
|
class Artifact(ArtifactRequest):
|
|
35
35
|
"""
|
|
36
36
|
An artifact is a piece of data that is created by a flow or task run.
|
|
37
|
-
https://
|
|
37
|
+
https://www.prefect.io/docs/latest/develop/artifacts
|
|
38
38
|
|
|
39
39
|
Arguments:
|
|
40
40
|
type: A string identifying the type of artifact.
|
|
@@ -47,7 +47,7 @@ class AbstractAppriseNotificationBlock(NotificationBlock, ABC):
|
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
self._apprise_client = Apprise(asset=prefect_app_data)
|
|
50
|
-
self._apprise_client.add(
|
|
50
|
+
self._apprise_client.add(url.get_secret_value()) # pyright: ignore[reportUnknownMemberType]
|
|
51
51
|
|
|
52
52
|
def block_initialization(self) -> None:
|
|
53
53
|
self._start_apprise_client(getattr(self, "url"))
|
|
@@ -104,7 +104,7 @@ class AppriseNotificationBlock(AbstractAppriseNotificationBlock, ABC):
|
|
|
104
104
|
"""
|
|
105
105
|
|
|
106
106
|
_documentation_url = HttpUrl(
|
|
107
|
-
"https://
|
|
107
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
108
108
|
)
|
|
109
109
|
url: SecretStr = Field(
|
|
110
110
|
default=...,
|
|
@@ -173,7 +173,7 @@ class SlackWebhook(AppriseNotificationBlock):
|
|
|
173
173
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/slack.png"
|
|
174
174
|
)
|
|
175
175
|
_documentation_url = HttpUrl(
|
|
176
|
-
"https://
|
|
176
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
177
177
|
)
|
|
178
178
|
|
|
179
179
|
url: SecretStr = Field(
|
|
@@ -270,7 +270,7 @@ class MicrosoftTeamsWebhook(AppriseNotificationBlock):
|
|
|
270
270
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/microsoft-teams.png"
|
|
271
271
|
)
|
|
272
272
|
_documentation_url = HttpUrl(
|
|
273
|
-
"https://
|
|
273
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
274
274
|
)
|
|
275
275
|
|
|
276
276
|
url: SecretStr = Field(
|
|
@@ -332,7 +332,7 @@ class PagerDutyWebHook(AbstractAppriseNotificationBlock):
|
|
|
332
332
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/pagerduty.png"
|
|
333
333
|
)
|
|
334
334
|
_documentation_url = HttpUrl(
|
|
335
|
-
"https://
|
|
335
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
336
336
|
)
|
|
337
337
|
|
|
338
338
|
# PagerDuty requires a valid severity level from its PAGERDUTY_SEVERITY_MAP
|
|
@@ -488,7 +488,7 @@ class TwilioSMS(AbstractAppriseNotificationBlock):
|
|
|
488
488
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/twilio.png"
|
|
489
489
|
) # noqa
|
|
490
490
|
_documentation_url = HttpUrl(
|
|
491
|
-
"https://
|
|
491
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
492
492
|
)
|
|
493
493
|
|
|
494
494
|
account_sid: str = Field(
|
|
@@ -563,7 +563,7 @@ class OpsgenieWebhook(AbstractAppriseNotificationBlock):
|
|
|
563
563
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/opsgenie.png"
|
|
564
564
|
)
|
|
565
565
|
_documentation_url = HttpUrl(
|
|
566
|
-
"https://
|
|
566
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
567
567
|
)
|
|
568
568
|
|
|
569
569
|
apikey: SecretStr = Field(
|
|
@@ -688,7 +688,7 @@ class MattermostWebhook(AbstractAppriseNotificationBlock):
|
|
|
688
688
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/mattermost.png"
|
|
689
689
|
)
|
|
690
690
|
_documentation_url = HttpUrl(
|
|
691
|
-
"https://
|
|
691
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
692
692
|
)
|
|
693
693
|
|
|
694
694
|
hostname: str = Field(
|
|
@@ -790,7 +790,7 @@ class DiscordWebhook(AbstractAppriseNotificationBlock):
|
|
|
790
790
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/discord.png"
|
|
791
791
|
)
|
|
792
792
|
_documentation_url = HttpUrl(
|
|
793
|
-
"https://
|
|
793
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
794
794
|
)
|
|
795
795
|
|
|
796
796
|
webhook_id: SecretStr = Field(
|
|
@@ -895,7 +895,7 @@ class CustomWebhookNotificationBlock(NotificationBlock):
|
|
|
895
895
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/webhook.png"
|
|
896
896
|
)
|
|
897
897
|
_documentation_url = HttpUrl(
|
|
898
|
-
"https://
|
|
898
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
899
899
|
)
|
|
900
900
|
|
|
901
901
|
name: str = Field(title="Name", description="Name of the webhook.")
|
|
@@ -1065,7 +1065,7 @@ class SendgridEmail(AbstractAppriseNotificationBlock):
|
|
|
1065
1065
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/email.png"
|
|
1066
1066
|
)
|
|
1067
1067
|
_documentation_url = HttpUrl(
|
|
1068
|
-
"https://
|
|
1068
|
+
"https://www.prefect.io/docs/latest/automate/events/automations-triggers#sending-notifications-with-automations"
|
|
1069
1069
|
)
|
|
1070
1070
|
|
|
1071
1071
|
api_key: SecretStr = Field(
|
|
@@ -1115,9 +1115,7 @@ class SendgridEmail(AbstractAppriseNotificationBlock):
|
|
|
1115
1115
|
"""Update apprise client with current to_emails before sending."""
|
|
1116
1116
|
if hasattr(self, "_apprise_client") and self._apprise_client:
|
|
1117
1117
|
self._apprise_client.clear()
|
|
1118
|
-
self._apprise_client.add(
|
|
1119
|
-
servers=self._build_sendgrid_url().get_secret_value()
|
|
1120
|
-
)
|
|
1118
|
+
self._apprise_client.add(self._build_sendgrid_url().get_secret_value())
|
|
1121
1119
|
|
|
1122
1120
|
async def anotify(
|
|
1123
1121
|
self,
|
|
@@ -47,7 +47,7 @@ class Secret(Block, Generic[T]):
|
|
|
47
47
|
_logo_url = HttpUrl(
|
|
48
48
|
"https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/secret.png"
|
|
49
49
|
)
|
|
50
|
-
_documentation_url = HttpUrl("https://
|
|
50
|
+
_documentation_url = HttpUrl("https://www.prefect.io/docs/latest/develop/blocks")
|
|
51
51
|
_description = "A block that represents a secret value. The value stored in this block will be obfuscated when this block is viewed or edited in the UI."
|
|
52
52
|
|
|
53
53
|
value: Union[SecretStr, PydanticSecret[T]] = Field(
|
|
@@ -33,7 +33,7 @@ class Webhook(Block):
|
|
|
33
33
|
_block_type_name = "Webhook"
|
|
34
34
|
_logo_url = "https://raw.githubusercontent.com/PrefectHQ/prefect/420d0d6a78bb6df1fc18bcf188fdad43c1d22ea9/assets/block-logos/webhook.png" # type: ignore
|
|
35
35
|
_documentation_url = HttpUrl(
|
|
36
|
-
"https://
|
|
36
|
+
"https://www.prefect.io/docs/latest/automate/events/webhook-triggers"
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
method: Literal["GET", "POST", "PUT", "PATCH", "DELETE"] = Field(
|
|
@@ -4,6 +4,7 @@ from copy import deepcopy
|
|
|
4
4
|
from dataclasses import dataclass, field, replace
|
|
5
5
|
from logging import Logger
|
|
6
6
|
from pathlib import Path
|
|
7
|
+
from types import CodeType
|
|
7
8
|
from typing import (
|
|
8
9
|
TYPE_CHECKING,
|
|
9
10
|
Any,
|
|
@@ -45,9 +46,10 @@ def _register_stable_transforms() -> None:
|
|
|
45
46
|
if sys.modules.get("pandas") is not None:
|
|
46
47
|
import pandas as pd # pyright: ignore
|
|
47
48
|
|
|
48
|
-
STABLE_TRANSFORMS[pd.DataFrame] = lambda df:
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
STABLE_TRANSFORMS[pd.DataFrame] = lambda df: ( # pyright: ignore
|
|
50
|
+
list(df.columns),
|
|
51
|
+
[df.iloc[:, i] for i in range(len(df.columns))],
|
|
52
|
+
)
|
|
51
53
|
|
|
52
54
|
|
|
53
55
|
@dataclass
|
|
@@ -282,6 +284,19 @@ class _None(CachePolicy):
|
|
|
282
284
|
return other
|
|
283
285
|
|
|
284
286
|
|
|
287
|
+
def _normalize_code_location(code: CodeType) -> CodeType:
|
|
288
|
+
"""Remove compilation locations, including those in nested code constants."""
|
|
289
|
+
return code.replace(
|
|
290
|
+
co_filename="",
|
|
291
|
+
co_firstlineno=1,
|
|
292
|
+
co_linetable=b"",
|
|
293
|
+
co_consts=tuple(
|
|
294
|
+
_normalize_code_location(const) if isinstance(const, CodeType) else const
|
|
295
|
+
for const in code.co_consts
|
|
296
|
+
),
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
|
|
285
300
|
@dataclass
|
|
286
301
|
class TaskSource(CachePolicy):
|
|
287
302
|
"""
|
|
@@ -312,7 +327,10 @@ class TaskSource(CachePolicy):
|
|
|
312
327
|
lines = inspect.getsource(task_ctx.task.fn.__class__)
|
|
313
328
|
except OSError as exc:
|
|
314
329
|
if "source code" in str(exc):
|
|
315
|
-
|
|
330
|
+
return hash_objects(
|
|
331
|
+
_normalize_code_location(task_ctx.task.fn.__code__),
|
|
332
|
+
raise_on_failure=True,
|
|
333
|
+
)
|
|
316
334
|
else:
|
|
317
335
|
raise
|
|
318
336
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Asynchronous client implementation for communicating with the [Prefect REST API](https://
|
|
2
|
+
Asynchronous client implementation for communicating with the [Prefect REST API](https://www.prefect.io/docs/v3/api-ref/rest-api/).
|
|
3
3
|
|
|
4
4
|
Explore the client by communicating with an in-memory webserver - no setup required:
|
|
5
5
|
|
{prefect_client-3.8.9.dev7 → prefect_client-3.9.1}/src/prefect/client/orchestration/__init__.py
RENAMED
|
@@ -296,7 +296,7 @@ class PrefectClient(
|
|
|
296
296
|
EventAsyncClient,
|
|
297
297
|
):
|
|
298
298
|
"""
|
|
299
|
-
An asynchronous client for interacting with the [Prefect REST API](https://
|
|
299
|
+
An asynchronous client for interacting with the [Prefect REST API](https://www.prefect.io/docs/v3/api-ref/rest-api/).
|
|
300
300
|
|
|
301
301
|
Args:
|
|
302
302
|
api: the REST API URL or FastAPI application to connect to
|
|
@@ -1243,7 +1243,7 @@ class SyncPrefectClient(
|
|
|
1243
1243
|
EventClient,
|
|
1244
1244
|
):
|
|
1245
1245
|
"""
|
|
1246
|
-
A synchronous client for interacting with the [Prefect REST API](https://
|
|
1246
|
+
A synchronous client for interacting with the [Prefect REST API](https://www.prefect.io/docs/v3/api-ref/rest-api/).
|
|
1247
1247
|
|
|
1248
1248
|
Args:
|
|
1249
1249
|
api: the REST API URL or FastAPI application to connect to
|
|
@@ -525,6 +525,8 @@ class WorkPoolAsyncClient(BaseAsyncClient):
|
|
|
525
525
|
json=work_pool.model_dump(mode="json", exclude_unset=True),
|
|
526
526
|
)
|
|
527
527
|
except HTTPStatusError as e:
|
|
528
|
+
if e.response.status_code == 403 and "plan does not support" in str(e):
|
|
529
|
+
raise ObjectUnsupported(http_exc=e) from e
|
|
528
530
|
if e.response.status_code == 409:
|
|
529
531
|
if overwrite:
|
|
530
532
|
existing_work_pool = await self.read_work_pool(
|
|
@@ -3,7 +3,7 @@ Async and thread safe models for passing runtime context data.
|
|
|
3
3
|
|
|
4
4
|
These contexts should never be directly mutated by the user.
|
|
5
5
|
|
|
6
|
-
For more user-accessible information about the current run, see [`prefect.runtime`](https://
|
|
6
|
+
For more user-accessible information about the current run, see [`prefect.runtime`](https://www.prefect.io/docs/v3/api-ref/python/prefect-runtime-flow_run).
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import asyncio
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Core primitives for managing Prefect deployments via `prefect deploy`, providing a minimally opinionated
|
|
3
3
|
build system for managing flows and deployments.
|
|
4
4
|
|
|
5
|
-
To get started, follow along with [the deployments tutorial](https://
|
|
5
|
+
To get started, follow along with [the deployments tutorial](https://www.prefect.io/docs/v3/how-to-guides/deployments/create-deployments).
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|