prefect-client 3.4.2.dev1__tar.gz → 3.4.2.dev2__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.4.2.dev1 → prefect_client-3.4.2.dev2}/PKG-INFO +1 -1
- prefect_client-3.4.2.dev2/src/prefect/_build_info.py +5 -0
- prefect_client-3.4.2.dev2/src/prefect/_internal/compatibility/blocks.py +27 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/results.py +24 -35
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/task_worker.py +95 -14
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/tasks.py +6 -2
- prefect_client-3.4.2.dev1/src/prefect/_build_info.py +0 -5
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/.gitignore +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/LICENSE +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/README.md +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/pyproject.toml +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/__main__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/lineage.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_result_records.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_versioning.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_waiters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/agent.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/automations.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/base.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/context.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/engine.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/related.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/flows.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/futures.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/main.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/plugins.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/py.typed +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/_observers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/submit.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runner/utils.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/schedules.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/serializers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/states.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/logging.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/processors.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/telemetry/services.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/transactions.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/types/names.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/_ast.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/_engine.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/_git.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/callables.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/variables.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/workers/utilities.py +0 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
import inspect
|
2
|
+
from typing import Any, Union
|
3
|
+
|
4
|
+
from prefect.filesystems import NullFileSystem, WritableFileSystem
|
5
|
+
|
6
|
+
|
7
|
+
async def call_explicitly_async_block_method(
|
8
|
+
block: Union[WritableFileSystem, NullFileSystem],
|
9
|
+
method: str,
|
10
|
+
args: tuple[Any, ...],
|
11
|
+
kwargs: dict[str, Any],
|
12
|
+
) -> Any:
|
13
|
+
"""
|
14
|
+
TODO: remove this once we have explicit async methods on all storage blocks
|
15
|
+
|
16
|
+
see https://github.com/PrefectHQ/prefect/issues/15008
|
17
|
+
"""
|
18
|
+
if hasattr(block, f"a{method}"): # explicit async method
|
19
|
+
return await getattr(block, f"a{method}")(*args, **kwargs)
|
20
|
+
elif hasattr(getattr(block, method, None), "aio"): # sync_compatible
|
21
|
+
return await getattr(block, method).aio(block, *args, **kwargs)
|
22
|
+
else: # should not happen in prefect, but users can override impls
|
23
|
+
maybe_coro = getattr(block, method)(*args, **kwargs)
|
24
|
+
if inspect.isawaitable(maybe_coro):
|
25
|
+
return await maybe_coro
|
26
|
+
else:
|
27
|
+
return maybe_coro
|
@@ -1,11 +1,11 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import asyncio
|
4
|
-
import inspect
|
5
4
|
import os
|
6
5
|
import socket
|
7
6
|
import threading
|
8
7
|
import uuid
|
8
|
+
from datetime import datetime
|
9
9
|
from functools import partial
|
10
10
|
from operator import methodcaller
|
11
11
|
from pathlib import Path
|
@@ -34,6 +34,8 @@ from typing_extensions import ParamSpec, Self
|
|
34
34
|
import prefect
|
35
35
|
import prefect.types._datetime
|
36
36
|
from prefect._internal.compatibility.async_dispatch import async_dispatch
|
37
|
+
from prefect._internal.compatibility.blocks import call_explicitly_async_block_method
|
38
|
+
from prefect._internal.compatibility.deprecated import deprecated_callable
|
37
39
|
from prefect._internal.concurrency.event_loop import get_running_loop
|
38
40
|
from prefect._result_records import R, ResultRecord, ResultRecordMetadata
|
39
41
|
from prefect.blocks.core import Block
|
@@ -285,29 +287,6 @@ def _format_user_supplied_storage_key(key: str) -> str:
|
|
285
287
|
return key.format(**runtime_vars, parameters=prefect.runtime.task_run.parameters)
|
286
288
|
|
287
289
|
|
288
|
-
async def _call_explicitly_async_block_method(
|
289
|
-
block: WritableFileSystem | NullFileSystem,
|
290
|
-
method: str,
|
291
|
-
args: tuple[Any, ...],
|
292
|
-
kwargs: dict[str, Any],
|
293
|
-
) -> Any:
|
294
|
-
"""
|
295
|
-
TODO: remove this once we have explicit async methods on all storage blocks
|
296
|
-
|
297
|
-
see https://github.com/PrefectHQ/prefect/issues/15008
|
298
|
-
"""
|
299
|
-
if hasattr(block, f"a{method}"): # explicit async method
|
300
|
-
return await getattr(block, f"a{method}")(*args, **kwargs)
|
301
|
-
elif hasattr(getattr(block, method, None), "aio"): # sync_compatible
|
302
|
-
return await getattr(block, method).aio(block, *args, **kwargs)
|
303
|
-
else: # should not happen in prefect, but users can override impls
|
304
|
-
maybe_coro = getattr(block, method)(*args, **kwargs)
|
305
|
-
if inspect.isawaitable(maybe_coro):
|
306
|
-
return await maybe_coro
|
307
|
-
else:
|
308
|
-
return maybe_coro
|
309
|
-
|
310
|
-
|
311
290
|
T = TypeVar("T")
|
312
291
|
|
313
292
|
|
@@ -505,7 +484,7 @@ class ResultStore(BaseModel):
|
|
505
484
|
# TODO: Add an `exists` method to commonly used storage blocks
|
506
485
|
# so the entire payload doesn't need to be read
|
507
486
|
try:
|
508
|
-
metadata_content = await
|
487
|
+
metadata_content = await call_explicitly_async_block_method(
|
509
488
|
self.metadata_storage, "read_path", (key,), {}
|
510
489
|
)
|
511
490
|
if metadata_content is None:
|
@@ -516,7 +495,7 @@ class ResultStore(BaseModel):
|
|
516
495
|
return False
|
517
496
|
else:
|
518
497
|
try:
|
519
|
-
content = await
|
498
|
+
content = await call_explicitly_async_block_method(
|
520
499
|
self.result_storage, "read_path", (key,), {}
|
521
500
|
)
|
522
501
|
if content is None:
|
@@ -601,7 +580,7 @@ class ResultStore(BaseModel):
|
|
601
580
|
self.result_storage = await aget_default_result_storage()
|
602
581
|
|
603
582
|
if self.metadata_storage is not None:
|
604
|
-
metadata_content = await
|
583
|
+
metadata_content = await call_explicitly_async_block_method(
|
605
584
|
self.metadata_storage,
|
606
585
|
"read_path",
|
607
586
|
(key,),
|
@@ -611,7 +590,7 @@ class ResultStore(BaseModel):
|
|
611
590
|
assert metadata.storage_key is not None, (
|
612
591
|
"Did not find storage key in metadata"
|
613
592
|
)
|
614
|
-
result_content = await
|
593
|
+
result_content = await call_explicitly_async_block_method(
|
615
594
|
self.result_storage,
|
616
595
|
"read_path",
|
617
596
|
(metadata.storage_key,),
|
@@ -624,7 +603,7 @@ class ResultStore(BaseModel):
|
|
624
603
|
)
|
625
604
|
await emit_result_read_event(self, resolved_key_path)
|
626
605
|
else:
|
627
|
-
content = await
|
606
|
+
content = await call_explicitly_async_block_method(
|
628
607
|
self.result_storage,
|
629
608
|
"read_path",
|
630
609
|
(key,),
|
@@ -806,13 +785,13 @@ class ResultStore(BaseModel):
|
|
806
785
|
|
807
786
|
# If metadata storage is configured, write result and metadata separately
|
808
787
|
if self.metadata_storage is not None:
|
809
|
-
await
|
788
|
+
await call_explicitly_async_block_method(
|
810
789
|
self.result_storage,
|
811
790
|
"write_path",
|
812
791
|
(result_record.metadata.storage_key,),
|
813
792
|
{"content": result_record.serialize_result()},
|
814
793
|
)
|
815
|
-
await
|
794
|
+
await call_explicitly_async_block_method(
|
816
795
|
self.metadata_storage,
|
817
796
|
"write_path",
|
818
797
|
(base_key,),
|
@@ -821,7 +800,7 @@ class ResultStore(BaseModel):
|
|
821
800
|
await emit_result_write_event(self, result_record.metadata.storage_key)
|
822
801
|
# Otherwise, write the result metadata and result together
|
823
802
|
else:
|
824
|
-
await
|
803
|
+
await call_explicitly_async_block_method(
|
825
804
|
self.result_storage,
|
826
805
|
"write_path",
|
827
806
|
(result_record.metadata.storage_key,),
|
@@ -998,6 +977,11 @@ class ResultStore(BaseModel):
|
|
998
977
|
|
999
978
|
# TODO: These two methods need to find a new home
|
1000
979
|
|
980
|
+
@deprecated_callable(
|
981
|
+
start_date=datetime(2025, 5, 10),
|
982
|
+
end_date=datetime(2025, 11, 10),
|
983
|
+
help="Use `store_parameters` from `prefect.task_worker` instead.",
|
984
|
+
)
|
1001
985
|
@sync_compatible
|
1002
986
|
async def store_parameters(self, identifier: UUID, parameters: dict[str, Any]):
|
1003
987
|
record = ResultRecord(
|
@@ -1007,21 +991,26 @@ class ResultStore(BaseModel):
|
|
1007
991
|
),
|
1008
992
|
)
|
1009
993
|
|
1010
|
-
await
|
994
|
+
await call_explicitly_async_block_method(
|
1011
995
|
self.result_storage,
|
1012
996
|
"write_path",
|
1013
997
|
(f"parameters/{identifier}",),
|
1014
998
|
{"content": record.serialize()},
|
1015
999
|
)
|
1016
1000
|
|
1001
|
+
@deprecated_callable(
|
1002
|
+
start_date=datetime(2025, 5, 10),
|
1003
|
+
end_date=datetime(2025, 11, 10),
|
1004
|
+
help="Use `read_parameters` from `prefect.task_worker` instead.",
|
1005
|
+
)
|
1017
1006
|
@sync_compatible
|
1018
1007
|
async def read_parameters(self, identifier: UUID) -> dict[str, Any]:
|
1019
1008
|
if self.result_storage is None:
|
1020
1009
|
raise ValueError(
|
1021
1010
|
"Result store is not configured - must have a result storage block to read parameters"
|
1022
1011
|
)
|
1023
|
-
record: ResultRecord[Any] = ResultRecord.deserialize(
|
1024
|
-
await
|
1012
|
+
record: ResultRecord[Any] = ResultRecord[Any].deserialize(
|
1013
|
+
await call_explicitly_async_block_method(
|
1025
1014
|
self.result_storage,
|
1026
1015
|
"read_path",
|
1027
1016
|
(f"parameters/{identifier}",),
|
@@ -22,17 +22,20 @@ from websockets.exceptions import InvalidStatus
|
|
22
22
|
|
23
23
|
import prefect.types._datetime
|
24
24
|
from prefect import Task
|
25
|
+
from prefect._internal.compatibility.blocks import call_explicitly_async_block_method
|
25
26
|
from prefect._internal.concurrency.api import create_call, from_sync
|
26
27
|
from prefect.cache_policies import DEFAULT, NO_CACHE
|
27
28
|
from prefect.client.orchestration import get_client
|
28
29
|
from prefect.client.schemas.objects import TaskRun
|
29
30
|
from prefect.client.subscriptions import Subscription
|
30
31
|
from prefect.logging.loggers import get_logger
|
31
|
-
from prefect.results import
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
from prefect.results import (
|
33
|
+
ResultRecord,
|
34
|
+
ResultRecordMetadata,
|
35
|
+
ResultStore,
|
36
|
+
get_or_create_default_task_scheduling_storage,
|
35
37
|
)
|
38
|
+
from prefect.settings import get_current_settings
|
36
39
|
from prefect.states import Pending
|
37
40
|
from prefect.task_engine import run_task_async, run_task_sync
|
38
41
|
from prefect.types import DateTime
|
@@ -43,6 +46,7 @@ from prefect.utilities.processutils import (
|
|
43
46
|
_register_signal, # pyright: ignore[reportPrivateUsage]
|
44
47
|
)
|
45
48
|
from prefect.utilities.services import start_client_metrics_server
|
49
|
+
from prefect.utilities.timeout import timeout_async
|
46
50
|
from prefect.utilities.urls import url_for
|
47
51
|
|
48
52
|
if TYPE_CHECKING:
|
@@ -170,9 +174,13 @@ class TaskWorker:
|
|
170
174
|
sys.exit(0)
|
171
175
|
|
172
176
|
@sync_compatible
|
173
|
-
async def start(self) -> None:
|
177
|
+
async def start(self, timeout: Optional[float] = None) -> None:
|
174
178
|
"""
|
175
179
|
Starts a task worker, which runs the tasks provided in the constructor.
|
180
|
+
|
181
|
+
Args:
|
182
|
+
timeout: If provided, the task worker will exit after the given number of
|
183
|
+
seconds. Defaults to None, meaning the task worker will run indefinitely.
|
176
184
|
"""
|
177
185
|
_register_signal(signal.SIGTERM, self.handle_sigterm)
|
178
186
|
|
@@ -181,14 +189,16 @@ class TaskWorker:
|
|
181
189
|
async with asyncnullcontext() if self.started else self:
|
182
190
|
logger.info("Starting task worker...")
|
183
191
|
try:
|
184
|
-
|
192
|
+
with timeout_async(timeout):
|
193
|
+
await self._subscribe_to_task_scheduling()
|
185
194
|
except InvalidStatus as exc:
|
186
195
|
if exc.response.status_code == 403:
|
187
196
|
logger.error(
|
188
197
|
"403: Could not establish a connection to the `/task_runs/subscriptions/scheduled`"
|
189
|
-
f" endpoint found at:\n\n {
|
190
|
-
"\n\nPlease double-check the values of
|
191
|
-
" `
|
198
|
+
f" endpoint found at:\n\n {get_current_settings().api.url}"
|
199
|
+
"\n\nPlease double-check the values of"
|
200
|
+
" `PREFECT_API_AUTH_STRING` and `PREFECT_SERVER_API_AUTH_STRING` if running a Prefect server "
|
201
|
+
"or `PREFECT_API_URL` and `PREFECT_API_KEY` environment variables if using Prefect Cloud."
|
192
202
|
)
|
193
203
|
else:
|
194
204
|
raise
|
@@ -228,7 +238,7 @@ class TaskWorker:
|
|
228
238
|
return True
|
229
239
|
|
230
240
|
async def _subscribe_to_task_scheduling(self):
|
231
|
-
base_url =
|
241
|
+
base_url = get_current_settings().api.url
|
232
242
|
if base_url is None:
|
233
243
|
raise ValueError(
|
234
244
|
"`PREFECT_API_URL` must be set to use the task worker. "
|
@@ -282,7 +292,7 @@ class TaskWorker:
|
|
282
292
|
task = next((t for t in self.tasks if t.task_key == task_run.task_key), None)
|
283
293
|
|
284
294
|
if not task:
|
285
|
-
if
|
295
|
+
if get_current_settings().tasks.scheduling.delete_failed_submissions:
|
286
296
|
logger.warning(
|
287
297
|
f"Task {task_run.name!r} not found in task worker registry."
|
288
298
|
)
|
@@ -298,12 +308,18 @@ class TaskWorker:
|
|
298
308
|
run_context = None
|
299
309
|
if should_try_to_read_parameters(task, task_run):
|
300
310
|
parameters_id = task_run.state.state_details.task_parameters_id
|
311
|
+
if parameters_id is None:
|
312
|
+
logger.warning(
|
313
|
+
f"Task run {task_run.id!r} has no parameters ID. Skipping parameter retrieval."
|
314
|
+
)
|
315
|
+
return
|
316
|
+
|
301
317
|
task.persist_result = True
|
302
318
|
store = await ResultStore(
|
303
319
|
result_storage=await get_or_create_default_task_scheduling_storage()
|
304
320
|
).update_for_task(task)
|
305
321
|
try:
|
306
|
-
run_data: dict[str, Any] = await
|
322
|
+
run_data: dict[str, Any] = await read_parameters(store, parameters_id)
|
307
323
|
parameters = run_data.get("parameters", {})
|
308
324
|
wait_for = run_data.get("wait_for", [])
|
309
325
|
run_context = run_data.get("context", None)
|
@@ -312,7 +328,7 @@ class TaskWorker:
|
|
312
328
|
f"Failed to read parameters for task run {task_run.id!r}",
|
313
329
|
exc_info=exc,
|
314
330
|
)
|
315
|
-
if
|
331
|
+
if get_current_settings().tasks.scheduling.delete_failed_submissions:
|
316
332
|
logger.info(
|
317
333
|
f"Deleting task run {task_run.id!r} because it failed to submit"
|
318
334
|
)
|
@@ -421,6 +437,7 @@ async def serve(
|
|
421
437
|
*tasks: Task[P, R],
|
422
438
|
limit: Optional[int] = 10,
|
423
439
|
status_server_port: Optional[int] = None,
|
440
|
+
timeout: Optional[float] = None,
|
424
441
|
):
|
425
442
|
"""Serve the provided tasks so that their runs may be submitted to
|
426
443
|
and executed in the engine. Tasks do not need to be within a flow run context to be
|
@@ -434,6 +451,8 @@ async def serve(
|
|
434
451
|
- status_server_port: An optional port on which to start an HTTP server
|
435
452
|
exposing status information about the task worker. If not provided, no
|
436
453
|
status server will run.
|
454
|
+
- timeout: If provided, the task worker will exit after the given number of
|
455
|
+
seconds. Defaults to None, meaning the task worker will run indefinitely.
|
437
456
|
|
438
457
|
Example:
|
439
458
|
```python
|
@@ -469,7 +488,13 @@ async def serve(
|
|
469
488
|
status_server_task = loop.create_task(server.serve())
|
470
489
|
|
471
490
|
try:
|
472
|
-
await task_worker.start()
|
491
|
+
await task_worker.start(timeout=timeout)
|
492
|
+
|
493
|
+
except TimeoutError:
|
494
|
+
if timeout is not None:
|
495
|
+
logger.info(f"Task worker timed out after {timeout} seconds. Exiting...")
|
496
|
+
else:
|
497
|
+
raise
|
473
498
|
|
474
499
|
except BaseExceptionGroup as exc: # novermin
|
475
500
|
exceptions = exc.exceptions
|
@@ -492,3 +517,59 @@ async def serve(
|
|
492
517
|
await status_server_task
|
493
518
|
except asyncio.CancelledError:
|
494
519
|
pass
|
520
|
+
|
521
|
+
|
522
|
+
async def store_parameters(
|
523
|
+
result_store: ResultStore, identifier: UUID, parameters: dict[str, Any]
|
524
|
+
) -> None:
|
525
|
+
"""Store parameters for a task run in the result store.
|
526
|
+
|
527
|
+
Args:
|
528
|
+
result_store: The result store to store the parameters in.
|
529
|
+
identifier: The identifier of the task run.
|
530
|
+
parameters: The parameters to store.
|
531
|
+
"""
|
532
|
+
if result_store.result_storage is None:
|
533
|
+
raise ValueError(
|
534
|
+
"Result store is not configured - must have a result storage block to store parameters"
|
535
|
+
)
|
536
|
+
record = ResultRecord(
|
537
|
+
result=parameters,
|
538
|
+
metadata=ResultRecordMetadata(
|
539
|
+
serializer=result_store.serializer, storage_key=str(identifier)
|
540
|
+
),
|
541
|
+
)
|
542
|
+
|
543
|
+
await call_explicitly_async_block_method(
|
544
|
+
result_store.result_storage,
|
545
|
+
"write_path",
|
546
|
+
(f"parameters/{identifier}",),
|
547
|
+
{"content": record.serialize()},
|
548
|
+
)
|
549
|
+
|
550
|
+
|
551
|
+
async def read_parameters(
|
552
|
+
result_store: ResultStore, identifier: UUID
|
553
|
+
) -> dict[str, Any]:
|
554
|
+
"""Read parameters for a task run from the result store.
|
555
|
+
|
556
|
+
Args:
|
557
|
+
result_store: The result store to read the parameters from.
|
558
|
+
identifier: The identifier of the task run.
|
559
|
+
|
560
|
+
Returns:
|
561
|
+
The parameters for the task run.
|
562
|
+
"""
|
563
|
+
if result_store.result_storage is None:
|
564
|
+
raise ValueError(
|
565
|
+
"Result store is not configured - must have a result storage block to read parameters"
|
566
|
+
)
|
567
|
+
record: ResultRecord[Any] = ResultRecord[Any].deserialize(
|
568
|
+
await call_explicitly_async_block_method(
|
569
|
+
result_store.result_storage,
|
570
|
+
"read_path",
|
571
|
+
(f"parameters/{identifier}",),
|
572
|
+
{},
|
573
|
+
)
|
574
|
+
)
|
575
|
+
return record.result
|
@@ -810,6 +810,8 @@ class Task(Generic[P, R]):
|
|
810
810
|
# store parameters for background tasks so that task worker
|
811
811
|
# can retrieve them at runtime
|
812
812
|
if deferred and (parameters or wait_for):
|
813
|
+
from prefect.task_worker import store_parameters
|
814
|
+
|
813
815
|
parameters_id = uuid4()
|
814
816
|
state.state_details.task_parameters_id = parameters_id
|
815
817
|
|
@@ -825,7 +827,7 @@ class Task(Generic[P, R]):
|
|
825
827
|
data["parameters"] = parameters
|
826
828
|
if wait_for:
|
827
829
|
data["wait_for"] = wait_for
|
828
|
-
await
|
830
|
+
await store_parameters(store, parameters_id, data)
|
829
831
|
|
830
832
|
# collect task inputs
|
831
833
|
task_inputs = {
|
@@ -911,6 +913,8 @@ class Task(Generic[P, R]):
|
|
911
913
|
# store parameters for background tasks so that task worker
|
912
914
|
# can retrieve them at runtime
|
913
915
|
if deferred and (parameters or wait_for):
|
916
|
+
from prefect.task_worker import store_parameters
|
917
|
+
|
914
918
|
parameters_id = uuid4()
|
915
919
|
state.state_details.task_parameters_id = parameters_id
|
916
920
|
|
@@ -926,7 +930,7 @@ class Task(Generic[P, R]):
|
|
926
930
|
data["parameters"] = parameters
|
927
931
|
if wait_for:
|
928
932
|
data["wait_for"] = wait_for
|
929
|
-
await
|
933
|
+
await store_parameters(store, parameters_id, data)
|
930
934
|
|
931
935
|
# collect task inputs
|
932
936
|
task_inputs = {
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/__init__.py
RENAMED
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/bundles/execute.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/lineage.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/sla/__init__.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/sla/client.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_experimental/sla/objects.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/api.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/calls.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/threads.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/concurrency/waiters.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/integrations.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/__init__.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/schemas.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/__init__.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/bases.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/fields.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/serializers.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_internal/schemas/validators.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_vendor/croniter/__init__.py
RENAMED
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/_vendor/croniter/croniter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{prefect_client-3.4.2.dev1 → prefect_client-3.4.2.dev2}/src/prefect/client/orchestration/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|