prefect-client 3.4.9.dev5__tar.gz → 3.4.10.dev1__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.9.dev5 → prefect_client-3.4.10.dev1}/PKG-INFO +2 -2
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/pyproject.toml +1 -1
- prefect_client-3.4.10.dev1/src/prefect/_build_info.py +5 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/bundles/__init__.py +65 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/assets/core.py +5 -1
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_concurrency_limits/client.py +146 -2
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/routes.py +3 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/responses.py +7 -0
- prefect_client-3.4.10.dev1/src/prefect/concurrency/_asyncio.py +177 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/asyncio.py +66 -23
- prefect_client-3.4.10.dev1/src/prefect/concurrency/context.py +25 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/services.py +5 -3
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/flows.py +156 -3
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/concurrency_limits_v2.py +4 -2
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/server.py +1 -1
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/base.py +20 -41
- prefect_client-3.4.9.dev5/src/prefect/_build_info.py +0 -5
- prefect_client-3.4.9.dev5/src/prefect/concurrency/_asyncio.py +0 -76
- prefect_client-3.4.9.dev5/src/prefect/concurrency/context.py +0 -28
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/.gitignore +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/LICENSE +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/README.md +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/__main__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/lineage.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_result_records.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_versioning.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/_waiters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/agent.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/automations.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/base.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/context.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/engine.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/related.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/futures.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/main.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/plugins.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/py.typed +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/results.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/_observers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/submit.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runner/utils.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/schedules.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/serializers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/states.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/tasks.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/logging.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/processors.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/telemetry/services.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/transactions.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/types/names.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/_ast.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/_engine.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/_git.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/callables.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/variables.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/workers/utilities.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: prefect-client
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.10.dev1
|
|
4
4
|
Summary: Workflow orchestration and management.
|
|
5
5
|
Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
|
|
6
6
|
Project-URL: Documentation, https://docs.prefect.io
|
|
@@ -44,7 +44,7 @@ Requires-Dist: packaging<25.1,>=21.3
|
|
|
44
44
|
Requires-Dist: pathspec>=0.8.0
|
|
45
45
|
Requires-Dist: pendulum<4,>=3.0.0; python_version < '3.13'
|
|
46
46
|
Requires-Dist: prometheus-client>=0.20.0
|
|
47
|
-
Requires-Dist: pydantic!=2.
|
|
47
|
+
Requires-Dist: pydantic!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4,<3.0.0,>=2.10.1
|
|
48
48
|
Requires-Dist: pydantic-core<3.0.0,>=2.12.0
|
|
49
49
|
Requires-Dist: pydantic-extra-types<3.0.0,>=2.8.2
|
|
50
50
|
Requires-Dist: pydantic-settings!=2.9.0,<3.0.0,>2.2.1
|
|
@@ -48,7 +48,7 @@ dependencies = [
|
|
|
48
48
|
"pathspec>=0.8.0",
|
|
49
49
|
"pendulum>=3.0.0,<4; python_version<'3.13'",
|
|
50
50
|
"prometheus-client>=0.20.0",
|
|
51
|
-
"pydantic>=2.
|
|
51
|
+
"pydantic>=2.10.1,<3.0.0,!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4",
|
|
52
52
|
"pydantic_core>=2.12.0,<3.0.0",
|
|
53
53
|
"pydantic_extra_types>=2.8.2,<3.0.0",
|
|
54
54
|
"pydantic_settings>2.2.1,<3.0.0,!=2.9.0",
|
|
@@ -3,14 +3,18 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import base64
|
|
5
5
|
import gzip
|
|
6
|
+
import json
|
|
7
|
+
import logging
|
|
6
8
|
import multiprocessing
|
|
7
9
|
import multiprocessing.context
|
|
8
10
|
import os
|
|
9
11
|
import subprocess
|
|
10
12
|
import sys
|
|
11
13
|
from pathlib import Path
|
|
14
|
+
import tempfile
|
|
12
15
|
from typing import Any, TypedDict
|
|
13
16
|
|
|
17
|
+
import anyio
|
|
14
18
|
import cloudpickle # pyright: ignore[reportMissingTypeStubs]
|
|
15
19
|
|
|
16
20
|
from prefect.client.schemas.objects import FlowRun
|
|
@@ -18,12 +22,15 @@ from prefect.context import SettingsContext, get_settings_context, serialize_con
|
|
|
18
22
|
from prefect.engine import handle_engine_signals
|
|
19
23
|
from prefect.flow_engine import run_flow
|
|
20
24
|
from prefect.flows import Flow
|
|
25
|
+
from prefect.logging import get_logger
|
|
21
26
|
from prefect.settings.context import get_current_settings
|
|
22
27
|
from prefect.settings.models.root import Settings
|
|
23
28
|
from prefect.utilities.slugify import slugify
|
|
24
29
|
|
|
25
30
|
from .execute import execute_bundle_from_file
|
|
26
31
|
|
|
32
|
+
logger: logging.Logger = get_logger(__name__)
|
|
33
|
+
|
|
27
34
|
|
|
28
35
|
def _get_uv_path() -> str:
|
|
29
36
|
try:
|
|
@@ -246,6 +253,64 @@ def convert_step_to_command(
|
|
|
246
253
|
return command
|
|
247
254
|
|
|
248
255
|
|
|
256
|
+
def upload_bundle_to_storage(
|
|
257
|
+
bundle: SerializedBundle, key: str, upload_command: list[str]
|
|
258
|
+
) -> None:
|
|
259
|
+
"""
|
|
260
|
+
Uploads a bundle to storage.
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
bundle: The serialized bundle to upload.
|
|
264
|
+
key: The key to use for the remote file when uploading.
|
|
265
|
+
upload_command: The command to use to upload the bundle as a list of strings.
|
|
266
|
+
"""
|
|
267
|
+
# Write the bundle to a temporary directory so it can be uploaded to the bundle storage
|
|
268
|
+
# via the upload command
|
|
269
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
270
|
+
Path(temp_dir).joinpath(key).write_bytes(json.dumps(bundle).encode("utf-8"))
|
|
271
|
+
|
|
272
|
+
try:
|
|
273
|
+
full_command = upload_command + [key]
|
|
274
|
+
logger.debug("Uploading execution bundle with command: %s", full_command)
|
|
275
|
+
subprocess.check_call(
|
|
276
|
+
full_command,
|
|
277
|
+
cwd=temp_dir,
|
|
278
|
+
)
|
|
279
|
+
except subprocess.CalledProcessError as e:
|
|
280
|
+
raise RuntimeError(e.stderr.decode("utf-8")) from e
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
async def aupload_bundle_to_storage(
|
|
284
|
+
bundle: SerializedBundle, key: str, upload_command: list[str]
|
|
285
|
+
) -> None:
|
|
286
|
+
"""
|
|
287
|
+
Asynchronously uploads a bundle to storage.
|
|
288
|
+
|
|
289
|
+
Args:
|
|
290
|
+
bundle: The serialized bundle to upload.
|
|
291
|
+
key: The key to use for the remote file when uploading.
|
|
292
|
+
upload_command: The command to use to upload the bundle as a list of strings.
|
|
293
|
+
"""
|
|
294
|
+
# Write the bundle to a temporary directory so it can be uploaded to the bundle storage
|
|
295
|
+
# via the upload command
|
|
296
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
297
|
+
await (
|
|
298
|
+
anyio.Path(temp_dir)
|
|
299
|
+
.joinpath(key)
|
|
300
|
+
.write_bytes(json.dumps(bundle).encode("utf-8"))
|
|
301
|
+
)
|
|
302
|
+
|
|
303
|
+
try:
|
|
304
|
+
full_command = upload_command + [key]
|
|
305
|
+
logger.debug("Uploading execution bundle with command: %s", full_command)
|
|
306
|
+
await anyio.run_process(
|
|
307
|
+
full_command,
|
|
308
|
+
cwd=temp_dir,
|
|
309
|
+
)
|
|
310
|
+
except subprocess.CalledProcessError as e:
|
|
311
|
+
raise RuntimeError(e.stderr.decode("utf-8")) from e
|
|
312
|
+
|
|
313
|
+
|
|
249
314
|
__all__ = [
|
|
250
315
|
"execute_bundle_from_file",
|
|
251
316
|
"convert_step_to_command",
|
|
@@ -7,6 +7,8 @@ from pydantic import ConfigDict, Field
|
|
|
7
7
|
from prefect._internal.schemas.bases import PrefectBaseModel
|
|
8
8
|
from prefect.types import ValidAssetKey
|
|
9
9
|
|
|
10
|
+
MAX_ASSET_DESCRIPTION_LENGTH = 2500
|
|
11
|
+
|
|
10
12
|
|
|
11
13
|
class AssetProperties(PrefectBaseModel):
|
|
12
14
|
"""
|
|
@@ -22,7 +24,9 @@ class AssetProperties(PrefectBaseModel):
|
|
|
22
24
|
default=None, description="Visitable url to view the Asset."
|
|
23
25
|
)
|
|
24
26
|
description: Optional[str] = Field(
|
|
25
|
-
default=None,
|
|
27
|
+
default=None,
|
|
28
|
+
description="Description of the Asset.",
|
|
29
|
+
max_length=MAX_ASSET_DESCRIPTION_LENGTH,
|
|
26
30
|
)
|
|
27
31
|
owners: Optional[list[str]] = Field(
|
|
28
32
|
default=None, description="Owners of the Asset."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Literal
|
|
4
4
|
|
|
5
5
|
from httpx import HTTPStatusError, RequestError
|
|
6
6
|
|
|
@@ -245,6 +245,14 @@ class ConcurrencyLimitClient(BaseClient):
|
|
|
245
245
|
slots: int,
|
|
246
246
|
mode: str,
|
|
247
247
|
) -> "Response":
|
|
248
|
+
"""
|
|
249
|
+
Increment concurrency slots for the specified limits.
|
|
250
|
+
|
|
251
|
+
Args:
|
|
252
|
+
names: A list of limit names for which to occupy slots.
|
|
253
|
+
slots: The number of concurrency slots to occupy.
|
|
254
|
+
mode: The mode of the concurrency limits.
|
|
255
|
+
"""
|
|
248
256
|
return self.request(
|
|
249
257
|
"POST",
|
|
250
258
|
"/v2/concurrency_limits/increment",
|
|
@@ -255,6 +263,52 @@ class ConcurrencyLimitClient(BaseClient):
|
|
|
255
263
|
},
|
|
256
264
|
)
|
|
257
265
|
|
|
266
|
+
def increment_concurrency_slots_with_lease(
|
|
267
|
+
self,
|
|
268
|
+
names: list[str],
|
|
269
|
+
slots: int,
|
|
270
|
+
mode: Literal["concurrency", "rate_limit"],
|
|
271
|
+
lease_duration: float,
|
|
272
|
+
) -> "Response":
|
|
273
|
+
"""
|
|
274
|
+
Increment concurrency slots for the specified limits with a lease.
|
|
275
|
+
|
|
276
|
+
Args:
|
|
277
|
+
names: A list of limit names for which to occupy slots.
|
|
278
|
+
slots: The number of concurrency slots to occupy.
|
|
279
|
+
mode: The mode of the concurrency limits.
|
|
280
|
+
lease_duration: The duration of the lease in seconds.
|
|
281
|
+
"""
|
|
282
|
+
return self.request(
|
|
283
|
+
"POST",
|
|
284
|
+
"/v2/concurrency_limits/increment-with-lease",
|
|
285
|
+
json={
|
|
286
|
+
"names": names,
|
|
287
|
+
"slots": slots,
|
|
288
|
+
"mode": mode,
|
|
289
|
+
"lease_duration": lease_duration,
|
|
290
|
+
},
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
def renew_concurrency_lease(
|
|
294
|
+
self,
|
|
295
|
+
lease_id: "UUID",
|
|
296
|
+
lease_duration: float,
|
|
297
|
+
) -> "Response":
|
|
298
|
+
"""
|
|
299
|
+
Renew a concurrency lease.
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
lease_id: The ID of the lease to renew.
|
|
303
|
+
lease_duration: The new lease duration in seconds.
|
|
304
|
+
"""
|
|
305
|
+
return self.request(
|
|
306
|
+
"POST",
|
|
307
|
+
"/v2/concurrency_limits/leases/{lease_id}/renew",
|
|
308
|
+
path_params={"lease_id": lease_id},
|
|
309
|
+
json={"lease_duration": lease_duration},
|
|
310
|
+
)
|
|
311
|
+
|
|
258
312
|
def release_concurrency_slots(
|
|
259
313
|
self, names: list[str], slots: int, occupancy_seconds: float
|
|
260
314
|
) -> "Response":
|
|
@@ -281,6 +335,24 @@ class ConcurrencyLimitClient(BaseClient):
|
|
|
281
335
|
},
|
|
282
336
|
)
|
|
283
337
|
|
|
338
|
+
def release_concurrency_slots_with_lease(
|
|
339
|
+
self,
|
|
340
|
+
lease_id: "UUID",
|
|
341
|
+
) -> "Response":
|
|
342
|
+
"""
|
|
343
|
+
Release concurrency slots for the specified lease.
|
|
344
|
+
|
|
345
|
+
Args:
|
|
346
|
+
lease_id: The ID of the lease corresponding to the concurrency limits to release.
|
|
347
|
+
"""
|
|
348
|
+
return self.request(
|
|
349
|
+
"POST",
|
|
350
|
+
"/v2/concurrency_limits/decrement-with-lease",
|
|
351
|
+
json={
|
|
352
|
+
"lease_id": str(lease_id),
|
|
353
|
+
},
|
|
354
|
+
)
|
|
355
|
+
|
|
284
356
|
def create_global_concurrency_limit(
|
|
285
357
|
self, concurrency_limit: "GlobalConcurrencyLimitCreate"
|
|
286
358
|
) -> "UUID":
|
|
@@ -611,8 +683,16 @@ class ConcurrencyLimitAsyncClient(BaseAsyncClient):
|
|
|
611
683
|
self,
|
|
612
684
|
names: list[str],
|
|
613
685
|
slots: int,
|
|
614
|
-
mode:
|
|
686
|
+
mode: Literal["concurrency", "rate_limit"],
|
|
615
687
|
) -> "Response":
|
|
688
|
+
"""
|
|
689
|
+
Increment concurrency slots for the specified limits.
|
|
690
|
+
|
|
691
|
+
Args:
|
|
692
|
+
names: A list of limit names for which to occupy slots.
|
|
693
|
+
slots: The number of concurrency slots to occupy.
|
|
694
|
+
mode: The mode of the concurrency limits.
|
|
695
|
+
"""
|
|
616
696
|
return await self.request(
|
|
617
697
|
"POST",
|
|
618
698
|
"/v2/concurrency_limits/increment",
|
|
@@ -623,6 +703,52 @@ class ConcurrencyLimitAsyncClient(BaseAsyncClient):
|
|
|
623
703
|
},
|
|
624
704
|
)
|
|
625
705
|
|
|
706
|
+
async def increment_concurrency_slots_with_lease(
|
|
707
|
+
self,
|
|
708
|
+
names: list[str],
|
|
709
|
+
slots: int,
|
|
710
|
+
mode: Literal["concurrency", "rate_limit"],
|
|
711
|
+
lease_duration: float,
|
|
712
|
+
) -> "Response":
|
|
713
|
+
"""
|
|
714
|
+
Increment concurrency slots for the specified limits with a lease.
|
|
715
|
+
|
|
716
|
+
Args:
|
|
717
|
+
names: A list of limit names for which to occupy slots.
|
|
718
|
+
slots: The number of concurrency slots to occupy.
|
|
719
|
+
mode: The mode of the concurrency limits.
|
|
720
|
+
lease_duration: The duration of the lease in seconds.
|
|
721
|
+
"""
|
|
722
|
+
return await self.request(
|
|
723
|
+
"POST",
|
|
724
|
+
"/v2/concurrency_limits/increment-with-lease",
|
|
725
|
+
json={
|
|
726
|
+
"names": names,
|
|
727
|
+
"slots": slots,
|
|
728
|
+
"mode": mode,
|
|
729
|
+
"lease_duration": lease_duration,
|
|
730
|
+
},
|
|
731
|
+
)
|
|
732
|
+
|
|
733
|
+
async def renew_concurrency_lease(
|
|
734
|
+
self,
|
|
735
|
+
lease_id: "UUID",
|
|
736
|
+
lease_duration: float,
|
|
737
|
+
) -> "Response":
|
|
738
|
+
"""
|
|
739
|
+
Renew a concurrency lease.
|
|
740
|
+
|
|
741
|
+
Args:
|
|
742
|
+
lease_id: The ID of the lease to renew.
|
|
743
|
+
lease_duration: The new lease duration in seconds.
|
|
744
|
+
"""
|
|
745
|
+
return await self.request(
|
|
746
|
+
"POST",
|
|
747
|
+
"/v2/concurrency_limits/leases/{lease_id}/renew",
|
|
748
|
+
path_params={"lease_id": lease_id},
|
|
749
|
+
json={"lease_duration": lease_duration},
|
|
750
|
+
)
|
|
751
|
+
|
|
626
752
|
async def release_concurrency_slots(
|
|
627
753
|
self, names: list[str], slots: int, occupancy_seconds: float
|
|
628
754
|
) -> "Response":
|
|
@@ -649,6 +775,24 @@ class ConcurrencyLimitAsyncClient(BaseAsyncClient):
|
|
|
649
775
|
},
|
|
650
776
|
)
|
|
651
777
|
|
|
778
|
+
async def release_concurrency_slots_with_lease(
|
|
779
|
+
self,
|
|
780
|
+
lease_id: "UUID",
|
|
781
|
+
) -> "Response":
|
|
782
|
+
"""
|
|
783
|
+
Release concurrency slots for the specified lease.
|
|
784
|
+
|
|
785
|
+
Args:
|
|
786
|
+
lease_id: The ID of the lease corresponding to the concurrency limits to release.
|
|
787
|
+
"""
|
|
788
|
+
return await self.request(
|
|
789
|
+
"POST",
|
|
790
|
+
"/v2/concurrency_limits/decrement-with-lease",
|
|
791
|
+
json={
|
|
792
|
+
"lease_id": str(lease_id),
|
|
793
|
+
},
|
|
794
|
+
)
|
|
795
|
+
|
|
652
796
|
async def create_global_concurrency_limit(
|
|
653
797
|
self, concurrency_limit: "GlobalConcurrencyLimitCreate"
|
|
654
798
|
) -> "UUID":
|
{prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/orchestration/routes.py
RENAMED
|
@@ -115,8 +115,11 @@ ServerRoutes = Literal[
|
|
|
115
115
|
"/v2/concurrency_limits/",
|
|
116
116
|
"/v2/concurrency_limits/{id_or_name}",
|
|
117
117
|
"/v2/concurrency_limits/decrement",
|
|
118
|
+
"/v2/concurrency_limits/decrement-with-lease",
|
|
118
119
|
"/v2/concurrency_limits/filter",
|
|
119
120
|
"/v2/concurrency_limits/increment",
|
|
121
|
+
"/v2/concurrency_limits/increment-with-lease",
|
|
122
|
+
"/v2/concurrency_limits/leases/{lease_id}/renew",
|
|
120
123
|
"/variables/",
|
|
121
124
|
"/variables/{id}",
|
|
122
125
|
"/variables/count",
|
{prefect_client-3.4.9.dev5 → prefect_client-3.4.10.dev1}/src/prefect/client/schemas/responses.py
RENAMED
|
@@ -477,6 +477,13 @@ class MinimalConcurrencyLimitResponse(PrefectBaseModel):
|
|
|
477
477
|
limit: int
|
|
478
478
|
|
|
479
479
|
|
|
480
|
+
class ConcurrencyLimitWithLeaseResponse(PrefectBaseModel):
|
|
481
|
+
model_config: ClassVar[ConfigDict] = ConfigDict(extra="ignore")
|
|
482
|
+
|
|
483
|
+
lease_id: UUID
|
|
484
|
+
limits: list[MinimalConcurrencyLimitResponse]
|
|
485
|
+
|
|
486
|
+
|
|
480
487
|
class GlobalConcurrencyLimitResponse(ObjectBaseModel):
|
|
481
488
|
"""
|
|
482
489
|
A response object for global concurrency limits.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import logging
|
|
3
|
+
from typing import Literal, Optional
|
|
4
|
+
from uuid import UUID
|
|
5
|
+
|
|
6
|
+
import httpx
|
|
7
|
+
|
|
8
|
+
from prefect.client.orchestration import get_client
|
|
9
|
+
from prefect.client.schemas.responses import (
|
|
10
|
+
ConcurrencyLimitWithLeaseResponse,
|
|
11
|
+
MinimalConcurrencyLimitResponse,
|
|
12
|
+
)
|
|
13
|
+
from prefect.logging import get_logger
|
|
14
|
+
from prefect.logging.loggers import get_run_logger
|
|
15
|
+
from prefect.utilities.timeout import timeout_async
|
|
16
|
+
|
|
17
|
+
from .services import ConcurrencySlotAcquisitionService
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ConcurrencySlotAcquisitionError(Exception):
|
|
21
|
+
"""Raised when an unhandlable occurs while acquiring concurrency slots."""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class AcquireConcurrencySlotTimeoutError(TimeoutError):
|
|
25
|
+
"""Raised when acquiring a concurrency slot times out."""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
logger: logging.Logger = get_logger("concurrency")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
async def aacquire_concurrency_slots(
|
|
32
|
+
names: list[str],
|
|
33
|
+
slots: int,
|
|
34
|
+
mode: Literal["concurrency", "rate_limit"] = "concurrency",
|
|
35
|
+
timeout_seconds: Optional[float] = None,
|
|
36
|
+
max_retries: Optional[int] = None,
|
|
37
|
+
strict: bool = False,
|
|
38
|
+
) -> list[MinimalConcurrencyLimitResponse]:
|
|
39
|
+
service = ConcurrencySlotAcquisitionService.instance(frozenset(names))
|
|
40
|
+
future = service.send((slots, mode, timeout_seconds, max_retries))
|
|
41
|
+
try:
|
|
42
|
+
response = await asyncio.wrap_future(future)
|
|
43
|
+
except TimeoutError as timeout:
|
|
44
|
+
raise AcquireConcurrencySlotTimeoutError(
|
|
45
|
+
f"Attempt to acquire concurrency slots timed out after {timeout_seconds} second(s)"
|
|
46
|
+
) from timeout
|
|
47
|
+
except Exception as exc:
|
|
48
|
+
raise ConcurrencySlotAcquisitionError(
|
|
49
|
+
f"Unable to acquire concurrency slots on {names!r}"
|
|
50
|
+
) from exc
|
|
51
|
+
|
|
52
|
+
retval = _response_to_minimal_concurrency_limit_response(response)
|
|
53
|
+
|
|
54
|
+
if not retval:
|
|
55
|
+
if strict:
|
|
56
|
+
raise ConcurrencySlotAcquisitionError(
|
|
57
|
+
f"Concurrency limits {names!r} must be created before acquiring slots"
|
|
58
|
+
)
|
|
59
|
+
try:
|
|
60
|
+
logger = get_run_logger()
|
|
61
|
+
except Exception:
|
|
62
|
+
pass
|
|
63
|
+
else:
|
|
64
|
+
logger.warning(
|
|
65
|
+
f"Concurrency limits {names!r} do not exist - skipping acquisition."
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
return retval
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
async def aacquire_concurrency_slots_with_lease(
|
|
72
|
+
names: list[str],
|
|
73
|
+
slots: int,
|
|
74
|
+
mode: Literal["concurrency", "rate_limit"] = "concurrency",
|
|
75
|
+
timeout_seconds: Optional[float] = None,
|
|
76
|
+
max_retries: Optional[int] = None,
|
|
77
|
+
lease_duration: float = 300,
|
|
78
|
+
strict: bool = False,
|
|
79
|
+
) -> ConcurrencyLimitWithLeaseResponse:
|
|
80
|
+
try:
|
|
81
|
+
# Use a run logger if available
|
|
82
|
+
logger = get_run_logger()
|
|
83
|
+
except Exception:
|
|
84
|
+
logger = get_logger("concurrency")
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
with timeout_async(seconds=timeout_seconds):
|
|
88
|
+
async with get_client() as client:
|
|
89
|
+
while True:
|
|
90
|
+
try:
|
|
91
|
+
response = await client.increment_concurrency_slots_with_lease(
|
|
92
|
+
names=names,
|
|
93
|
+
slots=slots,
|
|
94
|
+
mode=mode,
|
|
95
|
+
lease_duration=lease_duration,
|
|
96
|
+
)
|
|
97
|
+
retval = ConcurrencyLimitWithLeaseResponse.model_validate(
|
|
98
|
+
response.json()
|
|
99
|
+
)
|
|
100
|
+
if not retval.limits:
|
|
101
|
+
if strict:
|
|
102
|
+
raise ConcurrencySlotAcquisitionError(
|
|
103
|
+
f"Concurrency limits {names!r} must be created before acquiring slots"
|
|
104
|
+
)
|
|
105
|
+
else:
|
|
106
|
+
logger.warning(
|
|
107
|
+
f"Concurrency limits {names!r} do not exist - skipping acquisition."
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
return retval
|
|
111
|
+
except httpx.HTTPStatusError as exc:
|
|
112
|
+
if not exc.response.status_code == 423: # HTTP_423_LOCKED
|
|
113
|
+
raise
|
|
114
|
+
|
|
115
|
+
if max_retries is not None and max_retries <= 0:
|
|
116
|
+
raise exc
|
|
117
|
+
retry_after = float(exc.response.headers["Retry-After"])
|
|
118
|
+
logger.debug(
|
|
119
|
+
f"Unable to acquire concurrency slot. Retrying in {retry_after} second(s)."
|
|
120
|
+
)
|
|
121
|
+
await asyncio.sleep(retry_after)
|
|
122
|
+
if max_retries is not None:
|
|
123
|
+
max_retries -= 1
|
|
124
|
+
except TimeoutError as timeout:
|
|
125
|
+
raise AcquireConcurrencySlotTimeoutError(
|
|
126
|
+
f"Attempt to acquire concurrency slots timed out after {timeout_seconds} second(s)"
|
|
127
|
+
) from timeout
|
|
128
|
+
except Exception as exc:
|
|
129
|
+
raise ConcurrencySlotAcquisitionError(
|
|
130
|
+
f"Unable to acquire concurrency slots on {names!r}"
|
|
131
|
+
) from exc
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
async def amaintain_concurrency_lease(
|
|
135
|
+
lease_id: UUID,
|
|
136
|
+
lease_duration: float,
|
|
137
|
+
) -> None:
|
|
138
|
+
"""
|
|
139
|
+
Maintain a concurrency lease by renewing it after the given interval.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
lease_id: The ID of the lease to maintain.
|
|
143
|
+
lease_duration: The duration of the lease in seconds.
|
|
144
|
+
"""
|
|
145
|
+
async with get_client() as client:
|
|
146
|
+
while True:
|
|
147
|
+
await asyncio.sleep( # Renew the lease 3/4 of the way through the lease duration
|
|
148
|
+
lease_duration * 0.75
|
|
149
|
+
)
|
|
150
|
+
await client.renew_concurrency_lease(
|
|
151
|
+
lease_id=lease_id, lease_duration=lease_duration
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
async def arelease_concurrency_slots(
|
|
156
|
+
names: list[str], slots: int, occupancy_seconds: float
|
|
157
|
+
) -> list[MinimalConcurrencyLimitResponse]:
|
|
158
|
+
async with get_client() as client:
|
|
159
|
+
response = await client.release_concurrency_slots(
|
|
160
|
+
names=names, slots=slots, occupancy_seconds=occupancy_seconds
|
|
161
|
+
)
|
|
162
|
+
return _response_to_minimal_concurrency_limit_response(response)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
async def arelease_concurrency_slots_with_lease(
|
|
166
|
+
lease_id: UUID,
|
|
167
|
+
) -> None:
|
|
168
|
+
async with get_client() as client:
|
|
169
|
+
await client.release_concurrency_slots_with_lease(lease_id=lease_id)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def _response_to_minimal_concurrency_limit_response(
|
|
173
|
+
response: httpx.Response,
|
|
174
|
+
) -> list[MinimalConcurrencyLimitResponse]:
|
|
175
|
+
return [
|
|
176
|
+
MinimalConcurrencyLimitResponse.model_validate(obj_) for obj_ in response.json()
|
|
177
|
+
]
|