pyworkflow-engine 0.2.14__tar.gz → 0.2.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.
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/PKG-INFO +1 -1
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyproject.toml +1 -1
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/__init__.py +1 -1
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/celery/tasks.py +15 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/CLAUDE.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/DISTRIBUTED.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/LICENSE +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/MANIFEST.in +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/README.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/RELEASING.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/architecture.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/cancellation.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/continue-as-new.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/events.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/fault-tolerance.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/hooks.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/limitations.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/schedules.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/sleep.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/step-context.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/steps.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/stream-steps.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/stream-workflows.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/concepts/workflows.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/conventions.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/guides/brokers.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/guides/cli.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/guides/configuration.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/harness-gaps.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/introduction.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/layers.md +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/docs/quickstart.mdx +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/docker-compose.yml +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/basic.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/batch_processing.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/cancellation.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/child_workflow_from_step.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/child_workflows.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/hooks.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/idempotency.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/long_running.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/retries.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/schedules.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/sleep_in_step.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/step_context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/transient/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/transient/02_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/transient/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/transient/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/02_file_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/03_retries.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/04_long_running.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/05_event_log.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/06_idempotency.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/07_hooks.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/08_cancellation.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/09_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/10_child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/11_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/12_schedules.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/13_step_context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/14_child_workflow_from_step.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/transient/01_quick_tasks.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/transient/02_retries.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/transient/03_sleep.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/transient/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/aws/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/aws/context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/aws/handler.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/aws/testing.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/celery/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/celery/app.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/celery/loop.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/celery/scheduler.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/celery/singleton.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/__main__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/hooks.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/quickstart.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/runs.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/scheduler.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/schedules.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/setup.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/worker.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/commands/workflows.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/output/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/output/formatters.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/output/styles.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/async_helpers.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/config.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/config_generator.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/discovery.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/docker_manager.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/interactive.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/config.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/context/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/context/aws.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/context/base.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/context/local.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/context/mock.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/context/step_context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/exceptions.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/registry.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/scheduled.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/step.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/validation.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/core/workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/discovery.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/engine/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/engine/events.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/engine/executor.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/engine/replay.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/observability/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/observability/logging.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/child_handle.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/child_workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/define_hook.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/hooks.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/resume_hook.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/schedule.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/shield.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/sleep.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/step_checkpoint.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/step_hook.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/runtime/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/runtime/base.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/runtime/celery.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/runtime/factory.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/runtime/local.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/scheduler/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/scheduler/local.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/serialization/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/serialization/decoder.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/serialization/encoder.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/base.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/cassandra.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/citus.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/config.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/dynamodb.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/file.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/memory.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/migrations/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/migrations/base.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/mysql.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/postgres.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/schemas.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/sqlite.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/checkpoint.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/consumer.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/decorator.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/dispatcher.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/emit.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/registry.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/runtime.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/signal.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/streams/step_context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/utils/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/utils/duration.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/utils/helpers.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/utils/schedule.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow_engine.egg-info/SOURCES.txt +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/setup.cfg +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_cancellation.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_schedule_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_schema_migrations.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_singleton.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_stream_e2e.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_workflow_suspended.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_citus_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_postgres_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_sqlite_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/conftest.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/storage/__init__.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/storage/test_migrations.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_cancellation.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_cli_worker.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_emit.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_event_limits.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_executor.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_force_local.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_hooks.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_parent_run_id.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_primitives_from_steps.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_registry.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_replay.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_retention.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_schedule_schemas.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_schedule_utils.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_scheduled_workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_signal.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_singleton.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_step.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_step_checkpoint.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_step_context.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_step_hook.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_stream_storage.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_stream_workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_validation.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_workflow.py +0 -0
- {pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_workflow_suspended.py +0 -0
|
@@ -7,7 +7,7 @@ packages = [{include = "pyworkflow"}]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "pyworkflow-engine"
|
|
10
|
-
version = "0.2.
|
|
10
|
+
version = "0.2.15"
|
|
11
11
|
description = "A Python implementation of durable, event-sourced workflows inspired by Vercel Workflow"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.11"
|
|
@@ -580,6 +580,15 @@ async def _record_step_completion_and_resume(
|
|
|
580
580
|
)
|
|
581
581
|
await storage.record_event(completion_event)
|
|
582
582
|
|
|
583
|
+
# Release the resume_workflow_task singleton lock before scheduling the
|
|
584
|
+
# next resume. The parent resume task that dispatched this step may still
|
|
585
|
+
# be holding the (run_id,) lock during its final teardown; without this
|
|
586
|
+
# release the apply_async below sees the lock held and silently drops
|
|
587
|
+
# the schedule as a duplicate, leaving the workflow stuck in SUSPENDED.
|
|
588
|
+
resume_workflow_task.release_lock(
|
|
589
|
+
task_args=[run_id], task_kwargs={"storage_config": storage_config}
|
|
590
|
+
)
|
|
591
|
+
|
|
583
592
|
# Schedule workflow resumption
|
|
584
593
|
schedule_workflow_resumption(
|
|
585
594
|
run_id, datetime.now(UTC), storage_config, triggered_by="step_completed"
|
|
@@ -769,6 +778,12 @@ async def _record_step_failure_and_resume(
|
|
|
769
778
|
)
|
|
770
779
|
await storage.record_event(failure_event)
|
|
771
780
|
|
|
781
|
+
# Release the resume_workflow_task singleton lock before scheduling the
|
|
782
|
+
# next resume (see _record_step_completion_and_resume for details on why).
|
|
783
|
+
resume_workflow_task.release_lock(
|
|
784
|
+
task_args=[run_id], task_kwargs={"storage_config": storage_config}
|
|
785
|
+
)
|
|
786
|
+
|
|
772
787
|
# Schedule workflow resumption
|
|
773
788
|
schedule_workflow_resumption(
|
|
774
789
|
run_id, datetime.now(UTC), storage_config, triggered_by="step_failed"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/docker-compose.yml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/pyworkflow.config.yaml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/__init__.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/basic.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/retries.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/durable/workflows/schedules.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/celery/transient/01_basic_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/01_basic_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/02_file_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/04_long_running.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/05_event_log.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/06_idempotency.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/08_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/09_child_workflows.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/11_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/12_schedules.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/durable/13_step_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/transient/01_quick_tasks.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/examples/local/transient/02_retries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/config_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/cli/utils/docker_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/child_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/continue_as_new.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/primitives/step_checkpoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow/storage/migrations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/pyworkflow_engine.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_child_workflows.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_fault_tolerance.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_schedule_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_schema_migrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/integration/test_workflow_suspended.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_citus_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_postgres_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/backends/test_sqlite_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.14 → pyworkflow_engine-0.2.15}/tests/unit/test_primitives_from_steps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|