prefect-client 3.4.1.dev4__tar.gz → 3.4.2__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.1.dev4 → prefect_client-3.4.2}/PKG-INFO +2 -2
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/pyproject.toml +1 -1
- prefect_client-3.4.2/src/prefect/_build_info.py +5 -0
- prefect_client-3.4.2/src/prefect/_internal/compatibility/blocks.py +27 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/bases.py +11 -1
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/validators.py +0 -102
- prefect_client-3.4.2/src/prefect/_internal/uuid7.py +119 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/webhook.py +15 -7
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/actions.py +13 -35
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/objects.py +26 -22
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/runner.py +3 -1
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/filters.py +25 -11
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/automations.py +3 -1
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/events.py +3 -2
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/flows.py +1 -1
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/results.py +24 -35
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/runner.py +3 -10
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/serializers.py +9 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/workers.py +3 -2
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/tasks.py +3 -2
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_runners.py +2 -1
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_worker.py +95 -14
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/tasks.py +8 -3
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/types/__init__.py +70 -36
- prefect_client-3.4.2/src/prefect/types/names.py +139 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/callables.py +4 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/base.py +32 -10
- prefect_client-3.4.1.dev4/src/prefect/_build_info.py +0 -5
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/.gitignore +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/LICENSE +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/README.md +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/__main__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/lineage.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_result_records.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_versioning.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_waiters.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/agent.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/automations.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/base.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/context.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/engine.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/related.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/futures.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/main.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/plugins.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/py.typed +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/_observers.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/submit.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runner/utils.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/schedules.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/states.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/logging.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/processors.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/telemetry/services.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/transactions.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_ast.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_engine.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/_git.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/variables.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/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.2
|
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
|
@@ -37,7 +37,7 @@ Requires-Dist: httpx[http2]!=0.23.2,>=0.23
|
|
37
37
|
Requires-Dist: humanize<5.0.0,>=4.9.0
|
38
38
|
Requires-Dist: importlib-metadata>=4.4; python_version < '3.10'
|
39
39
|
Requires-Dist: jsonpatch<2.0,>=1.32
|
40
|
-
Requires-Dist: jsonschema<5.0.0,>=4.
|
40
|
+
Requires-Dist: jsonschema<5.0.0,>=4.18.0
|
41
41
|
Requires-Dist: opentelemetry-api<2.0.0,>=1.27.0
|
42
42
|
Requires-Dist: orjson<4.0,>=3.7
|
43
43
|
Requires-Dist: packaging<25.1,>=21.3
|
@@ -41,7 +41,7 @@ dependencies = [
|
|
41
41
|
"humanize>=4.9.0,<5.0.0",
|
42
42
|
"importlib_metadata>=4.4;python_version<'3.10'",
|
43
43
|
"jsonpatch>=1.32,<2.0",
|
44
|
-
"jsonschema>=4.
|
44
|
+
"jsonschema>=4.18.0,<5.0.0",
|
45
45
|
"opentelemetry-api>=1.27.0,<2.0.0",
|
46
46
|
"orjson>=3.7,<4.0",
|
47
47
|
"packaging>=21.3,<25.1",
|
@@ -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
|
@@ -10,6 +10,7 @@ from pydantic import BaseModel, ConfigDict, Field
|
|
10
10
|
from rich.repr import RichReprResult
|
11
11
|
from typing_extensions import Self
|
12
12
|
|
13
|
+
from prefect._internal.uuid7 import uuid7
|
13
14
|
from prefect.types._datetime import (
|
14
15
|
DateTime,
|
15
16
|
human_friendly_diff,
|
@@ -100,7 +101,7 @@ class PrefectBaseModel(BaseModel):
|
|
100
101
|
|
101
102
|
class IDBaseModel(PrefectBaseModel):
|
102
103
|
"""
|
103
|
-
A PrefectBaseModel with
|
104
|
+
A PrefectBaseModel with a randomly-generated UUID ID value.
|
104
105
|
|
105
106
|
The ID is reset on copy() and not included in equality comparisons.
|
106
107
|
"""
|
@@ -109,6 +110,15 @@ class IDBaseModel(PrefectBaseModel):
|
|
109
110
|
id: UUID = Field(default_factory=uuid4)
|
110
111
|
|
111
112
|
|
113
|
+
class TimeSeriesBaseModel(IDBaseModel):
|
114
|
+
"""
|
115
|
+
A PrefectBaseModel with a time-oriented UUIDv7 ID value. Used for models that
|
116
|
+
operate like timeseries, such as runs, states, and logs.
|
117
|
+
"""
|
118
|
+
|
119
|
+
id: UUID = Field(default_factory=uuid7)
|
120
|
+
|
121
|
+
|
112
122
|
class ObjectBaseModel(IDBaseModel):
|
113
123
|
"""
|
114
124
|
A PrefectBaseModel with an auto-generated UUID ID value and created /
|
{prefect_client-3.4.1.dev4 → prefect_client-3.4.2}/src/prefect/_internal/schemas/validators.py
RENAMED
@@ -10,7 +10,6 @@ from __future__ import annotations
|
|
10
10
|
|
11
11
|
import datetime
|
12
12
|
import os
|
13
|
-
import re
|
14
13
|
import urllib.parse
|
15
14
|
import warnings
|
16
15
|
from collections.abc import Iterable, Mapping, MutableMapping
|
@@ -36,60 +35,6 @@ M = TypeVar("M", bound=Mapping[str, Any])
|
|
36
35
|
MM = TypeVar("MM", bound=MutableMapping[str, Any])
|
37
36
|
|
38
37
|
|
39
|
-
LOWERCASE_LETTERS_NUMBERS_AND_DASHES_ONLY_REGEX = "^[a-z0-9-]*$"
|
40
|
-
LOWERCASE_LETTERS_NUMBERS_AND_UNDERSCORES_REGEX = "^[a-z0-9_]*$"
|
41
|
-
SLUG_REGEX = "^[a-z0-9]+([_-]+[a-z0-9]+)*$"
|
42
|
-
|
43
|
-
|
44
|
-
@overload
|
45
|
-
def raise_on_name_alphanumeric_dashes_only(
|
46
|
-
value: str, field_name: str = ...
|
47
|
-
) -> str: ...
|
48
|
-
|
49
|
-
|
50
|
-
@overload
|
51
|
-
def raise_on_name_alphanumeric_dashes_only(
|
52
|
-
value: None, field_name: str = ...
|
53
|
-
) -> None: ...
|
54
|
-
|
55
|
-
|
56
|
-
def raise_on_name_alphanumeric_dashes_only(
|
57
|
-
value: Optional[str], field_name: str = "value"
|
58
|
-
) -> Optional[str]:
|
59
|
-
if value is not None and not bool(
|
60
|
-
re.match(LOWERCASE_LETTERS_NUMBERS_AND_DASHES_ONLY_REGEX, value)
|
61
|
-
):
|
62
|
-
raise ValueError(
|
63
|
-
f"{field_name} must only contain lowercase letters, numbers, and dashes."
|
64
|
-
)
|
65
|
-
return value
|
66
|
-
|
67
|
-
|
68
|
-
@overload
|
69
|
-
def raise_on_name_alphanumeric_underscores_only(
|
70
|
-
value: str, field_name: str = ...
|
71
|
-
) -> str: ...
|
72
|
-
|
73
|
-
|
74
|
-
@overload
|
75
|
-
def raise_on_name_alphanumeric_underscores_only(
|
76
|
-
value: None, field_name: str = ...
|
77
|
-
) -> None: ...
|
78
|
-
|
79
|
-
|
80
|
-
def raise_on_name_alphanumeric_underscores_only(
|
81
|
-
value: Optional[str], field_name: str = "value"
|
82
|
-
) -> Optional[str]:
|
83
|
-
if value is not None and not re.match(
|
84
|
-
LOWERCASE_LETTERS_NUMBERS_AND_UNDERSCORES_REGEX, value
|
85
|
-
):
|
86
|
-
raise ValueError(
|
87
|
-
f"{field_name} must only contain lowercase letters, numbers, and"
|
88
|
-
" underscores."
|
89
|
-
)
|
90
|
-
return value
|
91
|
-
|
92
|
-
|
93
38
|
def validate_values_conform_to_schema(
|
94
39
|
values: Optional[Mapping[str, Any]],
|
95
40
|
schema: Optional[Mapping[str, Any]],
|
@@ -611,50 +556,3 @@ def validate_working_dir(v: Optional[Path | str]) -> Optional[Path]:
|
|
611
556
|
if isinstance(v, str):
|
612
557
|
return relative_path_to_current_platform(v)
|
613
558
|
return v
|
614
|
-
|
615
|
-
|
616
|
-
### UNCATEGORIZED VALIDATORS ###
|
617
|
-
|
618
|
-
# the above categories seem to be getting a bit unwieldy, so this is a temporary
|
619
|
-
# catch-all for validators until we organize these into files
|
620
|
-
|
621
|
-
|
622
|
-
@overload
|
623
|
-
def validate_block_document_name(value: str) -> str: ...
|
624
|
-
|
625
|
-
|
626
|
-
@overload
|
627
|
-
def validate_block_document_name(value: None) -> None: ...
|
628
|
-
|
629
|
-
|
630
|
-
def validate_block_document_name(value: Optional[str]) -> Optional[str]:
|
631
|
-
if value is not None:
|
632
|
-
raise_on_name_alphanumeric_dashes_only(value, field_name="Block document name")
|
633
|
-
return value
|
634
|
-
|
635
|
-
|
636
|
-
def validate_artifact_key(value: str) -> str:
|
637
|
-
raise_on_name_alphanumeric_dashes_only(value, field_name="Artifact key")
|
638
|
-
return value
|
639
|
-
|
640
|
-
|
641
|
-
@overload
|
642
|
-
def validate_variable_name(value: str) -> str: ...
|
643
|
-
|
644
|
-
|
645
|
-
@overload
|
646
|
-
def validate_variable_name(value: None) -> None: ...
|
647
|
-
|
648
|
-
|
649
|
-
def validate_variable_name(value: Optional[str]) -> Optional[str]:
|
650
|
-
if value is not None:
|
651
|
-
if not bool(re.match(SLUG_REGEX, value)):
|
652
|
-
raise ValueError(
|
653
|
-
"Variable name must only contain lowercase letters, numbers, dashes, and underscores"
|
654
|
-
)
|
655
|
-
return value
|
656
|
-
|
657
|
-
|
658
|
-
def validate_block_type_slug(value: str):
|
659
|
-
raise_on_name_alphanumeric_dashes_only(value, field_name="Block type slug")
|
660
|
-
return value
|
@@ -0,0 +1,119 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import os
|
4
|
+
import time
|
5
|
+
import uuid
|
6
|
+
from typing import Callable, Optional
|
7
|
+
|
8
|
+
|
9
|
+
def _time_ms() -> int:
|
10
|
+
return time.time_ns() // 1_000_000
|
11
|
+
|
12
|
+
|
13
|
+
def uuid7(
|
14
|
+
ms: Optional[int] = None,
|
15
|
+
time_func: Callable[[], int] = _time_ms,
|
16
|
+
) -> uuid.UUID:
|
17
|
+
"""
|
18
|
+
UUID v7, following the proposed extension to RFC4122 described in
|
19
|
+
https://www.ietf.org/id/draft-peabody-dispatch-new-uuid-format-02.html.
|
20
|
+
All representations (string, byte array, int) sort chronologically,
|
21
|
+
with a potential time resolution of 50ns (if the system clock
|
22
|
+
supports this).
|
23
|
+
|
24
|
+
Parameters
|
25
|
+
----------
|
26
|
+
|
27
|
+
ms - Optional integer with the whole number of milliseconds
|
28
|
+
since Unix epoch, to set the "as of" timestamp.
|
29
|
+
|
30
|
+
as_type - Optional string to return the UUID in a different format.
|
31
|
+
A uuid.UUID (version 7, variant 0x10) is returned unless
|
32
|
+
this is one of 'str', 'int', 'hex' or 'bytes'.
|
33
|
+
|
34
|
+
time_func - Set the time function, which must return integer
|
35
|
+
milliseconds since the Unix epoch, midnight on 1-Jan-1970.
|
36
|
+
Defaults to time.time_ns()/1e6. This is exposed because
|
37
|
+
time.time_ns() may have a low resolution on Windows.
|
38
|
+
|
39
|
+
Returns
|
40
|
+
-------
|
41
|
+
|
42
|
+
A UUID object, or if as_type is specified, a string, int or
|
43
|
+
bytes of length 16.
|
44
|
+
|
45
|
+
Implementation notes
|
46
|
+
--------------------
|
47
|
+
|
48
|
+
The 128 bits in the UUID are allocated as follows:
|
49
|
+
- 36 bits of whole seconds
|
50
|
+
- 24 bits of fractional seconds, giving approx 50ns resolution
|
51
|
+
- 14 bits of sequential counter, if called repeatedly in same time tick
|
52
|
+
- 48 bits of randomness
|
53
|
+
plus, at locations defined by RFC4122, 4 bits for the
|
54
|
+
uuid version (0b111) and 2 bits for the uuid variant (0b10).
|
55
|
+
|
56
|
+
0 1 2 3
|
57
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
58
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
59
|
+
| unix_ts_ms |
|
60
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
61
|
+
| unix_ts_ms | ver | rand_a |
|
62
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
63
|
+
|var| rand_b |
|
64
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
65
|
+
| rand_b |
|
66
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
67
|
+
|
68
|
+
Indicative timings:
|
69
|
+
- uuid.uuid4() 2.4us
|
70
|
+
- uuid7() 3.7us
|
71
|
+
- uuid7(as_type='int') 1.6us
|
72
|
+
- uuid7(as_type='str') 2.5us
|
73
|
+
|
74
|
+
Examples
|
75
|
+
--------
|
76
|
+
|
77
|
+
>>> uuid7()
|
78
|
+
UUID('061cb26a-54b8-7a52-8000-2124e7041024')
|
79
|
+
|
80
|
+
>>> for fmt in ('bytes', 'hex', 'int', 'str', 'uuid', None):
|
81
|
+
... print(fmt, repr(uuid7(as_type=fmt)))
|
82
|
+
bytes b'\x06\x1c\xb8\xfe\x0f\x0b|9\x80\x00\tjt\x85\xb3\xbb'
|
83
|
+
hex '061cb8fe0f0b7c3980011863b956b758'
|
84
|
+
int 8124504378724980906989670469352026642
|
85
|
+
str '061cb8fe-0f0b-7c39-8003-d44a7ee0bdf6'
|
86
|
+
uuid UUID('061cb8fe-0f0b-7c39-8004-0489578299f6')
|
87
|
+
None UUID('061cb8fe-0f0f-7df2-8000-afd57c2bf446')
|
88
|
+
"""
|
89
|
+
if ms is None:
|
90
|
+
ms = time_func()
|
91
|
+
else:
|
92
|
+
ms = int(ms) # Fail fast if not an int
|
93
|
+
|
94
|
+
rand_a = int.from_bytes(bytes=os.urandom(2), byteorder="big")
|
95
|
+
rand_b = int.from_bytes(bytes=os.urandom(8), byteorder="big")
|
96
|
+
uuid_bytes = uuidfromvalues(ms, rand_a, rand_b)
|
97
|
+
|
98
|
+
uuid_int = int.from_bytes(bytes=uuid_bytes, byteorder="big")
|
99
|
+
return uuid.UUID(int=uuid_int)
|
100
|
+
|
101
|
+
|
102
|
+
def uuidfromvalues(unix_ts_ms: int, rand_a: int, rand_b: int):
|
103
|
+
version = 0x07
|
104
|
+
var = 2
|
105
|
+
rand_a &= 0xFFF
|
106
|
+
rand_b &= 0x3FFFFFFFFFFFFFFF
|
107
|
+
|
108
|
+
final_bytes = unix_ts_ms.to_bytes(length=6, byteorder="big")
|
109
|
+
final_bytes += ((version << 12) + rand_a).to_bytes(length=2, byteorder="big")
|
110
|
+
final_bytes += ((var << 62) + rand_b).to_bytes(length=8, byteorder="big")
|
111
|
+
|
112
|
+
return final_bytes
|
113
|
+
|
114
|
+
|
115
|
+
def format_byte_array_as_uuid(arr: bytes):
|
116
|
+
return f"{arr[:4].hex()}-{arr[4:6].hex()}-{arr[6:8].hex()}-{arr[8:10].hex()}-{arr[10:].hex()}"
|
117
|
+
|
118
|
+
|
119
|
+
__all__ = ("uuid7",)
|
@@ -58,7 +58,7 @@ class Webhook(Block):
|
|
58
58
|
else:
|
59
59
|
self._client = AsyncClient(transport=_insecure_http_transport)
|
60
60
|
|
61
|
-
async def call(self, payload: dict[str, Any] | None = None) -> Response:
|
61
|
+
async def call(self, payload: dict[str, Any] | str | None = None) -> Response:
|
62
62
|
"""
|
63
63
|
Call the webhook.
|
64
64
|
|
@@ -69,9 +69,17 @@ class Webhook(Block):
|
|
69
69
|
validate_restricted_url(self.url.get_secret_value())
|
70
70
|
|
71
71
|
async with self._client:
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
72
|
+
if isinstance(payload, str):
|
73
|
+
return await self._client.request(
|
74
|
+
method=self.method,
|
75
|
+
url=self.url.get_secret_value(),
|
76
|
+
headers=self.headers.get_secret_value(),
|
77
|
+
content=payload,
|
78
|
+
)
|
79
|
+
else:
|
80
|
+
return await self._client.request(
|
81
|
+
method=self.method,
|
82
|
+
url=self.url.get_secret_value(),
|
83
|
+
headers=self.headers.get_secret_value(),
|
84
|
+
json=payload,
|
85
|
+
)
|
@@ -12,12 +12,8 @@ from prefect._internal.schemas.bases import ActionBaseModel
|
|
12
12
|
from prefect._internal.schemas.validators import (
|
13
13
|
convert_to_strings,
|
14
14
|
remove_old_deployment_fields,
|
15
|
-
validate_artifact_key,
|
16
|
-
validate_block_document_name,
|
17
|
-
validate_block_type_slug,
|
18
15
|
validate_name_present_on_nonanonymous_blocks,
|
19
16
|
validate_schedule_max_scheduled_runs,
|
20
|
-
validate_variable_name,
|
21
17
|
)
|
22
18
|
from prefect.client.schemas.objects import (
|
23
19
|
StateDetails,
|
@@ -34,7 +30,6 @@ from prefect.client.schemas.schedules import (
|
|
34
30
|
from prefect.schedules import Schedule
|
35
31
|
from prefect.settings import PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS
|
36
32
|
from prefect.types import (
|
37
|
-
MAX_VARIABLE_NAME_LENGTH,
|
38
33
|
DateTime,
|
39
34
|
KeyValueLabelsField,
|
40
35
|
Name,
|
@@ -45,6 +40,12 @@ from prefect.types import (
|
|
45
40
|
PositiveInteger,
|
46
41
|
StrictVariableValue,
|
47
42
|
)
|
43
|
+
from prefect.types.names import (
|
44
|
+
ArtifactKey,
|
45
|
+
BlockDocumentName,
|
46
|
+
BlockTypeSlug,
|
47
|
+
VariableName,
|
48
|
+
)
|
48
49
|
from prefect.utilities.collections import visit_collection
|
49
50
|
from prefect.utilities.pydantic import get_class_fields_only
|
50
51
|
|
@@ -216,7 +217,7 @@ class DeploymentCreate(ActionBaseModel):
|
|
216
217
|
flow_id: UUID = Field(..., description="The ID of the flow to deploy.")
|
217
218
|
paused: Optional[bool] = Field(default=None)
|
218
219
|
schedules: list[DeploymentScheduleCreate] = Field(
|
219
|
-
default_factory=
|
220
|
+
default_factory=lambda: [],
|
220
221
|
description="A list of schedules for the deployment.",
|
221
222
|
)
|
222
223
|
concurrency_limit: Optional[int] = Field(
|
@@ -537,7 +538,7 @@ class SavedSearchCreate(ActionBaseModel):
|
|
537
538
|
|
538
539
|
name: str = Field(default=..., description="The name of the saved search.")
|
539
540
|
filters: list[objects.SavedSearchFilter] = Field(
|
540
|
-
default_factory=
|
541
|
+
default_factory=lambda: [], description="The filter set for the saved search."
|
541
542
|
)
|
542
543
|
|
543
544
|
|
@@ -585,7 +586,7 @@ class BlockTypeCreate(ActionBaseModel):
|
|
585
586
|
"""Data used by the Prefect REST API to create a block type."""
|
586
587
|
|
587
588
|
name: str = Field(default=..., description="A block type's name")
|
588
|
-
slug:
|
589
|
+
slug: BlockTypeSlug = Field(default=..., description="A block type's slug")
|
589
590
|
logo_url: Optional[objects.HttpUrl] = Field(
|
590
591
|
default=None, description="Web URL for the block type's logo"
|
591
592
|
)
|
@@ -601,9 +602,6 @@ class BlockTypeCreate(ActionBaseModel):
|
|
601
602
|
description="A code snippet demonstrating use of the corresponding block",
|
602
603
|
)
|
603
604
|
|
604
|
-
# validators
|
605
|
-
_validate_slug_format = field_validator("slug")(validate_block_type_slug)
|
606
|
-
|
607
605
|
|
608
606
|
class BlockTypeUpdate(ActionBaseModel):
|
609
607
|
"""Data used by the Prefect REST API to update a block type."""
|
@@ -638,7 +636,7 @@ class BlockSchemaCreate(ActionBaseModel):
|
|
638
636
|
class BlockDocumentCreate(ActionBaseModel):
|
639
637
|
"""Data used by the Prefect REST API to create a block document."""
|
640
638
|
|
641
|
-
name: Optional[
|
639
|
+
name: Optional[BlockDocumentName] = Field(
|
642
640
|
default=None, description="The name of the block document"
|
643
641
|
)
|
644
642
|
data: dict[str, Any] = Field(
|
@@ -658,8 +656,6 @@ class BlockDocumentCreate(ActionBaseModel):
|
|
658
656
|
),
|
659
657
|
)
|
660
658
|
|
661
|
-
_validate_name_format = field_validator("name")(validate_block_document_name)
|
662
|
-
|
663
659
|
@model_validator(mode="before")
|
664
660
|
def validate_name_is_present_if_not_anonymous(
|
665
661
|
cls, values: dict[str, Any]
|
@@ -814,7 +810,7 @@ class WorkQueueUpdate(ActionBaseModel):
|
|
814
810
|
class ArtifactCreate(ActionBaseModel):
|
815
811
|
"""Data used by the Prefect REST API to create an artifact."""
|
816
812
|
|
817
|
-
key: Optional[
|
813
|
+
key: Optional[ArtifactKey] = Field(default=None)
|
818
814
|
type: Optional[str] = Field(default=None)
|
819
815
|
description: Optional[str] = Field(default=None)
|
820
816
|
data: Optional[Union[dict[str, Any], Any]] = Field(default=None)
|
@@ -822,8 +818,6 @@ class ArtifactCreate(ActionBaseModel):
|
|
822
818
|
flow_run_id: Optional[UUID] = Field(default=None)
|
823
819
|
task_run_id: Optional[UUID] = Field(default=None)
|
824
820
|
|
825
|
-
_validate_artifact_format = field_validator("key")(validate_artifact_key)
|
826
|
-
|
827
821
|
|
828
822
|
class ArtifactUpdate(ActionBaseModel):
|
829
823
|
"""Data used by the Prefect REST API to update an artifact."""
|
@@ -836,12 +830,7 @@ class ArtifactUpdate(ActionBaseModel):
|
|
836
830
|
class VariableCreate(ActionBaseModel):
|
837
831
|
"""Data used by the Prefect REST API to create a Variable."""
|
838
832
|
|
839
|
-
name:
|
840
|
-
default=...,
|
841
|
-
description="The name of the variable",
|
842
|
-
examples=["my_variable"],
|
843
|
-
max_length=MAX_VARIABLE_NAME_LENGTH,
|
844
|
-
)
|
833
|
+
name: VariableName = Field(default=...)
|
845
834
|
value: StrictVariableValue = Field(
|
846
835
|
default=...,
|
847
836
|
description="The value of the variable",
|
@@ -849,19 +838,11 @@ class VariableCreate(ActionBaseModel):
|
|
849
838
|
)
|
850
839
|
tags: Optional[list[str]] = Field(default=None)
|
851
840
|
|
852
|
-
# validators
|
853
|
-
_validate_name_format = field_validator("name")(validate_variable_name)
|
854
|
-
|
855
841
|
|
856
842
|
class VariableUpdate(ActionBaseModel):
|
857
843
|
"""Data used by the Prefect REST API to update a Variable."""
|
858
844
|
|
859
|
-
name: Optional[
|
860
|
-
default=None,
|
861
|
-
description="The name of the variable",
|
862
|
-
examples=["my_variable"],
|
863
|
-
max_length=MAX_VARIABLE_NAME_LENGTH,
|
864
|
-
)
|
845
|
+
name: Optional[VariableName] = Field(default=None)
|
865
846
|
value: StrictVariableValue = Field(
|
866
847
|
default=None,
|
867
848
|
description="The value of the variable",
|
@@ -869,9 +850,6 @@ class VariableUpdate(ActionBaseModel):
|
|
869
850
|
)
|
870
851
|
tags: Optional[list[str]] = Field(default=None)
|
871
852
|
|
872
|
-
# validators
|
873
|
-
_validate_name_format = field_validator("name")(validate_variable_name)
|
874
|
-
|
875
853
|
|
876
854
|
class GlobalConcurrencyLimitCreate(ActionBaseModel):
|
877
855
|
"""Data used by the Prefect REST API to create a global concurrency limit."""
|
@@ -15,10 +15,11 @@ from typing import (
|
|
15
15
|
Union,
|
16
16
|
overload,
|
17
17
|
)
|
18
|
-
from uuid import UUID
|
18
|
+
from uuid import UUID
|
19
19
|
|
20
20
|
import orjson
|
21
21
|
from pydantic import (
|
22
|
+
AfterValidator,
|
22
23
|
ConfigDict,
|
23
24
|
Discriminator,
|
24
25
|
Field,
|
@@ -35,20 +36,23 @@ from typing_extensions import Literal, Self, TypeVar
|
|
35
36
|
|
36
37
|
from prefect._internal.compatibility.async_dispatch import async_dispatch
|
37
38
|
from prefect._internal.compatibility.migration import getattr_migration
|
38
|
-
from prefect._internal.schemas.bases import
|
39
|
+
from prefect._internal.schemas.bases import (
|
40
|
+
ObjectBaseModel,
|
41
|
+
PrefectBaseModel,
|
42
|
+
TimeSeriesBaseModel,
|
43
|
+
)
|
39
44
|
from prefect._internal.schemas.fields import CreatedBy, UpdatedBy
|
40
45
|
from prefect._internal.schemas.validators import (
|
41
46
|
get_or_create_run_name,
|
42
47
|
list_length_50_or_less,
|
43
|
-
raise_on_name_alphanumeric_dashes_only,
|
44
48
|
set_run_policy_deprecated_fields,
|
45
|
-
validate_block_document_name,
|
46
49
|
validate_default_queue_id_not_none,
|
47
50
|
validate_max_metadata_length,
|
48
51
|
validate_name_present_on_nonanonymous_blocks,
|
49
52
|
validate_not_negative,
|
50
53
|
validate_parent_and_ref_diff,
|
51
54
|
)
|
55
|
+
from prefect._internal.uuid7 import uuid7
|
52
56
|
from prefect._result_records import ResultRecordMetadata
|
53
57
|
from prefect.client.schemas.schedules import SCHEDULE_TYPES
|
54
58
|
from prefect.settings import PREFECT_CLOUD_API_URL, PREFECT_CLOUD_UI_URL
|
@@ -61,6 +65,10 @@ from prefect.types import (
|
|
61
65
|
StrictVariableValue,
|
62
66
|
)
|
63
67
|
from prefect.types._datetime import DateTime, now
|
68
|
+
from prefect.types.names import (
|
69
|
+
BlockDocumentName,
|
70
|
+
raise_on_name_alphanumeric_dashes_only,
|
71
|
+
)
|
64
72
|
from prefect.utilities.asyncutils import run_coro_as_sync
|
65
73
|
from prefect.utilities.collections import AutoEnum, visit_collection
|
66
74
|
from prefect.utilities.names import generate_slug
|
@@ -181,7 +189,7 @@ def data_discriminator(x: Any) -> str:
|
|
181
189
|
return "Any"
|
182
190
|
|
183
191
|
|
184
|
-
class State(ObjectBaseModel, Generic[R]):
|
192
|
+
class State(TimeSeriesBaseModel, ObjectBaseModel, Generic[R]):
|
185
193
|
"""
|
186
194
|
The state of a run.
|
187
195
|
"""
|
@@ -412,7 +420,7 @@ class State(ObjectBaseModel, Generic[R]):
|
|
412
420
|
"""
|
413
421
|
return self.model_copy(
|
414
422
|
update={
|
415
|
-
"id":
|
423
|
+
"id": uuid7(),
|
416
424
|
"created": now("UTC"),
|
417
425
|
"updated": now("UTC"),
|
418
426
|
"timestamp": now("UTC"),
|
@@ -508,7 +516,7 @@ class FlowRunPolicy(PrefectBaseModel):
|
|
508
516
|
return values
|
509
517
|
|
510
518
|
|
511
|
-
class FlowRun(ObjectBaseModel):
|
519
|
+
class FlowRun(TimeSeriesBaseModel, ObjectBaseModel):
|
512
520
|
name: str = Field(
|
513
521
|
default_factory=lambda: generate_slug(2),
|
514
522
|
description=(
|
@@ -764,7 +772,7 @@ class Constant(TaskRunInput):
|
|
764
772
|
type: str
|
765
773
|
|
766
774
|
|
767
|
-
class TaskRun(ObjectBaseModel):
|
775
|
+
class TaskRun(TimeSeriesBaseModel, ObjectBaseModel):
|
768
776
|
name: str = Field(
|
769
777
|
default_factory=lambda: generate_slug(2), examples=["my-task-run"]
|
770
778
|
)
|
@@ -1000,7 +1008,7 @@ class BlockSchema(ObjectBaseModel):
|
|
1000
1008
|
class BlockDocument(ObjectBaseModel):
|
1001
1009
|
"""An ORM representation of a block document."""
|
1002
1010
|
|
1003
|
-
name: Optional[
|
1011
|
+
name: Optional[BlockDocumentName] = Field(
|
1004
1012
|
default=None,
|
1005
1013
|
description=(
|
1006
1014
|
"The block document's name. Not required for anonymous block documents."
|
@@ -1029,8 +1037,6 @@ class BlockDocument(ObjectBaseModel):
|
|
1029
1037
|
),
|
1030
1038
|
)
|
1031
1039
|
|
1032
|
-
_validate_name_format = field_validator("name")(validate_block_document_name)
|
1033
|
-
|
1034
1040
|
@model_validator(mode="before")
|
1035
1041
|
@classmethod
|
1036
1042
|
def validate_name_is_present_if_not_anonymous(
|
@@ -1133,7 +1139,8 @@ class Deployment(ObjectBaseModel):
|
|
1133
1139
|
default=None, description="The concurrency limit for the deployment."
|
1134
1140
|
)
|
1135
1141
|
schedules: list[DeploymentSchedule] = Field(
|
1136
|
-
default_factory=
|
1142
|
+
default_factory=lambda: [],
|
1143
|
+
description="A list of schedules for the deployment.",
|
1137
1144
|
)
|
1138
1145
|
job_variables: dict[str, Any] = Field(
|
1139
1146
|
default_factory=dict,
|
@@ -1219,7 +1226,7 @@ class ConcurrencyLimit(ObjectBaseModel):
|
|
1219
1226
|
)
|
1220
1227
|
concurrency_limit: int = Field(default=..., description="The concurrency limit.")
|
1221
1228
|
active_slots: list[UUID] = Field(
|
1222
|
-
default_factory=
|
1229
|
+
default_factory=lambda: [],
|
1223
1230
|
description="A list of active run ids using a concurrency slot",
|
1224
1231
|
)
|
1225
1232
|
|
@@ -1300,11 +1307,12 @@ class SavedSearch(ObjectBaseModel):
|
|
1300
1307
|
|
1301
1308
|
name: str = Field(default=..., description="The name of the saved search.")
|
1302
1309
|
filters: list[SavedSearchFilter] = Field(
|
1303
|
-
default_factory=
|
1310
|
+
default_factory=lambda: [],
|
1311
|
+
description="The filter set for the saved search.",
|
1304
1312
|
)
|
1305
1313
|
|
1306
1314
|
|
1307
|
-
class Log(ObjectBaseModel):
|
1315
|
+
class Log(TimeSeriesBaseModel, ObjectBaseModel):
|
1308
1316
|
"""An ORM representation of log data."""
|
1309
1317
|
|
1310
1318
|
name: str = Field(default=..., description="The logger name.")
|
@@ -1644,7 +1652,9 @@ class Variable(ObjectBaseModel):
|
|
1644
1652
|
|
1645
1653
|
class FlowRunInput(ObjectBaseModel):
|
1646
1654
|
flow_run_id: UUID = Field(description="The flow run ID associated with the input.")
|
1647
|
-
key: str = Field(
|
1655
|
+
key: Annotated[str, AfterValidator(raise_on_name_alphanumeric_dashes_only)] = Field(
|
1656
|
+
description="The key of the input."
|
1657
|
+
)
|
1648
1658
|
value: str = Field(description="The value of the input.")
|
1649
1659
|
sender: Optional[str] = Field(default=None, description="The sender of the input.")
|
1650
1660
|
|
@@ -1658,12 +1668,6 @@ class FlowRunInput(ObjectBaseModel):
|
|
1658
1668
|
"""
|
1659
1669
|
return orjson.loads(self.value)
|
1660
1670
|
|
1661
|
-
@field_validator("key", check_fields=False)
|
1662
|
-
@classmethod
|
1663
|
-
def validate_name_characters(cls, v: str) -> str:
|
1664
|
-
raise_on_name_alphanumeric_dashes_only(v)
|
1665
|
-
return v
|
1666
|
-
|
1667
1671
|
|
1668
1672
|
class GlobalConcurrencyLimit(ObjectBaseModel):
|
1669
1673
|
"""An ORM representation of a global concurrency limit"""
|
@@ -743,7 +743,9 @@ class RunnerDeployment(BaseModel):
|
|
743
743
|
entry_path = (
|
744
744
|
Path(flow_file).absolute().relative_to(Path.cwd().absolute())
|
745
745
|
)
|
746
|
-
deployment.entrypoint =
|
746
|
+
deployment.entrypoint = (
|
747
|
+
f"{entry_path}:{getattr(flow.fn, '__qualname__', flow.fn.__name__)}"
|
748
|
+
)
|
747
749
|
|
748
750
|
if entrypoint_type == EntrypointType.FILE_PATH and not deployment._path:
|
749
751
|
deployment._path = "."
|