pyworkflow-engine 0.1.24__tar.gz → 0.1.26__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.1.24 → pyworkflow_engine-0.1.26}/PKG-INFO +1 -1
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyproject.toml +1 -1
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/__init__.py +1 -1
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/celery/app.py +88 -53
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/postgres.py +32 -12
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/CLAUDE.md +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/DISTRIBUTED.md +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/LICENSE +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/MANIFEST.in +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/README.md +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/RELEASING.md +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/cancellation.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/continue-as-new.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/events.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/fault-tolerance.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/hooks.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/limitations.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/schedules.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/sleep.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/step-context.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/steps.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/concepts/workflows.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/guides/brokers.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/guides/cli.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/guides/configuration.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/introduction.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/docs/quickstart.mdx +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/docker-compose.yml +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/basic.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/batch_processing.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/cancellation.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/child_workflows.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/continue_as_new.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/fault_tolerance.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/hooks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/idempotency.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/long_running.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/retries.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/schedules.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/step_context.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/transient/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/transient/02_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/transient/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/transient/pyworkflow.config.yaml +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/01_basic_workflow.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/02_file_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/03_retries.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/04_long_running.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/05_event_log.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/06_idempotency.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/07_hooks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/08_cancellation.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/09_child_workflows.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/10_child_workflow_patterns.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/11_continue_as_new.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/12_schedules.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/13_step_context.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/transient/01_quick_tasks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/transient/02_retries.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/transient/03_sleep.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/transient/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/aws/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/aws/context.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/aws/handler.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/aws/testing.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/celery/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/celery/loop.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/celery/scheduler.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/celery/singleton.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/celery/tasks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/__main__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/hooks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/quickstart.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/runs.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/scheduler.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/schedules.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/setup.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/worker.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/commands/workflows.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/output/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/output/formatters.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/output/styles.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/async_helpers.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/config.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/config_generator.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/discovery.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/docker_manager.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/interactive.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/config.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/context/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/context/aws.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/context/base.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/context/local.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/context/mock.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/context/step_context.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/exceptions.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/registry.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/scheduled.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/step.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/validation.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/core/workflow.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/discovery.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/engine/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/engine/events.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/engine/executor.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/engine/replay.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/observability/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/observability/logging.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/child_handle.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/child_workflow.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/continue_as_new.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/define_hook.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/hooks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/resume_hook.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/schedule.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/shield.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/sleep.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/runtime/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/runtime/base.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/runtime/celery.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/runtime/factory.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/runtime/local.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/scheduler/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/scheduler/local.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/serialization/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/serialization/decoder.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/serialization/encoder.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/base.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/cassandra.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/config.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/dynamodb.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/file.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/memory.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/migrations/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/migrations/base.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/mysql.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/schemas.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/storage/sqlite.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/utils/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/utils/duration.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/utils/schedule.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow_engine.egg-info/SOURCES.txt +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/setup.cfg +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_cancellation.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_schedule_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_schema_migrations.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_singleton.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_workflow_suspended.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_cassandra_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_dynamodb_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_postgres_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_sqlite_storage.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/conftest.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/storage/__init__.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/storage/test_migrations.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_cancellation.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_child_workflows.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_cli_worker.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_continue_as_new.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_event_limits.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_executor.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_fault_tolerance.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_hooks.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_registry.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_replay.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_schedule_schemas.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_schedule_utils.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_scheduled_workflow.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_singleton.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_step.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_step_context.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_validation.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/test_workflow.py +0 -0
- {pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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.1.
|
|
10
|
+
version = "0.1.26"
|
|
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"
|
|
@@ -202,11 +202,16 @@ def create_celery_app(
|
|
|
202
202
|
"""
|
|
203
203
|
# Priority: parameter > environment variable > hardcoded default
|
|
204
204
|
broker_url = broker_url or os.getenv("PYWORKFLOW_CELERY_BROKER") or "redis://localhost:6379/0"
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
205
|
+
|
|
206
|
+
# Result backend defaults to None (disabled) unless explicitly set
|
|
207
|
+
if result_backend is None and "PYWORKFLOW_CELERY_RESULT_BACKEND" not in os.environ:
|
|
208
|
+
result_backend = None # Disabled by default
|
|
209
|
+
else:
|
|
210
|
+
result_backend = (
|
|
211
|
+
result_backend
|
|
212
|
+
or os.getenv("PYWORKFLOW_CELERY_RESULT_BACKEND")
|
|
213
|
+
or "redis://localhost:6379/1"
|
|
214
|
+
)
|
|
210
215
|
|
|
211
216
|
# Worker memory limits (KB) - prevents memory leaks from accumulating
|
|
212
217
|
# Priority: parameter > env var > None (no limit by default)
|
|
@@ -218,7 +223,7 @@ def create_celery_app(
|
|
|
218
223
|
|
|
219
224
|
# Detect broker and backend types
|
|
220
225
|
is_sentinel_broker = is_sentinel_url(broker_url)
|
|
221
|
-
is_sentinel_backend = is_sentinel_url(result_backend)
|
|
226
|
+
is_sentinel_backend = is_sentinel_url(result_backend) if result_backend else False
|
|
222
227
|
is_redis_broker = broker_url.startswith("redis://") or broker_url.startswith("rediss://")
|
|
223
228
|
|
|
224
229
|
# Get Sentinel master name from param, env, or default
|
|
@@ -255,34 +260,44 @@ def create_celery_app(
|
|
|
255
260
|
**(result_backend_transport_options or {}),
|
|
256
261
|
}
|
|
257
262
|
|
|
258
|
-
app
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
# Create Celery app - only set backend if result_backend is enabled
|
|
264
|
+
if result_backend is not None:
|
|
265
|
+
app = Celery(
|
|
266
|
+
app_name,
|
|
267
|
+
broker=broker_url,
|
|
268
|
+
backend=result_backend,
|
|
269
|
+
include=[
|
|
270
|
+
"pyworkflow.celery.tasks",
|
|
271
|
+
],
|
|
272
|
+
)
|
|
273
|
+
else:
|
|
274
|
+
# No result backend - Celery will not store task results
|
|
275
|
+
app = Celery(
|
|
276
|
+
app_name,
|
|
277
|
+
broker=broker_url,
|
|
278
|
+
include=[
|
|
279
|
+
"pyworkflow.celery.tasks",
|
|
280
|
+
],
|
|
281
|
+
)
|
|
266
282
|
|
|
267
|
-
#
|
|
268
|
-
|
|
283
|
+
# Build configuration dict
|
|
284
|
+
config_dict = {
|
|
269
285
|
# Task execution settings
|
|
270
|
-
task_serializer
|
|
271
|
-
result_serializer
|
|
272
|
-
accept_content
|
|
273
|
-
timezone
|
|
274
|
-
enable_utc
|
|
286
|
+
"task_serializer": "json",
|
|
287
|
+
"result_serializer": "json",
|
|
288
|
+
"accept_content": ["json"],
|
|
289
|
+
"timezone": "UTC",
|
|
290
|
+
"enable_utc": True,
|
|
275
291
|
# Broker transport options - prevent task redelivery
|
|
276
292
|
# See: https://github.com/celery/celery/issues/5935
|
|
277
|
-
broker_transport_options
|
|
278
|
-
result_backend_transport_options=final_backend_opts,
|
|
293
|
+
"broker_transport_options": final_broker_opts,
|
|
279
294
|
# Task routing
|
|
280
|
-
task_default_queue
|
|
281
|
-
task_default_exchange
|
|
282
|
-
task_default_exchange_type
|
|
283
|
-
task_default_routing_key
|
|
295
|
+
"task_default_queue": "pyworkflow.default",
|
|
296
|
+
"task_default_exchange": "pyworkflow",
|
|
297
|
+
"task_default_exchange_type": "topic",
|
|
298
|
+
"task_default_routing_key": "workflow.default",
|
|
284
299
|
# Task queues
|
|
285
|
-
task_queues
|
|
300
|
+
"task_queues": (
|
|
286
301
|
Queue(
|
|
287
302
|
"pyworkflow.default",
|
|
288
303
|
Exchange("pyworkflow", type="topic"),
|
|
@@ -304,42 +319,62 @@ def create_celery_app(
|
|
|
304
319
|
routing_key="workflow.schedule.#",
|
|
305
320
|
),
|
|
306
321
|
),
|
|
307
|
-
# Result backend settings
|
|
308
|
-
result_expires=3600, # 1 hour
|
|
309
|
-
result_persistent=True,
|
|
310
322
|
# Task execution
|
|
311
|
-
task_acks_late
|
|
312
|
-
task_reject_on_worker_lost
|
|
313
|
-
worker_prefetch_multiplier
|
|
323
|
+
"task_acks_late": True,
|
|
324
|
+
"task_reject_on_worker_lost": True,
|
|
325
|
+
"worker_prefetch_multiplier": 1, # Fair task distribution
|
|
314
326
|
# Retry settings
|
|
315
|
-
task_autoretry_for
|
|
316
|
-
task_retry_backoff
|
|
317
|
-
task_retry_backoff_max
|
|
318
|
-
task_retry_jitter
|
|
327
|
+
"task_autoretry_for": (),
|
|
328
|
+
"task_retry_backoff": True,
|
|
329
|
+
"task_retry_backoff_max": 600, # 10 minutes max
|
|
330
|
+
"task_retry_jitter": True,
|
|
319
331
|
# Monitoring
|
|
320
|
-
worker_send_task_events
|
|
321
|
-
task_send_sent_event
|
|
332
|
+
"worker_send_task_events": True,
|
|
333
|
+
"task_send_sent_event": True,
|
|
322
334
|
# Beat scheduler (for sleep resumption)
|
|
323
|
-
beat_schedule
|
|
335
|
+
"beat_schedule": {},
|
|
324
336
|
# Logging
|
|
325
|
-
worker_log_format
|
|
326
|
-
worker_task_log_format
|
|
337
|
+
"worker_log_format": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
|
|
338
|
+
"worker_task_log_format": "[%(asctime)s: %(levelname)s/%(processName)s] [%(task_name)s(%(task_id)s)] %(message)s",
|
|
327
339
|
# Worker memory management - prevents memory leaks from accumulating
|
|
328
340
|
# When set, workers are recycled after exceeding these limits
|
|
329
|
-
worker_max_memory_per_child
|
|
330
|
-
worker_max_tasks_per_child
|
|
331
|
-
|
|
341
|
+
"worker_max_memory_per_child": max_memory, # KB, None = no limit
|
|
342
|
+
"worker_max_tasks_per_child": max_tasks, # None = no limit
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
# Only add result backend settings if enabled
|
|
346
|
+
if result_backend is not None:
|
|
347
|
+
config_dict.update(
|
|
348
|
+
{
|
|
349
|
+
"result_backend_transport_options": final_backend_opts,
|
|
350
|
+
"result_expires": 3600, # 1 hour
|
|
351
|
+
"result_persistent": True,
|
|
352
|
+
}
|
|
353
|
+
)
|
|
354
|
+
else:
|
|
355
|
+
# Disable task result storage when no backend configured
|
|
356
|
+
config_dict.update(
|
|
357
|
+
{
|
|
358
|
+
"task_ignore_result": True, # Don't try to store task results
|
|
359
|
+
"task_store_errors_even_if_ignored": False, # Don't store errors either
|
|
360
|
+
}
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
# Configure Celery
|
|
364
|
+
app.conf.update(config_dict)
|
|
332
365
|
|
|
333
366
|
# Configure singleton locking for Redis or Sentinel brokers
|
|
334
367
|
# This enables distributed locking to prevent duplicate task execution
|
|
368
|
+
# Uses broker URL since result backend may be disabled
|
|
335
369
|
if is_redis_broker or is_sentinel_broker:
|
|
336
|
-
|
|
337
|
-
singleton_backend_url
|
|
338
|
-
singleton_backend_is_sentinel
|
|
339
|
-
singleton_sentinel_master
|
|
340
|
-
singleton_key_prefix
|
|
341
|
-
singleton_lock_expiry
|
|
342
|
-
|
|
370
|
+
singleton_config = {
|
|
371
|
+
"singleton_backend_url": broker_url, # Use broker, not result backend
|
|
372
|
+
"singleton_backend_is_sentinel": is_sentinel_broker,
|
|
373
|
+
"singleton_sentinel_master": master_name if is_sentinel_broker else None,
|
|
374
|
+
"singleton_key_prefix": "pyworkflow:lock:",
|
|
375
|
+
"singleton_lock_expiry": 3600, # 1 hour TTL (safety net)
|
|
376
|
+
}
|
|
377
|
+
app.conf.update(singleton_config)
|
|
343
378
|
|
|
344
379
|
# Note: Logging is configured via Celery signals (worker_init, worker_process_init)
|
|
345
380
|
# to ensure proper initialization AFTER process forking.
|
|
@@ -16,6 +16,7 @@ the pool is automatically recreated when a loop change is detected.
|
|
|
16
16
|
import asyncio
|
|
17
17
|
import contextlib
|
|
18
18
|
import json
|
|
19
|
+
import os
|
|
19
20
|
from datetime import UTC, datetime
|
|
20
21
|
from typing import Any
|
|
21
22
|
|
|
@@ -163,10 +164,10 @@ class PostgresStorageBackend(StorageBackend):
|
|
|
163
164
|
user: str = "pyworkflow",
|
|
164
165
|
password: str = "",
|
|
165
166
|
database: str = "pyworkflow",
|
|
166
|
-
min_pool_size: int =
|
|
167
|
-
max_pool_size: int =
|
|
168
|
-
max_inactive_connection_lifetime: float =
|
|
169
|
-
command_timeout: float | None =
|
|
167
|
+
min_pool_size: int | None = None,
|
|
168
|
+
max_pool_size: int | None = None,
|
|
169
|
+
max_inactive_connection_lifetime: float | None = None,
|
|
170
|
+
command_timeout: float | None = None,
|
|
170
171
|
):
|
|
171
172
|
"""
|
|
172
173
|
Initialize PostgreSQL storage backend.
|
|
@@ -178,11 +179,13 @@ class PostgresStorageBackend(StorageBackend):
|
|
|
178
179
|
user: Database user (used if dsn not provided)
|
|
179
180
|
password: Database password (used if dsn not provided)
|
|
180
181
|
database: Database name (used if dsn not provided)
|
|
181
|
-
min_pool_size: Minimum connections in pool
|
|
182
|
-
max_pool_size: Maximum connections in pool
|
|
182
|
+
min_pool_size: Minimum connections in pool (defaults to env var PYWORKFLOW_POSTGRES_MIN_POOL_SIZE or 1)
|
|
183
|
+
max_pool_size: Maximum connections in pool (defaults to env var PYWORKFLOW_POSTGRES_MAX_POOL_SIZE or 10)
|
|
183
184
|
max_inactive_connection_lifetime: How long (seconds) an idle connection can
|
|
184
|
-
stay in the pool before being closed.
|
|
185
|
-
|
|
185
|
+
stay in the pool before being closed.
|
|
186
|
+
Defaults to env var PYWORKFLOW_POSTGRES_MAX_INACTIVE_LIFETIME or 1800s (30 min).
|
|
187
|
+
command_timeout: Default timeout (seconds) for queries. None for no timeout.
|
|
188
|
+
Defaults to env var PYWORKFLOW_POSTGRES_COMMAND_TIMEOUT or 60s.
|
|
186
189
|
"""
|
|
187
190
|
self.dsn = dsn
|
|
188
191
|
self.host = host
|
|
@@ -190,10 +193,27 @@ class PostgresStorageBackend(StorageBackend):
|
|
|
190
193
|
self.user = user
|
|
191
194
|
self.password = password
|
|
192
195
|
self.database = database
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
self.
|
|
196
|
-
|
|
196
|
+
|
|
197
|
+
# Read from env vars if not provided
|
|
198
|
+
self.min_pool_size = min_pool_size or int(
|
|
199
|
+
os.getenv("PYWORKFLOW_POSTGRES_MIN_POOL_SIZE", "1")
|
|
200
|
+
)
|
|
201
|
+
self.max_pool_size = max_pool_size or int(
|
|
202
|
+
os.getenv("PYWORKFLOW_POSTGRES_MAX_POOL_SIZE", "10")
|
|
203
|
+
)
|
|
204
|
+
self.max_inactive_connection_lifetime = max_inactive_connection_lifetime or float(
|
|
205
|
+
os.getenv("PYWORKFLOW_POSTGRES_MAX_INACTIVE_LIFETIME", "1800.0")
|
|
206
|
+
)
|
|
207
|
+
self.command_timeout = (
|
|
208
|
+
command_timeout
|
|
209
|
+
if command_timeout is not None
|
|
210
|
+
else (
|
|
211
|
+
float(os.getenv("PYWORKFLOW_POSTGRES_COMMAND_TIMEOUT", "60.0"))
|
|
212
|
+
if os.getenv("PYWORKFLOW_POSTGRES_COMMAND_TIMEOUT")
|
|
213
|
+
else 60.0
|
|
214
|
+
)
|
|
215
|
+
)
|
|
216
|
+
|
|
197
217
|
self._pool: asyncpg.Pool | None = None
|
|
198
218
|
self._pool_loop_id: int | None = None # Track which loop the pool was created on
|
|
199
219
|
self._initialized = False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/docker-compose.yml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/pyworkflow.config.yaml
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/__init__.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/retries.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/celery/durable/workflows/schedules.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/01_basic_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/02_file_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/04_long_running.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/05_event_log.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/06_idempotency.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/08_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/09_child_workflows.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/11_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/12_schedules.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/durable/13_step_context.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/examples/local/transient/01_quick_tasks.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/cli/utils/config_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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.1.24 → pyworkflow_engine-0.1.26}/pyworkflow/primitives/child_workflow.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.1.24 → pyworkflow_engine-0.1.26}/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
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/pyworkflow_engine.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_cancellation.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_child_workflows.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_continue_as_new.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_fault_tolerance.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_schedule_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_schema_migrations.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/integration/test_workflow_suspended.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_cassandra_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_dynamodb_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/tests/unit/backends/test_postgres_storage.py
RENAMED
|
File without changes
|
{pyworkflow_engine-0.1.24 → pyworkflow_engine-0.1.26}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|