prefect-client 3.1.13__tar.gz → 3.1.15__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.1.13/src/prefect_client.egg-info → prefect-client-3.1.15}/PKG-INFO +1 -1
- {prefect-client-3.1.13 → prefect-client-3.1.15}/requirements.txt +1 -1
- prefect-client-3.1.15/src/prefect/__main__.py +4 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_experimental/lineage.py +92 -11
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/services.py +1 -1
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_version.py +3 -3
- prefect-client-3.1.15/src/prefect/artifacts.py +746 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/core.py +1 -1
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/notifications.py +5 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/cache_policies.py +50 -2
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_automations/client.py +4 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_deployments/client.py +3 -3
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/actions.py +11 -1
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/schedules.py +4 -4
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/context.py +16 -6
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/base.py +13 -16
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/runner.py +117 -4
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/clients.py +39 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/filters.py +34 -34
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/flow_engine.py +274 -114
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/flows.py +253 -10
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/configuration.py +2 -5
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/loggers.py +1 -2
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runner/runner.py +79 -58
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runtime/task_run.py +37 -9
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/tasks.py +45 -7
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/types/__init__.py +6 -5
- prefect-client-3.1.15/src/prefect/types/_datetime.py +19 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/render_swagger.py +1 -1
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/templating.py +7 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15/src/prefect_client.egg-info}/PKG-INFO +1 -1
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect_client.egg-info/SOURCES.txt +2 -0
- prefect-client-3.1.13/src/prefect/artifacts.py +0 -443
- {prefect-client-3.1.13 → prefect-client-3.1.15}/LICENSE +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/MANIFEST.in +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/README.md +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/requirements-client.txt +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/requirements-dev.txt +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/setup.cfg +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/setup.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/.prefectignore +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_experimental/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/_logging.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/integrations.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/annotations/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/annotations/pendulum.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/pytz.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/retries.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/agent.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/automations.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/abstract.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/fields.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/redis.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/system.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/blocks/webhook.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/base.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/cloud.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/collections.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/constants.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/base.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/filters.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/objects.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/responses.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/subscriptions.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/types/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/client/utilities.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/_events.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/context.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/services.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/sync.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/deployments.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/schedules.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/steps/core.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/docker/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/docker/docker_image.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/engine.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/actions.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/cli/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/cli/automations.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/related.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/schemas/automations.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/schemas/events.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/utilities.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/events/worker.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/exceptions.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/filesystems.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/flow_runs.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/futures.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/base.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/input/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/input/actions.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/input/run_input.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/locking/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/locking/filesystem.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/locking/memory.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/locking/protocol.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/filters.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/formatters.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/handlers.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/highlighters.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/logging/logging.yml +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/main.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/plugins.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/py.typed +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/results.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runner/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runner/server.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runner/storage.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runner/submit.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runner/utils.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runtime/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runtime/deployment.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/runtime/flow_run.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/serializers.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/base.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/constants.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/context.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/legacy.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/api.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/cli.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/client.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/cloud.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/deployments.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/experiments.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/flows.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/internal.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/logging.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/results.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/root.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/runner.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/api.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/database.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/events.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/root.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/services.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/tasks.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/testing.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/models/worker.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/profiles.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/profiles.toml +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/settings/sources.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/states.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/task_engine.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/task_runners.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/task_runs.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/task_worker.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/logging.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/processors.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/telemetry/services.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/transactions.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/types/entrypoint.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/_engine.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/_git.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/annotations.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/callables.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/collections.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/compat.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/context.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/dispatch.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/engine.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/filesystem.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/generics.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/hashing.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/importtools.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/math.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/names.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/processutils.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/pydantic.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/services.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/slugify.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/text.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/timeout.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/urls.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/utilities/visualization.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/variables.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/__init__.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/base.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/block.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/cloud.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/process.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/server.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/workers/utilities.py +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect_client.egg-info/dependency_links.txt +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect_client.egg-info/requires.txt +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect_client.egg-info/top_level.txt +0 -0
- {prefect-client-3.1.13 → prefect-client-3.1.15}/versioneer.py +0 -0
@@ -1,15 +1,16 @@
|
|
1
1
|
from typing import TYPE_CHECKING, Any, Dict, Literal, Optional, Sequence, Union
|
2
2
|
|
3
|
+
from typing_extensions import TypeAlias
|
4
|
+
|
3
5
|
from prefect.events.related import related_resources_from_run_context
|
4
|
-
from prefect.events.schemas.events import RelatedResource
|
6
|
+
from prefect.events.schemas.events import RelatedResource
|
5
7
|
from prefect.events.utilities import emit_event
|
6
8
|
from prefect.settings import get_current_settings
|
7
9
|
|
8
10
|
if TYPE_CHECKING:
|
9
11
|
from prefect.results import ResultStore
|
10
12
|
|
11
|
-
|
12
|
-
DownstreamResources = Sequence[Union[Resource, dict[str, str]]]
|
13
|
+
LineageResources: TypeAlias = Sequence[Union[RelatedResource, dict[str, str]]]
|
13
14
|
|
14
15
|
# Map block types to their URI schemes
|
15
16
|
STORAGE_URI_SCHEMES = {
|
@@ -47,8 +48,8 @@ def get_result_resource_uri(
|
|
47
48
|
|
48
49
|
async def emit_lineage_event(
|
49
50
|
event_name: str,
|
50
|
-
upstream_resources: Optional[
|
51
|
-
downstream_resources: Optional[
|
51
|
+
upstream_resources: Optional[LineageResources] = None,
|
52
|
+
downstream_resources: Optional[LineageResources] = None,
|
52
53
|
direction_of_run_from_event: Literal["upstream", "downstream"] = "downstream",
|
53
54
|
) -> None:
|
54
55
|
"""Emit lineage events showing relationships between resources.
|
@@ -73,7 +74,14 @@ async def emit_lineage_event(
|
|
73
74
|
downstream_resources = list(downstream_resources) if downstream_resources else []
|
74
75
|
|
75
76
|
async with get_client() as client:
|
76
|
-
|
77
|
+
context_resources = await related_resources_from_run_context(client)
|
78
|
+
|
79
|
+
tag_resources = [
|
80
|
+
res for res in context_resources if res.get("prefect.resource.role") == "tag"
|
81
|
+
]
|
82
|
+
context_resources = [
|
83
|
+
res for res in context_resources if res.get("prefect.resource.role") != "tag"
|
84
|
+
]
|
77
85
|
|
78
86
|
# NOTE: We handle adding run-related resources to the event here instead of in
|
79
87
|
# the EventsWorker because not all run-related resources are upstream from
|
@@ -82,9 +90,9 @@ async def emit_lineage_event(
|
|
82
90
|
# lineage-related events, tracks upstream resources only. For downstream
|
83
91
|
# resources, we need to emit an event for each downstream resource.
|
84
92
|
if direction_of_run_from_event == "downstream":
|
85
|
-
downstream_resources.extend(
|
93
|
+
downstream_resources.extend(context_resources)
|
86
94
|
else:
|
87
|
-
upstream_resources.extend(
|
95
|
+
upstream_resources.extend(context_resources)
|
88
96
|
|
89
97
|
# We want to consider all resources upstream and downstream of the event as
|
90
98
|
# lineage-related, including flows, flow runs, etc., so we add the label to
|
@@ -101,7 +109,7 @@ async def emit_lineage_event(
|
|
101
109
|
emit_kwargs: Dict[str, Any] = {
|
102
110
|
"event": event_name,
|
103
111
|
"resource": resource,
|
104
|
-
"related": upstream_resources,
|
112
|
+
"related": upstream_resources + tag_resources,
|
105
113
|
}
|
106
114
|
|
107
115
|
emit_event(**emit_kwargs)
|
@@ -110,7 +118,7 @@ async def emit_lineage_event(
|
|
110
118
|
async def emit_result_read_event(
|
111
119
|
store: "ResultStore",
|
112
120
|
result_key: str,
|
113
|
-
downstream_resources: Optional[
|
121
|
+
downstream_resources: Optional[LineageResources] = None,
|
114
122
|
cached: bool = False,
|
115
123
|
) -> None:
|
116
124
|
"""
|
@@ -150,7 +158,7 @@ async def emit_result_read_event(
|
|
150
158
|
async def emit_result_write_event(
|
151
159
|
store: "ResultStore",
|
152
160
|
result_key: str,
|
153
|
-
upstream_resources: Optional[
|
161
|
+
upstream_resources: Optional[LineageResources] = None,
|
154
162
|
) -> None:
|
155
163
|
"""
|
156
164
|
Emit a lineage event showing a task or flow result was written.
|
@@ -178,3 +186,76 @@ async def emit_result_write_event(
|
|
178
186
|
downstream_resources=downstream_resources,
|
179
187
|
direction_of_run_from_event="upstream",
|
180
188
|
)
|
189
|
+
|
190
|
+
|
191
|
+
async def emit_external_resource_lineage(
|
192
|
+
event_name: str = "prefect.lineage.event",
|
193
|
+
upstream_resources: Optional[LineageResources] = None,
|
194
|
+
downstream_resources: Optional[LineageResources] = None,
|
195
|
+
context_resources: Optional[LineageResources] = None,
|
196
|
+
) -> None:
|
197
|
+
"""Emit lineage events connecting external resources to Prefect context resources.
|
198
|
+
|
199
|
+
This function emits events that place the current Prefect context resources
|
200
|
+
(like flow runs, task runs) as:
|
201
|
+
1. Downstream of any provided upstream external resources
|
202
|
+
2. Upstream of any provided downstream external resources
|
203
|
+
|
204
|
+
Args:
|
205
|
+
upstream_resources: Optional sequence of resources that are upstream of the
|
206
|
+
current Prefect context
|
207
|
+
downstream_resources: Optional sequence of resources that are downstream of
|
208
|
+
the current Prefect context
|
209
|
+
"""
|
210
|
+
from prefect.client.orchestration import get_client
|
211
|
+
|
212
|
+
if not get_current_settings().experiments.lineage_events_enabled:
|
213
|
+
return
|
214
|
+
|
215
|
+
upstream_resources = list(upstream_resources) if upstream_resources else []
|
216
|
+
downstream_resources = list(downstream_resources) if downstream_resources else []
|
217
|
+
|
218
|
+
# Get the current Prefect context resources (flow runs, task runs, etc.)
|
219
|
+
if not context_resources:
|
220
|
+
async with get_client() as client:
|
221
|
+
context_resources = await related_resources_from_run_context(client)
|
222
|
+
|
223
|
+
tag_resources = [
|
224
|
+
res for res in context_resources if res.get("prefect.resource.role") == "tag"
|
225
|
+
]
|
226
|
+
context_resources = [
|
227
|
+
res for res in context_resources if res.get("prefect.resource.role") != "tag"
|
228
|
+
]
|
229
|
+
|
230
|
+
# Add lineage group label to all resources
|
231
|
+
for res in upstream_resources + downstream_resources + context_resources:
|
232
|
+
if "prefect.resource.lineage-group" not in res:
|
233
|
+
res["prefect.resource.lineage-group"] = "global"
|
234
|
+
|
235
|
+
# For each context resource, emit an event showing it as downstream of upstream resources
|
236
|
+
if upstream_resources:
|
237
|
+
for context_resource in context_resources:
|
238
|
+
emit_kwargs: Dict[str, Any] = {
|
239
|
+
"event": "prefect.lineage.upstream-interaction",
|
240
|
+
"resource": context_resource,
|
241
|
+
"related": upstream_resources + tag_resources,
|
242
|
+
}
|
243
|
+
emit_event(**emit_kwargs)
|
244
|
+
|
245
|
+
# For each downstream resource, emit an event showing it as downstream of context resources
|
246
|
+
for downstream_resource in downstream_resources:
|
247
|
+
emit_kwargs: Dict[str, Any] = {
|
248
|
+
"event": "prefect.lineage.downstream-interaction",
|
249
|
+
"resource": downstream_resource,
|
250
|
+
"related": context_resources + tag_resources,
|
251
|
+
}
|
252
|
+
emit_event(**emit_kwargs)
|
253
|
+
|
254
|
+
# For each downstream resource, emit an event showing it as downstream of upstream resources
|
255
|
+
if upstream_resources:
|
256
|
+
direct_emit_kwargs = {
|
257
|
+
"event": event_name,
|
258
|
+
"resource": downstream_resource,
|
259
|
+
"related": upstream_resources + tag_resources,
|
260
|
+
}
|
261
|
+
emit_event(**direct_emit_kwargs)
|
{prefect-client-3.1.13 → prefect-client-3.1.15}/src/prefect/_internal/concurrency/services.py
RENAMED
@@ -65,7 +65,7 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
65
65
|
# failure to process items. This is particularly relevant for services
|
66
66
|
# which use an httpx client. See related issue at
|
67
67
|
# https://github.com/python/cpython/issues/86813
|
68
|
-
threading._register_atexit(self._at_exit) # pyright: ignore[
|
68
|
+
threading._register_atexit(self._at_exit) # pyright: ignore[reportUnknownMemberType, reportAttributeAccessIssue]
|
69
69
|
|
70
70
|
def _at_exit(self) -> None:
|
71
71
|
self.drain(at_exit=True)
|
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-01-
|
11
|
+
"date": "2025-01-30T11:31:29-0800",
|
12
12
|
"dirty": true,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "3.1.
|
14
|
+
"full-revisionid": "3ac3d54885a6157989efd79cbfc0d681b4bb7e0c",
|
15
|
+
"version": "3.1.15"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|