This is a collection of samples showing how to use the Python SDK.
Prerequisites:
The SDK requires Python >= 3.10. You can install Python using uv. For example,
uv python install 3.13
With this repository cloned, run the following at the root of the directory:
uv sync
That loads all required dependencies. Then to run a sample, usually you just run it under uv. For example:
uv run hello/hello_activity.py
Some examples require extra dependencies. See each sample's directory for specific instructions.
- hello - All of the basic features.
- hello_activity - Execute an activity from a workflow.
 - hello_activity_choice - Execute certain activities inside a workflow based on dynamic input.
 - hello_activity_method - Demonstrate an activity that is an instance method on a class and can access class state.
 - hello_activity_multiprocess - Execute a synchronous activity on a process pool.
 - hello_activity_retry - Demonstrate activity retry by failing until a certain number of attempts.
 - hello_activity_threaded - Execute a synchronous activity on a thread pool.
 - hello_async_activity_completion - Complete an activity outside of the function that was called.
 - hello_cancellation - Manually react to cancellation inside workflows and activities.
 - hello_change_log_level - Change the level of workflow task failure from WARN to ERROR.
 - hello_child_workflow - Execute a child workflow from a workflow.
 - hello_continue_as_new - Use continue as new to restart a workflow.
 - hello_cron - Execute a workflow once a minute.
 - hello_exception - Execute an activity that raises an error out of the workflow and out of the program.
 - hello_local_activity - Execute a local activity from a workflow.
 - hello_mtls - Accept URL, namespace, and certificate info as CLI args and use mTLS for connecting to server.
 - hello_parallel_activity - Execute multiple activities at once.
 - hello_query - Invoke queries on a workflow.
 - hello_search_attributes - Start workflow with search attributes then change while running.
 - hello_signal - Send signals to a workflow.
 
 
- activity_worker - Use Python activities from a workflow in another language.
 - batch_sliding_window - Batch processing with a sliding window of child workflows.
 - bedrock - Orchestrate a chatbot with Amazon Bedrock.
 - cloud_export_to_parquet - Set up schedule workflow to process exported files on an hourly basis
 - context_propagation - Context propagation through workflows/activities via interceptor.
 - custom_converter - Use a custom payload converter to handle custom types.
 - custom_decorator - Custom decorator to auto-heartbeat a long-running activity.
 - custom_metric - Custom metric to record the workflow type in the activity schedule to start latency.
 - dsl - DSL workflow that executes steps defined in a YAML file.
 - eager_wf_start - Run a workflow using Eager Workflow Start
 - encryption - Apply end-to-end encryption for all input/output.
 - env_config - Load client configuration from TOML files with programmatic overrides.
 - gevent_async - Combine gevent and Temporal.
 - langchain - Orchestrate workflows for LangChain.
 - message_passing/introduction - Introduction to queries, signals, and updates.
 - message_passing/safe_message_handlers - Safely handling updates and signals.
 - message_passing/update_with_start/lazy_initialization - Use update-with-start to update a Shopping Cart, starting it if it does not exist.
 - open_telemetry - Trace workflows with OpenTelemetry.
 - patching - Alter workflows safely with 
patchanddeprecate_patch. - polling - Recommended implementation of an activity that needs to periodically poll an external resource waiting its successful completion.
 - prometheus - Configure Prometheus metrics on clients/workers.
 - pydantic_converter - Data converter for using Pydantic models.
 - schedules - Demonstrates a Workflow Execution that occurs according to a schedule.
 - sentry - Report errors to Sentry.
 - trio_async - Use asyncio Temporal in Trio-based environments.
 - updatable_timer - A timer that can be updated while sleeping.
 - worker_specific_task_queues - Use unique task queues to ensure activities run on specific workers.
 - worker_versioning - Use the Worker Versioning feature to more easily version your workflows & other code.
 
To run the tests:
uv run poe test