pyworkflow-engine 0.2.5__tar.gz → 0.2.6__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.5 → pyworkflow_engine-0.2.6}/PKG-INFO +1 -1
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyproject.toml +1 -1
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/__init__.py +1 -1
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/context/local.py +0 -38
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/CLAUDE.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/DISTRIBUTED.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/LICENSE +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/MANIFEST.in +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/README.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/RELEASING.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/architecture.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/cancellation.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/continue-as-new.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/events.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/fault-tolerance.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/hooks.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/limitations.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/schedules.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/sleep.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/step-context.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/steps.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/concepts/workflows.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/conventions.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/guides/brokers.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/guides/cli.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/guides/configuration.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/harness-gaps.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/introduction.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/layers.md +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/docs/quickstart.mdx +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/docker-compose.yml +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/basic.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/batch_processing.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/cancellation.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/child_workflow_from_step.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/child_workflows.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/hooks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/idempotency.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/long_running.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/retries.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/schedules.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/sleep_in_step.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/step_context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/02_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/02_file_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/03_retries.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/04_long_running.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/05_event_log.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/06_idempotency.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/07_hooks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/08_cancellation.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/09_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/10_child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/11_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/12_schedules.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/13_step_context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/14_child_workflow_from_step.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/transient/01_quick_tasks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/transient/02_retries.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/transient/03_sleep.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/transient/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/aws/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/aws/context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/aws/handler.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/aws/testing.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/celery/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/celery/app.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/celery/loop.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/celery/scheduler.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/celery/singleton.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/celery/tasks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/__main__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/hooks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/quickstart.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/runs.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/scheduler.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/schedules.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/setup.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/worker.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/commands/workflows.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/output/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/output/formatters.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/output/styles.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/async_helpers.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/config.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/config_generator.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/discovery.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/docker_manager.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/interactive.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/config.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/context/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/context/aws.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/context/base.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/context/mock.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/context/step_context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/exceptions.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/registry.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/scheduled.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/step.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/validation.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/core/workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/discovery.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/engine/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/engine/events.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/engine/executor.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/engine/replay.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/observability/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/observability/logging.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/child_handle.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/child_workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/define_hook.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/hooks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/resume_hook.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/schedule.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/shield.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/sleep.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/step_checkpoint.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/primitives/step_hook.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/runtime/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/runtime/base.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/runtime/celery.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/runtime/factory.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/runtime/local.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/scheduler/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/scheduler/local.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/serialization/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/serialization/decoder.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/serialization/encoder.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/base.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/cassandra.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/citus.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/config.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/dynamodb.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/file.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/memory.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/migrations/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/migrations/base.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/mysql.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/postgres.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/schemas.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/storage/sqlite.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/checkpoint.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/consumer.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/decorator.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/dispatcher.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/emit.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/registry.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/signal.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/streams/step_context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/utils/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/utils/duration.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/utils/helpers.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/utils/schedule.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow_engine.egg-info/SOURCES.txt +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/setup.cfg +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_cancellation.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_schedule_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_schema_migrations.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_singleton.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_stream_e2e.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_workflow_suspended.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_citus_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_postgres_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_sqlite_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/conftest.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/storage/__init__.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/storage/test_migrations.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_cancellation.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_cli_worker.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_emit.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_event_limits.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_executor.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_force_local.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_hooks.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_parent_run_id.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_primitives_from_steps.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_registry.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_replay.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_retention.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_schedule_schemas.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_schedule_utils.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_scheduled_workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_signal.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_singleton.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_step.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_step_checkpoint.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_step_context.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_step_hook.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_stream_storage.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_stream_workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_validation.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/test_workflow.py +0 -0
- {pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/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.6"
|
|
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"
|
|
@@ -121,46 +121,12 @@ class LocalContext(WorkflowContext):
|
|
|
121
121
|
self._replay_events(event_log)
|
|
122
122
|
self._is_replaying = False
|
|
123
123
|
|
|
124
|
-
def _extract_counter_from_id(self, id_string: str) -> int:
|
|
125
|
-
"""Extract counter value from hook_id or sleep_id.
|
|
126
|
-
|
|
127
|
-
Formats:
|
|
128
|
-
- hook_{name}_{counter}
|
|
129
|
-
- sleep_{counter}_{duration}s
|
|
130
|
-
|
|
131
|
-
Args:
|
|
132
|
-
id_string: The hook_id or sleep_id string
|
|
133
|
-
|
|
134
|
-
Returns:
|
|
135
|
-
The counter value, or 0 if parsing fails
|
|
136
|
-
"""
|
|
137
|
-
try:
|
|
138
|
-
parts = id_string.split("_")
|
|
139
|
-
if id_string.startswith("hook_"):
|
|
140
|
-
# hook_{name}_{counter} - counter is last part
|
|
141
|
-
return int(parts[-1])
|
|
142
|
-
elif id_string.startswith("sleep_"):
|
|
143
|
-
# sleep_{counter}_{duration}s - counter is second part
|
|
144
|
-
return int(parts[1])
|
|
145
|
-
except (ValueError, IndexError):
|
|
146
|
-
pass
|
|
147
|
-
return 0
|
|
148
|
-
|
|
149
124
|
def _replay_events(self, events: list[Any]) -> None:
|
|
150
125
|
"""Replay events to restore state."""
|
|
151
126
|
from pyworkflow.engine.events import EventType
|
|
152
127
|
from pyworkflow.serialization.decoder import deserialize
|
|
153
128
|
|
|
154
|
-
max_counter = 0
|
|
155
129
|
for event in events:
|
|
156
|
-
# Track step counter from sleep and hook IDs to avoid collisions
|
|
157
|
-
for key in ("sleep_id", "hook_id"):
|
|
158
|
-
id_val = event.data.get(key) if event.data else None
|
|
159
|
-
if id_val:
|
|
160
|
-
c = self._extract_counter_from_id(id_val)
|
|
161
|
-
if c > max_counter:
|
|
162
|
-
max_counter = c
|
|
163
|
-
|
|
164
130
|
if event.type == EventType.STEP_STARTED:
|
|
165
131
|
# Track step as in-progress (dispatched but not completed)
|
|
166
132
|
step_id = event.data.get("step_id")
|
|
@@ -280,10 +246,6 @@ class LocalContext(WorkflowContext):
|
|
|
280
246
|
}
|
|
281
247
|
self._pending_children.pop(child_id, None)
|
|
282
248
|
|
|
283
|
-
# Restore step counter so new sleeps/hooks don't collide with replayed ones
|
|
284
|
-
if max_counter > self._step_counter:
|
|
285
|
-
self._step_counter = max_counter
|
|
286
|
-
|
|
287
249
|
@property
|
|
288
250
|
def is_durable(self) -> bool:
|
|
289
251
|
return self._durable
|
|
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.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/docker-compose.yml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/pyworkflow.config.yaml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/__init__.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/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.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/hooks.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/idempotency.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/retries.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/durable/workflows/schedules.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/01_basic_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/02_fault_tolerance.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/celery/transient/pyworkflow.config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/01_basic_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/02_file_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/04_long_running.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/06_idempotency.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/08_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/09_child_workflows.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/11_continue_as_new.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/durable/13_step_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/examples/local/transient/01_quick_tasks.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
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/pyworkflow/cli/utils/config_generator.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
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/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.5 → pyworkflow_engine-0.2.6}/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.5 → pyworkflow_engine-0.2.6}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_child_workflows.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_fault_tolerance.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_schedule_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_schema_migrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/integration/test_workflow_suspended.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_citus_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/tests/unit/backends/test_postgres_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.5 → pyworkflow_engine-0.2.6}/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.5 → pyworkflow_engine-0.2.6}/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
|