pyworkflow-engine 0.2.12__tar.gz → 0.2.13__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.12 → pyworkflow_engine-0.2.13}/PKG-INFO +1 -1
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyproject.toml +1 -1
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/__init__.py +1 -1
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/__init__.py +4 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/context.py +73 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/dispatcher.py +13 -2
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/CLAUDE.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/DISTRIBUTED.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/LICENSE +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/MANIFEST.in +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/README.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/RELEASING.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/architecture.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/cancellation.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/continue-as-new.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/events.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/fault-tolerance.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/hooks.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/limitations.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/schedules.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/sleep.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/step-context.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/steps.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/stream-steps.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/stream-workflows.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/concepts/workflows.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/conventions.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/guides/brokers.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/guides/cli.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/guides/configuration.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/harness-gaps.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/introduction.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/layers.md +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/docs/quickstart.mdx +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/docker-compose.yml +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/basic.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/batch_processing.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/cancellation.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/child_workflow_from_step.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/child_workflows.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/hooks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/idempotency.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/long_running.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/retries.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/schedules.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/sleep_in_step.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/step_context.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/transient/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/transient/02_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/transient/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/transient/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/02_file_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/03_retries.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/04_long_running.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/05_event_log.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/06_idempotency.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/07_hooks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/08_cancellation.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/09_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/10_child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/11_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/12_schedules.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/13_step_context.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/14_child_workflow_from_step.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/transient/01_quick_tasks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/transient/02_retries.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/transient/03_sleep.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/transient/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/aws/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/aws/context.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/aws/handler.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/aws/testing.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/celery/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/celery/app.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/celery/loop.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/celery/scheduler.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/celery/singleton.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/celery/tasks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/__main__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/hooks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/quickstart.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/runs.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/scheduler.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/schedules.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/setup.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/worker.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/commands/workflows.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/output/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/output/formatters.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/output/styles.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/async_helpers.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/config.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/config_generator.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/discovery.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/docker_manager.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/interactive.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/config.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/context/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/context/aws.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/context/base.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/context/local.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/context/mock.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/context/step_context.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/exceptions.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/registry.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/scheduled.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/step.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/validation.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/core/workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/discovery.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/engine/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/engine/events.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/engine/executor.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/engine/replay.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/observability/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/observability/logging.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/child_handle.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/child_workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/define_hook.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/hooks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/resume_hook.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/schedule.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/shield.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/sleep.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/step_checkpoint.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/step_hook.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/runtime/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/runtime/base.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/runtime/celery.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/runtime/factory.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/runtime/local.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/scheduler/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/scheduler/local.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/serialization/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/serialization/decoder.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/serialization/encoder.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/base.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/cassandra.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/citus.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/config.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/dynamodb.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/file.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/memory.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/migrations/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/migrations/base.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/mysql.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/postgres.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/schemas.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/storage/sqlite.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/checkpoint.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/consumer.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/decorator.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/emit.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/registry.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/runtime.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/signal.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/streams/step_context.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/utils/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/utils/duration.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/utils/helpers.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/utils/schedule.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow_engine.egg-info/SOURCES.txt +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/setup.cfg +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_cancellation.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_schedule_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_schema_migrations.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_singleton.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_stream_e2e.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_workflow_suspended.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_citus_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_postgres_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_sqlite_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/conftest.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/storage/__init__.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/storage/test_migrations.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_cancellation.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_cli_worker.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_emit.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_event_limits.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_executor.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_force_local.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_hooks.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_parent_run_id.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_primitives_from_steps.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_registry.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_replay.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_retention.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_schedule_schemas.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_schedule_utils.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_scheduled_workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_signal.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_singleton.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_step.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_step_checkpoint.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_step_context.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_step_hook.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_stream_storage.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_stream_workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_validation.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/test_workflow.py +0 -0
- {pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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.13"
|
|
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"
|
|
@@ -28,8 +28,10 @@ from pyworkflow.streams.checkpoint import ( # noqa: F401
|
|
|
28
28
|
)
|
|
29
29
|
from pyworkflow.streams.consumer import StreamConsumer, poll_once # noqa: F401
|
|
30
30
|
from pyworkflow.streams.context import ( # noqa: F401
|
|
31
|
+
acknowledge_inbox_signal,
|
|
31
32
|
get_checkpoint,
|
|
32
33
|
get_current_signal,
|
|
34
|
+
poll_inbox,
|
|
33
35
|
save_checkpoint,
|
|
34
36
|
set_result,
|
|
35
37
|
suspend,
|
|
@@ -73,6 +75,8 @@ __all__ = [
|
|
|
73
75
|
"get_current_signal",
|
|
74
76
|
"get_checkpoint",
|
|
75
77
|
"save_checkpoint",
|
|
78
|
+
"poll_inbox",
|
|
79
|
+
"acknowledge_inbox_signal",
|
|
76
80
|
# Checkpoint
|
|
77
81
|
"CheckpointBackend",
|
|
78
82
|
"DefaultCheckpointBackend",
|
|
@@ -182,3 +182,76 @@ def set_stream_run_id(stream_run_id: str | None) -> Any:
|
|
|
182
182
|
Returns a token that can be used to reset the value.
|
|
183
183
|
"""
|
|
184
184
|
return _current_stream_run_id.set(stream_run_id)
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
async def poll_inbox(
|
|
188
|
+
signal_types: list[str] | None = None,
|
|
189
|
+
) -> list[Signal]:
|
|
190
|
+
"""Get unacknowledged signals for the current running stream step.
|
|
191
|
+
|
|
192
|
+
Allows a step that is in ``running`` status to discover signals that
|
|
193
|
+
arrived while it was executing. Uses the same storage query as the
|
|
194
|
+
post-execution drain mechanism (``get_pending_signals``) but can be
|
|
195
|
+
called from *within* the lifecycle function, so a long-running step
|
|
196
|
+
does not have to return first.
|
|
197
|
+
|
|
198
|
+
Signals are filtered to the current ``stream_run_id`` to prevent
|
|
199
|
+
cross-run leakage.
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
signal_types: Optional whitelist. When provided, only signals
|
|
203
|
+
whose ``signal_type`` is in this list are returned.
|
|
204
|
+
|
|
205
|
+
Returns:
|
|
206
|
+
A list of :class:`Signal` objects ordered by sequence number.
|
|
207
|
+
"""
|
|
208
|
+
from loguru import logger
|
|
209
|
+
|
|
210
|
+
storage = _current_storage.get()
|
|
211
|
+
stream_id = _current_stream_id.get()
|
|
212
|
+
step_run_id = _current_step_run_id.get()
|
|
213
|
+
stream_run_id = _current_stream_run_id.get()
|
|
214
|
+
|
|
215
|
+
if not storage or not stream_id or not step_run_id:
|
|
216
|
+
return []
|
|
217
|
+
|
|
218
|
+
try:
|
|
219
|
+
pending = await storage.get_pending_signals(stream_id, step_run_id)
|
|
220
|
+
except Exception:
|
|
221
|
+
logger.debug("[poll_inbox] get_pending_signals failed", exc_info=True)
|
|
222
|
+
return []
|
|
223
|
+
|
|
224
|
+
results: list[Signal] = []
|
|
225
|
+
for row in pending:
|
|
226
|
+
# Filter to current stream run
|
|
227
|
+
if stream_run_id and row.get("stream_run_id") != stream_run_id:
|
|
228
|
+
continue
|
|
229
|
+
# Optional signal type filter
|
|
230
|
+
if signal_types and row.get("signal_type") not in signal_types:
|
|
231
|
+
continue
|
|
232
|
+
results.append(
|
|
233
|
+
Signal(
|
|
234
|
+
signal_id=row["signal_id"],
|
|
235
|
+
stream_id=row["stream_id"],
|
|
236
|
+
signal_type=row["signal_type"],
|
|
237
|
+
payload=row.get("payload") or {},
|
|
238
|
+
sequence=row.get("sequence", 0),
|
|
239
|
+
source_run_id=row.get("source_run_id"),
|
|
240
|
+
stream_run_id=row.get("stream_run_id"),
|
|
241
|
+
metadata=row.get("metadata") or {},
|
|
242
|
+
)
|
|
243
|
+
)
|
|
244
|
+
return results
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
async def acknowledge_inbox_signal(signal_id: str) -> None:
|
|
248
|
+
"""Acknowledge a signal retrieved via :func:`poll_inbox`.
|
|
249
|
+
|
|
250
|
+
Once acknowledged the signal will not appear in subsequent
|
|
251
|
+
``poll_inbox`` calls or in the post-execution drain, preventing
|
|
252
|
+
double processing.
|
|
253
|
+
"""
|
|
254
|
+
storage = _current_storage.get()
|
|
255
|
+
step_run_id = _current_step_run_id.get()
|
|
256
|
+
if storage and step_run_id:
|
|
257
|
+
await storage.acknowledge_signal(signal_id, step_run_id)
|
|
@@ -66,9 +66,20 @@ async def dispatch_signal(signal: Signal, storage: Any) -> None:
|
|
|
66
66
|
)
|
|
67
67
|
|
|
68
68
|
if not waiting_steps:
|
|
69
|
-
|
|
69
|
+
# Determine whether any subscriptions are in "running" status.
|
|
70
|
+
# If so the signal is safely persisted in the signals table and
|
|
71
|
+
# will be picked up by poll_inbox() (called from within the
|
|
72
|
+
# running step) or by _drain_pending_signals_for_step() when the
|
|
73
|
+
# step transitions back to "waiting". Use DEBUG to avoid noisy
|
|
74
|
+
# warnings for this expected scenario.
|
|
75
|
+
has_running = any(
|
|
76
|
+
s.get("status") == "running" for s in (all_subs or [])
|
|
77
|
+
)
|
|
78
|
+
log_fn = logger.debug if has_running else logger.warning
|
|
79
|
+
log_fn(
|
|
70
80
|
f"No waiting steps for {signal.signal_type} on {signal.stream_id} "
|
|
71
|
-
f"(stream_run_id={signal.stream_run_id})"
|
|
81
|
+
f"(stream_run_id={signal.stream_run_id})"
|
|
82
|
+
+ (" — signal queued for running step inbox" if has_running else ""),
|
|
72
83
|
stream_id=signal.stream_id,
|
|
73
84
|
signal_type=signal.signal_type,
|
|
74
85
|
stream_run_id=signal.stream_run_id,
|
|
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.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/docker-compose.yml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/pyworkflow.config.yaml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/__init__.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/retries.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/celery/durable/workflows/schedules.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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.12 → pyworkflow_engine-0.2.13}/examples/local/durable/01_basic_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/02_file_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/04_long_running.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/05_event_log.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/06_idempotency.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/08_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/09_child_workflows.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/11_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/12_schedules.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/durable/13_step_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/examples/local/transient/01_quick_tasks.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow/cli/utils/config_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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.12 → pyworkflow_engine-0.2.13}/pyworkflow/primitives/child_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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.12 → pyworkflow_engine-0.2.13}/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.12 → pyworkflow_engine-0.2.13}/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
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/pyworkflow_engine.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_child_workflows.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_fault_tolerance.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_schedule_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_schema_migrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/integration/test_workflow_suspended.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_citus_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/tests/unit/backends/test_postgres_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.2.12 → pyworkflow_engine-0.2.13}/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.12 → pyworkflow_engine-0.2.13}/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
|