prefect-client 3.8.8.dev3__tar.gz → 3.8.9.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/PKG-INFO +3 -4
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/README.md +1 -1
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/pyproject.toml +1 -2
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/__init__.py +3 -3
- prefect_client-3.8.9.dev1/src/prefect/_build_info.py +5 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/_logging.py +1 -7
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/services.py +33 -12
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/collections.py +24 -4
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/manager.py +1 -7
- prefect_client-3.8.9.dev1/src/prefect/_internal/server_maintenance.py +46 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/core.py +1 -4
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/notifications.py +1 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/__init__.py +5 -9
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/cache_policies.py +3 -3
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/base.py +52 -4
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/__init__.py +3 -3
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/filesystems.py +16 -10
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/formatters.py +2 -5
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/loggers.py +1 -5
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/runner.py +8 -1
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/task_engine.py +14 -10
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/tasks.py +3 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/callables/__init__.py +1 -1
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/filesystem/AGENTS.md +1 -1
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/filesystem/__init__.py +10 -1
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/schema_tools/validation.py +5 -2
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/templating/__init__.py +9 -2
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/AGENTS.md +1 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/base.py +53 -32
- prefect_client-3.8.9.dev1/src/prefect/workers/server.py +128 -0
- prefect_client-3.8.8.dev3/src/prefect/_build_info.py +0 -5
- prefect_client-3.8.8.dev3/src/prefect/workers/server.py +0 -66
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/.gitignore +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/LICENSE +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/hatch_build.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/__main__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/_launchers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/plugins/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/plugins/apply.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/plugins/manager.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/plugins/spec.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_flow_run_suspension.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/ci_detection.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/device_id.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/emit.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/enabled.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/milestones.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/notice.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/analytics/service.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/ast_utils.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/attempt_control.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/buildx.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/backports.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/deprecated_paths.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/compatibility/starlette.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/control_listener.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/deprecated.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/engine.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/git.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/infrastructure_exit_codes.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/installation.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/launchers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/lazy.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/metrics.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/observability.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/observers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/apply.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/diagnostics.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/spec.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/startup.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/pydantic/validated_func.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/result_records.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schema.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schemas/_registry.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/send_entrypoint_logs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/states.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/testing.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/urls.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/version_checking.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/versioning.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/waiters.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/fetcher.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/generator.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/models.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/naming.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/renderer.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/schema_converter.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/templates/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/templates/sdk.py.jinja +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/types.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_sdk/unions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/agent.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/analytics/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/automations.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/_file_collector.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/_ignore_filter.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/_path_resolver.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/_zip_builder.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/_zip_extractor.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/bundles/execute.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/attribution.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_events/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_events/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/worker_channel.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/_leases.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/_sync.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/context.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/docker/_buildx.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/engine.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/related.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/subscribers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/flows.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/futures.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/locking/_filelock.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/main.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/plugins.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/py.typed +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/results.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_cancel_finalizer.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_cancellation_manager.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_control_channel.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_deployment_registry.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_event_emitter.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_flow_resolver.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_flow_run_executor.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_hook_runner.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_limit_manager.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_process_manager.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_scheduled_run_poller.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_starter_bundle.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_starter_direct.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_starter_engine.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_state_proposer.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_uv_command.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_workspace_hook_runner.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_workspace_resolver.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_workspace_runtime.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_workspace_runtime_bootstrap.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_workspace_starter.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/_workspace_supervisor.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/schedules.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/serializers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/_ui_static.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/background_workers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/concurrency_limits_v2.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/_types.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/plugins.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/concurrency.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/docket.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/root.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/server/worker_channel.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/telemetry.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/states.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/transactions.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/types/_concurrency.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/types/names.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/asyncutils/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/asyncutils/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/callables/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/engine/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/engine/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/processutils/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/processutils/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/schema_tools/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/templating/AGENTS.md +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/variables.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_cleanup.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_cleanup_handlers.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_worker_channel/__init__.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_worker_channel/_protocol.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_worker_channel/_state.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_worker_channel/_sync.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/_worker_channel/_transport.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/workers/utilities.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: prefect-client
|
|
3
|
-
Version: 3.8.
|
|
3
|
+
Version: 3.8.9.dev1
|
|
4
4
|
Summary: Workflow orchestration and management.
|
|
5
5
|
Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
|
|
6
6
|
Project-URL: Documentation, https://docs.prefect.io
|
|
@@ -14,13 +14,12 @@ Classifier: Intended Audience :: System Administrators
|
|
|
14
14
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
15
|
Classifier: Natural Language :: English
|
|
16
16
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
22
21
|
Classifier: Topic :: Software Development :: Libraries
|
|
23
|
-
Requires-Python: <3.15,>=3.
|
|
22
|
+
Requires-Python: <3.15,>=3.11
|
|
24
23
|
Requires-Dist: amplitude-analytics<2.0.0,>=1.2.1
|
|
25
24
|
Requires-Dist: anyio<5.0.0,>=4.4.0
|
|
26
25
|
Requires-Dist: asgi-lifespan<3.0,>=1.0
|
|
@@ -95,7 +94,7 @@ or other resource-constrained environments.
|
|
|
95
94
|
|
|
96
95
|
## Getting started
|
|
97
96
|
|
|
98
|
-
`prefect-client` shares the same installation requirements as prefect. To install, make sure you are on Python 3.
|
|
97
|
+
`prefect-client` shares the same installation requirements as prefect. To install, make sure you are on Python 3.11 or
|
|
99
98
|
later and run the following command:
|
|
100
99
|
|
|
101
100
|
```bash
|
|
@@ -26,7 +26,7 @@ or other resource-constrained environments.
|
|
|
26
26
|
|
|
27
27
|
## Getting started
|
|
28
28
|
|
|
29
|
-
`prefect-client` shares the same installation requirements as prefect. To install, make sure you are on Python 3.
|
|
29
|
+
`prefect-client` shares the same installation requirements as prefect. To install, make sure you are on Python 3.11 or
|
|
30
30
|
later and run the following command:
|
|
31
31
|
|
|
32
32
|
```bash
|
|
@@ -7,7 +7,7 @@ name = "prefect-client"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = "Workflow orchestration and management."
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.11,<3.15"
|
|
11
11
|
license = { text = "Apache-2.0" }
|
|
12
12
|
authors = [{ name = "Prefect Technologies, Inc.", email = "help@prefect.io" }]
|
|
13
13
|
classifiers = [
|
|
@@ -16,7 +16,6 @@ classifiers = [
|
|
|
16
16
|
"Intended Audience :: System Administrators",
|
|
17
17
|
"License :: OSI Approved :: Apache Software License",
|
|
18
18
|
"Programming Language :: Python :: 3 :: Only",
|
|
19
|
-
"Programming Language :: Python :: 3.10",
|
|
20
19
|
"Programming Language :: Python :: 3.11",
|
|
21
20
|
"Programming Language :: Python :: 3.12",
|
|
22
21
|
"Programming Language :: Python :: 3.13",
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
# Setup version and path constants
|
|
4
4
|
|
|
5
|
-
import sys
|
|
6
5
|
from . import _build_info
|
|
7
6
|
import importlib
|
|
8
7
|
import pathlib
|
|
@@ -212,8 +211,9 @@ def __getattr__(attr_name: str) -> Any:
|
|
|
212
211
|
return getattr(module, attr_name)
|
|
213
212
|
except ModuleNotFoundError as ex:
|
|
214
213
|
mname, _, attr = (ex.name or "").rpartition(".")
|
|
215
|
-
|
|
216
|
-
|
|
214
|
+
raise AttributeError(
|
|
215
|
+
f"module {mname} has no attribute {attr}", name=mname, obj=attr
|
|
216
|
+
) from ex
|
|
217
217
|
|
|
218
218
|
|
|
219
219
|
# Initialize plugins on import if enabled
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import sys
|
|
3
2
|
|
|
4
3
|
from typing_extensions import Self
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def getLevelNamesMapping() -> dict[str, int]:
|
|
9
|
-
return getattr(logging, "_nameToLevel").copy()
|
|
10
|
-
else:
|
|
11
|
-
getLevelNamesMapping = logging.getLevelNamesMapping # novermin
|
|
5
|
+
getLevelNamesMapping = logging.getLevelNamesMapping
|
|
12
6
|
|
|
13
7
|
|
|
14
8
|
class SafeLogger(logging.Logger):
|
|
@@ -57,6 +57,9 @@ if hasattr(os, "register_at_fork"):
|
|
|
57
57
|
class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
58
58
|
_instances: dict[int, Self] = {}
|
|
59
59
|
_instance_lock = threading.Lock()
|
|
60
|
+
# Keep cache access separate from startup serialization: instance() waits for
|
|
61
|
+
# the global loop, whose service cleanup must be able to evict instances.
|
|
62
|
+
_instance_cache_lock = threading.Lock()
|
|
60
63
|
_max_queue_size: int = 0 # 0 means unbounded
|
|
61
64
|
|
|
62
65
|
def __init__(self, *args: Hashable) -> None:
|
|
@@ -96,6 +99,7 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
96
99
|
"""Reset class-level state after fork() to prevent deadlocks in child process."""
|
|
97
100
|
cls._instances.clear()
|
|
98
101
|
cls._instance_lock = threading.Lock()
|
|
102
|
+
cls._instance_cache_lock = threading.Lock()
|
|
99
103
|
|
|
100
104
|
def start(self) -> None:
|
|
101
105
|
logger.debug("Starting service %r", self)
|
|
@@ -281,7 +285,8 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
281
285
|
"""
|
|
282
286
|
futures: list[concurrent.futures.Future[bool]] = []
|
|
283
287
|
with cls._instance_lock:
|
|
284
|
-
|
|
288
|
+
with cls._instance_cache_lock:
|
|
289
|
+
instances = tuple(cls._instances.values())
|
|
285
290
|
|
|
286
291
|
for instance in instances:
|
|
287
292
|
futures.append(instance._drain(at_exit=at_exit))
|
|
@@ -312,28 +317,44 @@ class _QueueServiceBase(abc.ABC, Generic[T]):
|
|
|
312
317
|
"""
|
|
313
318
|
with cls._instance_lock:
|
|
314
319
|
key = hash((cls, *args))
|
|
315
|
-
|
|
316
|
-
|
|
320
|
+
with cls._instance_cache_lock:
|
|
321
|
+
instance = cls._instances.get(key)
|
|
322
|
+
if instance is None or instance._stopped:
|
|
323
|
+
instance = cls._new_instance(*args)
|
|
317
324
|
|
|
318
|
-
return
|
|
325
|
+
return instance
|
|
319
326
|
|
|
320
327
|
def _remove_instance(self):
|
|
321
|
-
|
|
328
|
+
# Only evict this instance; a newer instance may already be cached under
|
|
329
|
+
# the same key
|
|
330
|
+
with self._instance_cache_lock:
|
|
331
|
+
if self._instances.get(self._key) is self:
|
|
332
|
+
self._instances.pop(self._key, None)
|
|
322
333
|
|
|
323
334
|
@classmethod
|
|
324
335
|
def _new_instance(cls, *args: Hashable) -> Self:
|
|
325
336
|
"""
|
|
326
|
-
Create and start a new instance of the service.
|
|
337
|
+
Create, cache, and start a new instance of the service.
|
|
327
338
|
"""
|
|
328
339
|
instance = cls(*args)
|
|
329
340
|
|
|
330
|
-
#
|
|
331
|
-
|
|
332
|
-
|
|
341
|
+
# Cache before starting so that a service which stops while starting, e.g.
|
|
342
|
+
# because its lifespan failed, evicts itself instead of being cached after
|
|
343
|
+
# it has already stopped
|
|
344
|
+
with cls._instance_cache_lock:
|
|
345
|
+
cls._instances[instance._key] = instance
|
|
333
346
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
347
|
+
try:
|
|
348
|
+
# If already on the global loop, just start it here to avoid deadlock
|
|
349
|
+
if threading.get_ident() == get_global_loop().thread.ident:
|
|
350
|
+
instance.start()
|
|
351
|
+
|
|
352
|
+
# Otherwise, bind the service to the global loop
|
|
353
|
+
else:
|
|
354
|
+
from_sync.call_soon_in_loop_thread(create_call(instance.start)).result()
|
|
355
|
+
except BaseException:
|
|
356
|
+
instance._remove_instance()
|
|
357
|
+
raise
|
|
337
358
|
|
|
338
359
|
return instance
|
|
339
360
|
|
{prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/collections.py
RENAMED
|
@@ -8,6 +8,7 @@ typically to register Blocks or other Prefect-aware classes.
|
|
|
8
8
|
Public API is re-exported from `prefect.plugins`.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import importlib
|
|
11
12
|
from importlib.metadata import EntryPoints, entry_points
|
|
12
13
|
from types import ModuleType
|
|
13
14
|
from typing import Any, Union
|
|
@@ -40,26 +41,45 @@ def safe_load_entrypoints(entrypoints: EntryPoints) -> dict[str, Union[Exception
|
|
|
40
41
|
return results
|
|
41
42
|
|
|
42
43
|
|
|
43
|
-
def load_prefect_collections(
|
|
44
|
+
def load_prefect_collections(
|
|
45
|
+
reload: bool = False,
|
|
46
|
+
) -> dict[str, Union[ModuleType, Exception]]:
|
|
44
47
|
"""
|
|
45
48
|
Load all Prefect collections that define an entrypoint in the group
|
|
46
49
|
`prefect.collections`.
|
|
50
|
+
|
|
51
|
+
Results are cached. With `reload=True`, import and metadata caches are
|
|
52
|
+
invalidated and entry points that are new or failed on a previous call are
|
|
53
|
+
loaded, so packages installed or repaired after the first call are picked up.
|
|
47
54
|
"""
|
|
48
55
|
global _collections
|
|
49
56
|
|
|
50
|
-
if _collections is not None:
|
|
57
|
+
if _collections is not None and not reload:
|
|
51
58
|
return _collections
|
|
52
59
|
|
|
60
|
+
if _collections is not None:
|
|
61
|
+
importlib.invalidate_caches()
|
|
62
|
+
|
|
53
63
|
collection_entrypoints: EntryPoints = entry_points(group="prefect.collections")
|
|
54
|
-
|
|
64
|
+
if _collections is not None:
|
|
65
|
+
known = {
|
|
66
|
+
name
|
|
67
|
+
for name, result in _collections.items()
|
|
68
|
+
if not isinstance(result, Exception)
|
|
69
|
+
}
|
|
70
|
+
collection_entrypoints = EntryPoints(
|
|
71
|
+
ep for ep in collection_entrypoints if (ep.name or ep.value) not in known
|
|
72
|
+
)
|
|
73
|
+
loaded: dict[str, Union[Exception, Any]] = safe_load_entrypoints(
|
|
55
74
|
collection_entrypoints
|
|
56
75
|
)
|
|
76
|
+
collections = {**_collections, **loaded} if _collections is not None else loaded
|
|
57
77
|
|
|
58
78
|
# TODO: Consider the utility of this once we've established this pattern.
|
|
59
79
|
# We cannot use a logger here because logging is not yet initialized.
|
|
60
80
|
# It would be nice if logging was initialized so we could log failures
|
|
61
81
|
# at least.
|
|
62
|
-
for name, result in
|
|
82
|
+
for name, result in loaded.items():
|
|
63
83
|
if isinstance(result, Exception):
|
|
64
84
|
print(
|
|
65
85
|
# TODO: Use exc_info if we have a logger
|
{prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/_internal/plugins/manager.py
RENAMED
|
@@ -7,7 +7,6 @@ from __future__ import annotations
|
|
|
7
7
|
import importlib.metadata as md
|
|
8
8
|
import inspect
|
|
9
9
|
import logging
|
|
10
|
-
import sys
|
|
11
10
|
from typing import Any
|
|
12
11
|
|
|
13
12
|
import pluggy
|
|
@@ -55,12 +54,7 @@ def load_entry_point_plugins(
|
|
|
55
54
|
deny: If set, skip plugins with names in this set
|
|
56
55
|
logger: Logger for reporting load failures
|
|
57
56
|
"""
|
|
58
|
-
|
|
59
|
-
if sys.version_info >= (3, 10):
|
|
60
|
-
entry_points_list = md.entry_points(group=ENTRYPOINTS_GROUP)
|
|
61
|
-
else:
|
|
62
|
-
# Python 3.9 returns a dict-like object
|
|
63
|
-
entry_points_list = md.entry_points().get(ENTRYPOINTS_GROUP, [])
|
|
57
|
+
entry_points_list = md.entry_points(group=ENTRYPOINTS_GROUP)
|
|
64
58
|
|
|
65
59
|
for ep in entry_points_list:
|
|
66
60
|
if allow and ep.name not in allow:
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Process-wide record of requests waiting out Prefect API maintenance.
|
|
3
|
+
|
|
4
|
+
When the API answers with a `Prefect-Maintenance: true` header, the HTTP clients
|
|
5
|
+
retry indefinitely, sleeping for the `Retry-After` they were given. Health checks
|
|
6
|
+
read this record so that a process deliberately waiting is not reported as stuck.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import datetime
|
|
10
|
+
import threading
|
|
11
|
+
|
|
12
|
+
import prefect.types._datetime
|
|
13
|
+
|
|
14
|
+
_backoff_ends_at: datetime.datetime | None = None
|
|
15
|
+
_backoff_lock = threading.Lock()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def record_maintenance_backoff(retry_seconds: float) -> None:
|
|
19
|
+
"""
|
|
20
|
+
Record that a request is sleeping for `retry_seconds` before retrying a
|
|
21
|
+
maintenance response.
|
|
22
|
+
"""
|
|
23
|
+
global _backoff_ends_at
|
|
24
|
+
ends_at = prefect.types._datetime.now("UTC") + datetime.timedelta(
|
|
25
|
+
seconds=retry_seconds
|
|
26
|
+
)
|
|
27
|
+
with _backoff_lock:
|
|
28
|
+
# Concurrent requests each back off; the latest end wins.
|
|
29
|
+
if _backoff_ends_at is None or ends_at > _backoff_ends_at:
|
|
30
|
+
_backoff_ends_at = ends_at
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def maintenance_backoff_ends_at() -> datetime.datetime | None:
|
|
34
|
+
"""
|
|
35
|
+
When the latest maintenance back-off in this process ends, or `None` if no
|
|
36
|
+
request has backed off for maintenance.
|
|
37
|
+
"""
|
|
38
|
+
with _backoff_lock:
|
|
39
|
+
return _backoff_ends_at
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def reset_maintenance_backoff() -> None:
|
|
43
|
+
"""Forget any recorded maintenance back-off (for tests)."""
|
|
44
|
+
global _backoff_ends_at
|
|
45
|
+
with _backoff_lock:
|
|
46
|
+
_backoff_ends_at = None
|
|
@@ -81,10 +81,7 @@ R = TypeVar("R")
|
|
|
81
81
|
P = ParamSpec("P")
|
|
82
82
|
|
|
83
83
|
ResourceTuple = tuple[dict[str, Any], list[dict[str, Any]]]
|
|
84
|
-
UnionTypes: tuple[object, ...] = (Union,)
|
|
85
|
-
if hasattr(types, "UnionType"):
|
|
86
|
-
# Python 3.10+ only
|
|
87
|
-
UnionTypes = (*UnionTypes, types.UnionType)
|
|
84
|
+
UnionTypes: tuple[object, ...] = (Union, types.UnionType)
|
|
88
85
|
|
|
89
86
|
|
|
90
87
|
def _nested_type_args(annotation: Any) -> tuple[Any, ...]:
|
|
@@ -751,6 +751,7 @@ class MattermostWebhook(AbstractAppriseNotificationBlock):
|
|
|
751
751
|
token=self.token.get_secret_value(),
|
|
752
752
|
fullpath=self.path,
|
|
753
753
|
host=self.hostname,
|
|
754
|
+
user=self.botname,
|
|
754
755
|
targets=self.channels,
|
|
755
756
|
include_image=self.include_image,
|
|
756
757
|
port=self.port,
|
|
@@ -174,15 +174,11 @@ def _is_local_module(module_name: str, module_path: str | None = None) -> bool:
|
|
|
174
174
|
if module_name in sys.builtin_module_names:
|
|
175
175
|
return False
|
|
176
176
|
|
|
177
|
-
# Check if it's in the standard library
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
module_name in sys.stdlib_module_names
|
|
183
|
-
or base_module in sys.stdlib_module_names
|
|
184
|
-
):
|
|
185
|
-
return False
|
|
177
|
+
# Check if it's in the standard library
|
|
178
|
+
# Check both full module name and base module name
|
|
179
|
+
base_module = module_name.split(".")[0]
|
|
180
|
+
if module_name in sys.stdlib_module_names or base_module in sys.stdlib_module_names:
|
|
181
|
+
return False
|
|
186
182
|
|
|
187
183
|
# If we have the module path, check if it's in site-packages or dist-packages
|
|
188
184
|
if module_path:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
import sys
|
|
3
3
|
from copy import deepcopy
|
|
4
|
-
from dataclasses import dataclass, field
|
|
4
|
+
from dataclasses import dataclass, field, replace
|
|
5
5
|
from logging import Logger
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from typing import (
|
|
@@ -255,7 +255,7 @@ class CompoundCachePolicy(CachePolicy):
|
|
|
255
255
|
|
|
256
256
|
if inputs_policies:
|
|
257
257
|
new = Inputs(exclude=[other])
|
|
258
|
-
return
|
|
258
|
+
return replace(self, policies=[*self.policies, new])
|
|
259
259
|
else:
|
|
260
260
|
# no dependency on inputs already
|
|
261
261
|
return self
|
|
@@ -404,7 +404,7 @@ class Inputs(CachePolicy):
|
|
|
404
404
|
def __sub__(self, other: str) -> "CachePolicy":
|
|
405
405
|
if not isinstance(other, str): # type: ignore[reportUnnecessaryIsInstance]
|
|
406
406
|
raise TypeError("Can only subtract strings from key policies.")
|
|
407
|
-
return
|
|
407
|
+
return replace(self, exclude=self.exclude + [other])
|
|
408
408
|
|
|
409
409
|
|
|
410
410
|
INPUTS = Inputs()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import copy
|
|
2
|
+
import math
|
|
2
3
|
import sys
|
|
3
4
|
import threading
|
|
4
5
|
import time
|
|
@@ -7,6 +8,7 @@ from collections import defaultdict
|
|
|
7
8
|
from collections.abc import AsyncGenerator, Awaitable, MutableMapping
|
|
8
9
|
from contextlib import asynccontextmanager
|
|
9
10
|
from datetime import datetime, timezone
|
|
11
|
+
from email.utils import parsedate_to_datetime
|
|
10
12
|
from logging import Logger
|
|
11
13
|
from typing import TYPE_CHECKING, Any, Callable, Optional, Protocol, runtime_checkable
|
|
12
14
|
|
|
@@ -18,6 +20,7 @@ from typing_extensions import Self
|
|
|
18
20
|
|
|
19
21
|
import prefect
|
|
20
22
|
from prefect._internal.compatibility.starlette import status
|
|
23
|
+
from prefect._internal.server_maintenance import record_maintenance_backoff
|
|
21
24
|
from prefect.client import constants
|
|
22
25
|
from prefect.client.attribution import get_attribution_headers
|
|
23
26
|
from prefect.client.schemas.objects import CsrfToken
|
|
@@ -44,6 +47,20 @@ APP_LIFESPANS_REF_COUNTS: dict[tuple[int, int], int] = {}
|
|
|
44
47
|
APP_LIFESPANS_LOCKS: dict[int, anyio.Lock] = defaultdict(anyio.Lock)
|
|
45
48
|
|
|
46
49
|
|
|
50
|
+
def _record_if_maintenance_backoff(
|
|
51
|
+
response: Optional[Response],
|
|
52
|
+
exc_info: Optional[tuple[Any, ...]],
|
|
53
|
+
retry_seconds: float,
|
|
54
|
+
) -> None:
|
|
55
|
+
# After a retryable exception, `response` is still the previous attempt's.
|
|
56
|
+
if (
|
|
57
|
+
exc_info is None
|
|
58
|
+
and response is not None
|
|
59
|
+
and response.headers.get("Prefect-Maintenance") == "true"
|
|
60
|
+
):
|
|
61
|
+
record_maintenance_backoff(retry_seconds)
|
|
62
|
+
|
|
63
|
+
|
|
47
64
|
logger: Logger = get_logger("client")
|
|
48
65
|
|
|
49
66
|
|
|
@@ -177,6 +194,31 @@ class PrefectResponse(httpx.Response):
|
|
|
177
194
|
return new_response
|
|
178
195
|
|
|
179
196
|
|
|
197
|
+
def _parse_retry_after(value: str) -> float | None:
|
|
198
|
+
"""
|
|
199
|
+
Parse a `Retry-After` header value into a number of seconds to wait.
|
|
200
|
+
|
|
201
|
+
Supports both forms allowed by RFC 9110: delay-seconds and HTTP-date. Returns
|
|
202
|
+
`None` if the value cannot be interpreted so callers can fall back to their
|
|
203
|
+
default backoff.
|
|
204
|
+
"""
|
|
205
|
+
try:
|
|
206
|
+
seconds = float(value)
|
|
207
|
+
except ValueError:
|
|
208
|
+
try:
|
|
209
|
+
retry_at = parsedate_to_datetime(value)
|
|
210
|
+
except (TypeError, ValueError, OverflowError):
|
|
211
|
+
return None
|
|
212
|
+
if retry_at.tzinfo is None:
|
|
213
|
+
retry_at = retry_at.replace(tzinfo=timezone.utc)
|
|
214
|
+
seconds = (retry_at - datetime.now(timezone.utc)).total_seconds()
|
|
215
|
+
|
|
216
|
+
if not math.isfinite(seconds):
|
|
217
|
+
return None
|
|
218
|
+
|
|
219
|
+
return max(0.0, seconds)
|
|
220
|
+
|
|
221
|
+
|
|
180
222
|
class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
181
223
|
"""
|
|
182
224
|
A Prefect wrapper for the async httpx client with support for retry-after headers
|
|
@@ -293,7 +335,9 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
|
293
335
|
return response
|
|
294
336
|
|
|
295
337
|
if "Retry-After" in response.headers:
|
|
296
|
-
retry_seconds =
|
|
338
|
+
retry_seconds = _parse_retry_after(response.headers["Retry-After"])
|
|
339
|
+
|
|
340
|
+
retry_after_from_header = retry_seconds is not None
|
|
297
341
|
|
|
298
342
|
# Use an exponential back-off if not set in a header
|
|
299
343
|
if retry_seconds is None:
|
|
@@ -302,7 +346,7 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
|
302
346
|
# Add jitter
|
|
303
347
|
jitter_factor = PREFECT_CLIENT_RETRY_JITTER_FACTOR.value()
|
|
304
348
|
if retry_seconds > 0 and jitter_factor > 0:
|
|
305
|
-
if
|
|
349
|
+
if retry_after_from_header:
|
|
306
350
|
# Always wait for _at least_ retry seconds if requested by the API
|
|
307
351
|
retry_seconds = bounded_poisson_interval(
|
|
308
352
|
retry_seconds, retry_seconds * (1 + jitter_factor)
|
|
@@ -327,6 +371,7 @@ class PrefectHttpxAsyncClient(httpx.AsyncClient):
|
|
|
327
371
|
f" {try_count}/{PREFECT_CLIENT_MAX_RETRIES.value() + 1}.",
|
|
328
372
|
exc_info=exc_info,
|
|
329
373
|
)
|
|
374
|
+
_record_if_maintenance_backoff(response, exc_info, retry_seconds)
|
|
330
375
|
await anyio.sleep(retry_seconds)
|
|
331
376
|
|
|
332
377
|
assert response is not None, (
|
|
@@ -563,7 +608,9 @@ class PrefectHttpxSyncClient(httpx.Client):
|
|
|
563
608
|
return response
|
|
564
609
|
|
|
565
610
|
if "Retry-After" in response.headers:
|
|
566
|
-
retry_seconds =
|
|
611
|
+
retry_seconds = _parse_retry_after(response.headers["Retry-After"])
|
|
612
|
+
|
|
613
|
+
retry_after_from_header = retry_seconds is not None
|
|
567
614
|
|
|
568
615
|
# Use an exponential back-off if not set in a header
|
|
569
616
|
if retry_seconds is None:
|
|
@@ -572,7 +619,7 @@ class PrefectHttpxSyncClient(httpx.Client):
|
|
|
572
619
|
# Add jitter
|
|
573
620
|
jitter_factor = PREFECT_CLIENT_RETRY_JITTER_FACTOR.value()
|
|
574
621
|
if retry_seconds > 0 and jitter_factor > 0:
|
|
575
|
-
if
|
|
622
|
+
if retry_after_from_header:
|
|
576
623
|
# Always wait for _at least_ retry seconds if requested by the API
|
|
577
624
|
retry_seconds = bounded_poisson_interval(
|
|
578
625
|
retry_seconds, retry_seconds * (1 + jitter_factor)
|
|
@@ -597,6 +644,7 @@ class PrefectHttpxSyncClient(httpx.Client):
|
|
|
597
644
|
f" {try_count}/{PREFECT_CLIENT_MAX_RETRIES.value() + 1}.",
|
|
598
645
|
exc_info=exc_info,
|
|
599
646
|
)
|
|
647
|
+
_record_if_maintenance_backoff(response, exc_info, retry_seconds)
|
|
600
648
|
time.sleep(retry_seconds)
|
|
601
649
|
|
|
602
650
|
assert response is not None, (
|
{prefect_client-3.8.8.dev3 → prefect_client-3.8.9.dev1}/src/prefect/client/schemas/__init__.py
RENAMED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import importlib
|
|
2
|
-
import sys
|
|
3
2
|
from typing import Any, TYPE_CHECKING
|
|
4
3
|
|
|
5
4
|
if TYPE_CHECKING:
|
|
@@ -90,5 +89,6 @@ def __getattr__(attr_name: str) -> Any:
|
|
|
90
89
|
return getattr(module, attr_name)
|
|
91
90
|
except ModuleNotFoundError as ex:
|
|
92
91
|
mname, _, attr = (ex.name or "").rpartition(".")
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
raise AttributeError(
|
|
93
|
+
f"module {mname} has no attribute {attr}", name=mname, obj=attr
|
|
94
|
+
) from ex
|
|
@@ -191,13 +191,15 @@ class LocalFileSystem(WritableFileSystem, WritableDeploymentStorage):
|
|
|
191
191
|
with open(from_path / Path(".prefectignore")) as f:
|
|
192
192
|
ignore_patterns = f.readlines()
|
|
193
193
|
included_files = filter_files(
|
|
194
|
-
root=from_path, ignore_patterns=ignore_patterns
|
|
194
|
+
root=from_path, ignore_patterns=ignore_patterns, as_posix=True
|
|
195
195
|
)
|
|
196
196
|
|
|
197
197
|
def ignore_func(directory, files):
|
|
198
198
|
relative_path = Path(directory).relative_to(from_path)
|
|
199
199
|
files_to_ignore = [
|
|
200
|
-
f
|
|
200
|
+
f
|
|
201
|
+
for f in files
|
|
202
|
+
if (relative_path / f).as_posix() not in included_files
|
|
201
203
|
]
|
|
202
204
|
return files_to_ignore
|
|
203
205
|
else:
|
|
@@ -210,13 +212,15 @@ class LocalFileSystem(WritableFileSystem, WritableDeploymentStorage):
|
|
|
210
212
|
async def _get_ignore_func(self, local_path: str, ignore_file: str):
|
|
211
213
|
with open(ignore_file) as f:
|
|
212
214
|
ignore_patterns = f.readlines()
|
|
213
|
-
included_files = filter_files(
|
|
215
|
+
included_files = filter_files(
|
|
216
|
+
root=local_path, ignore_patterns=ignore_patterns, as_posix=True
|
|
217
|
+
)
|
|
214
218
|
|
|
215
219
|
def ignore_func(directory, files):
|
|
216
220
|
relative_path = Path(directory).relative_to(local_path)
|
|
217
221
|
|
|
218
222
|
files_to_ignore = [
|
|
219
|
-
f for f in files if
|
|
223
|
+
f for f in files if (relative_path / f).as_posix() not in included_files
|
|
220
224
|
]
|
|
221
225
|
return files_to_ignore
|
|
222
226
|
|
|
@@ -278,13 +282,15 @@ class LocalFileSystem(WritableFileSystem, WritableDeploymentStorage):
|
|
|
278
282
|
with open(ignore_file) as f:
|
|
279
283
|
ignore_patterns = f.readlines()
|
|
280
284
|
included_files = filter_files(
|
|
281
|
-
root=local_path, ignore_patterns=ignore_patterns
|
|
285
|
+
root=local_path, ignore_patterns=ignore_patterns, as_posix=True
|
|
282
286
|
)
|
|
283
287
|
|
|
284
288
|
def ignore_func(directory, files):
|
|
285
289
|
relative_path = Path(directory).relative_to(local_path)
|
|
286
290
|
files_to_ignore = [
|
|
287
|
-
f
|
|
291
|
+
f
|
|
292
|
+
for f in files
|
|
293
|
+
if (relative_path / f).as_posix() not in included_files
|
|
288
294
|
]
|
|
289
295
|
return files_to_ignore
|
|
290
296
|
else:
|
|
@@ -539,13 +545,13 @@ class RemoteFileSystem(WritableFileSystem, WritableDeploymentStorage):
|
|
|
539
545
|
ignore_patterns = f.readlines()
|
|
540
546
|
|
|
541
547
|
included_files = filter_files(
|
|
542
|
-
local_path, ignore_patterns, include_dirs=True
|
|
548
|
+
local_path, ignore_patterns, include_dirs=True, as_posix=True
|
|
543
549
|
)
|
|
544
550
|
|
|
545
551
|
counter = 0
|
|
546
552
|
for f in Path(local_path).rglob("*"):
|
|
547
553
|
relative_path = f.relative_to(local_path)
|
|
548
|
-
if included_files and
|
|
554
|
+
if included_files and relative_path.as_posix() not in included_files:
|
|
549
555
|
continue
|
|
550
556
|
|
|
551
557
|
if to_path.endswith("/"):
|
|
@@ -595,13 +601,13 @@ class RemoteFileSystem(WritableFileSystem, WritableDeploymentStorage):
|
|
|
595
601
|
ignore_patterns = f.readlines()
|
|
596
602
|
|
|
597
603
|
included_files = filter_files(
|
|
598
|
-
local_path, ignore_patterns, include_dirs=True
|
|
604
|
+
local_path, ignore_patterns, include_dirs=True, as_posix=True
|
|
599
605
|
)
|
|
600
606
|
|
|
601
607
|
counter = 0
|
|
602
608
|
for f in Path(local_path).rglob("*"):
|
|
603
609
|
relative_path = f.relative_to(local_path)
|
|
604
|
-
if included_files and
|
|
610
|
+
if included_files and relative_path.as_posix() not in included_files:
|
|
605
611
|
continue
|
|
606
612
|
|
|
607
613
|
if to_path.endswith("/"):
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
import sys
|
|
5
4
|
import traceback
|
|
6
5
|
from types import TracebackType
|
|
7
6
|
from typing import Any, Literal, Optional, Tuple, Type, Union
|
|
@@ -119,10 +118,8 @@ class PrefectFormatter(logging.Formatter):
|
|
|
119
118
|
init_kwargs: dict[str, Any] = {}
|
|
120
119
|
style_kwargs: dict[str, Any] = {}
|
|
121
120
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
init_kwargs["defaults"] = defaults
|
|
125
|
-
style_kwargs["defaults"] = defaults
|
|
121
|
+
init_kwargs["defaults"] = defaults
|
|
122
|
+
style_kwargs["defaults"] = defaults
|
|
126
123
|
|
|
127
124
|
init_kwargs["validate"] = validate
|
|
128
125
|
|
|
@@ -380,11 +380,7 @@ def print_as_log(*args: Any, **kwargs: Any) -> None:
|
|
|
380
380
|
|
|
381
381
|
msg = buffer.getvalue().rstrip()
|
|
382
382
|
|
|
383
|
-
|
|
384
|
-
if logger.isEnabledFor(logging.INFO):
|
|
385
|
-
logger.logger._log(logging.INFO, msg, (), extra=logger.extra, stacklevel=1)
|
|
386
|
-
else:
|
|
387
|
-
logger.info(msg, stacklevel=2)
|
|
383
|
+
logger.info(msg, stacklevel=2)
|
|
388
384
|
|
|
389
385
|
|
|
390
386
|
@contextmanager
|