conductor-python 1.3.3__tar.gz → 1.3.4__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.
Files changed (241) hide show
  1. {conductor_python-1.3.3 → conductor_python-1.3.4}/PKG-INFO +222 -100
  2. {conductor_python-1.3.3 → conductor_python-1.3.4}/README.md +221 -99
  3. {conductor_python-1.3.3 → conductor_python-1.3.4}/pyproject.toml +1 -1
  4. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/automator/json_schema_generator.py +7 -5
  5. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/automator/task_handler.py +230 -19
  6. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/async_rest.py +88 -60
  7. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/rest.py +95 -60
  8. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/telemetry/metrics_collector.py +107 -76
  9. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/metric_documentation.py +1 -0
  10. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/metric_name.py +1 -0
  11. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/__init__.py +0 -0
  12. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/__init__.py +0 -0
  13. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/ai/__init__.py +0 -0
  14. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/ai/configuration.py +0 -0
  15. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/ai/integrations.py +0 -0
  16. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/ai/orchestrator.py +0 -0
  17. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/authorization_client.py +0 -0
  18. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/automator/__init__.py +0 -0
  19. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/automator/async_task_runner.py +0 -0
  20. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/automator/task_runner.py +0 -0
  21. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/automator/utils.py +0 -0
  22. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/configuration/__init__.py +0 -0
  23. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/configuration/configuration.py +0 -0
  24. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/configuration/settings/__init__.py +0 -0
  25. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/configuration/settings/authentication_settings.py +0 -0
  26. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/configuration/settings/metrics_settings.py +0 -0
  27. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/context/__init__.py +0 -0
  28. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/context/task_context.py +0 -0
  29. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/__init__.py +0 -0
  30. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/conductor_event.py +0 -0
  31. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/event_client.py +0 -0
  32. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/event_dispatcher.py +0 -0
  33. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/listener_register.py +0 -0
  34. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/listeners.py +0 -0
  35. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/queue/__init__.py +0 -0
  36. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/queue/kafka_queue_configuration.py +0 -0
  37. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/queue/queue_configuration.py +0 -0
  38. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/queue/queue_worker_configuration.py +0 -0
  39. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/sync_event_dispatcher.py +0 -0
  40. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/sync_listener_register.py +0 -0
  41. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/task_events.py +0 -0
  42. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/task_runner_events.py +0 -0
  43. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/event/workflow_events.py +0 -0
  44. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/exceptions/__init__.py +0 -0
  45. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/exceptions/api_error.py +0 -0
  46. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/exceptions/api_exception_handler.py +0 -0
  47. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/helpers/__init__.py +0 -0
  48. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/helpers/helper.py +0 -0
  49. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/__init__.py +0 -0
  50. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/__init__.py +0 -0
  51. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/application_resource_api.py +0 -0
  52. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/async_task_resource_api.py +0 -0
  53. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/authorization_resource_api.py +0 -0
  54. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/event_resource_api.py +0 -0
  55. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/gateway_auth_resource_api.py +0 -0
  56. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/group_resource_api.py +0 -0
  57. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/integration_resource_api.py +0 -0
  58. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/metadata_resource_api.py +0 -0
  59. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/prompt_resource_api.py +0 -0
  60. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/role_resource_api.py +0 -0
  61. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/scheduler_resource_api.py +0 -0
  62. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/schema_resource_api.py +0 -0
  63. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/secret_resource_api.py +0 -0
  64. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/service_registry_resource_api.py +0 -0
  65. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/task_resource_api.py +0 -0
  66. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/token_resource_api.py +0 -0
  67. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/user_resource_api.py +0 -0
  68. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/workflow_bulk_resource_api.py +0 -0
  69. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api/workflow_resource_api.py +0 -0
  70. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/api_client.py +0 -0
  71. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/async_api_client.py +0 -0
  72. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/__init__.py +0 -0
  73. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/action.py +0 -0
  74. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/auditable.py +0 -0
  75. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/authentication_config.py +0 -0
  76. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/authorization_request.py +0 -0
  77. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/bulk_response.py +0 -0
  78. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/circuit_breaker_transition_response.py +0 -0
  79. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/conductor_application.py +0 -0
  80. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/conductor_user.py +0 -0
  81. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/correlation_ids_search_request.py +0 -0
  82. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/create_or_update_application_request.py +0 -0
  83. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/create_or_update_role_request.py +0 -0
  84. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/event_handler.py +0 -0
  85. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/external_storage_location.py +0 -0
  86. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/generate_token_request.py +0 -0
  87. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/group.py +0 -0
  88. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/health.py +0 -0
  89. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/health_check_status.py +0 -0
  90. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/integration.py +0 -0
  91. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_api.py +0 -0
  92. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_api_update.py +0 -0
  93. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_def.py +0 -0
  94. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_update.py +0 -0
  95. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/permission.py +0 -0
  96. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/poll_data.py +0 -0
  97. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/prompt_template.py +0 -0
  98. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/prompt_test_request.py +0 -0
  99. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/proto_registry_entry.py +0 -0
  100. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/rate_limit.py +0 -0
  101. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/request_param.py +0 -0
  102. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/rerun_workflow_request.py +0 -0
  103. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/response.py +0 -0
  104. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/role.py +0 -0
  105. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/save_schedule_request.py +0 -0
  106. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/schema_def.py +0 -0
  107. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/scrollable_search_result_workflow_summary.py +0 -0
  108. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_task.py +0 -0
  109. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_task_summary.py +0 -0
  110. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_workflow.py +0 -0
  111. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_workflow_schedule_execution_model.py +0 -0
  112. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_workflow_summary.py +0 -0
  113. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/service_method.py +0 -0
  114. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/service_registry.py +0 -0
  115. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/signal_response.py +0 -0
  116. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/skip_task_request.py +0 -0
  117. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/start_workflow.py +0 -0
  118. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/start_workflow_request.py +0 -0
  119. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/state_change_event.py +0 -0
  120. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/sub_workflow_params.py +0 -0
  121. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/subject_ref.py +0 -0
  122. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/tag_object.py +0 -0
  123. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/tag_string.py +0 -0
  124. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/target_ref.py +0 -0
  125. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task.py +0 -0
  126. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task_def.py +0 -0
  127. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task_details.py +0 -0
  128. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task_exec_log.py +0 -0
  129. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task_result.py +0 -0
  130. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task_result_status.py +0 -0
  131. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/task_summary.py +0 -0
  132. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/terminate_workflow.py +0 -0
  133. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/token.py +0 -0
  134. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/update_workflow_variables.py +0 -0
  135. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/upsert_group_request.py +0 -0
  136. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/upsert_user_request.py +0 -0
  137. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow.py +0 -0
  138. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_def.py +0 -0
  139. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_run.py +0 -0
  140. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_schedule.py +0 -0
  141. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_schedule_execution_model.py +0 -0
  142. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_state_update.py +0 -0
  143. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_status.py +0 -0
  144. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_summary.py +0 -0
  145. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_tag.py +0 -0
  146. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_task.py +0 -0
  147. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_test_request.py +0 -0
  148. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/http/thread.py +0 -0
  149. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/integration_client.py +0 -0
  150. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/metadata_client.py +0 -0
  151. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/__init__.py +0 -0
  152. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/api/__init__.py +0 -0
  153. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/api/tags_api.py +0 -0
  154. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/__init__.py +0 -0
  155. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/access_key.py +0 -0
  156. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/access_key_status.py +0 -0
  157. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/access_type.py +0 -0
  158. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/created_access_key.py +0 -0
  159. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/granted_permission.py +0 -0
  160. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/metadata_tag.py +0 -0
  161. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/models/ratelimit_tag.py +0 -0
  162. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_authorization_client.py +0 -0
  163. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_base_client.py +0 -0
  164. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_integration_client.py +0 -0
  165. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_metadata_client.py +0 -0
  166. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_prompt_client.py +0 -0
  167. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_scheduler_client.py +0 -0
  168. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_schema_client.py +0 -0
  169. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_secret_client.py +0 -0
  170. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_service_registry_client.py +0 -0
  171. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_task_client.py +0 -0
  172. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_workflow_client.py +0 -0
  173. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/orkes_clients.py +0 -0
  174. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/prompt_client.py +0 -0
  175. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/scheduler_client.py +0 -0
  176. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/schema_client.py +0 -0
  177. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/secret_client.py +0 -0
  178. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/service_registry_client.py +0 -0
  179. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/task_client.py +0 -0
  180. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/telemetry/__init__.py +0 -0
  181. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/__init__.py +0 -0
  182. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/metric_label.py +0 -0
  183. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/__init__.py +0 -0
  184. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/exception.py +0 -0
  185. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/worker.py +0 -0
  186. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/worker_config.py +0 -0
  187. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/worker_interface.py +0 -0
  188. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/worker_loader.py +0 -0
  189. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/worker/worker_task.py +0 -0
  190. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/__init__.py +0 -0
  191. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/conductor_workflow.py +0 -0
  192. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/executor/__init__.py +0 -0
  193. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/executor/workflow_executor.py +0 -0
  194. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/__init__.py +0 -0
  195. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/do_while_task.py +0 -0
  196. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/dynamic_fork_task.py +0 -0
  197. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/dynamic_task.py +0 -0
  198. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/event_task.py +0 -0
  199. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/fork_task.py +0 -0
  200. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/get_document.py +0 -0
  201. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/http_poll_task.py +0 -0
  202. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/http_task.py +0 -0
  203. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/human_task.py +0 -0
  204. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/inline.py +0 -0
  205. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/javascript_task.py +0 -0
  206. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/join_task.py +0 -0
  207. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/json_jq_task.py +0 -0
  208. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/kafka_publish.py +0 -0
  209. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/kafka_publish_input.py +0 -0
  210. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/__init__.py +0 -0
  211. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/call_mcp_tool.py +0 -0
  212. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/chat_message.py +0 -0
  213. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/generate_audio.py +0 -0
  214. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/generate_image.py +0 -0
  215. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/list_mcp_tools.py +0 -0
  216. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_chat_complete.py +0 -0
  217. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_generate_embeddings.py +0 -0
  218. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_index_documents.py +0 -0
  219. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_index_text.py +0 -0
  220. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_query_embeddings.py +0 -0
  221. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_search_embeddings.py +0 -0
  222. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_search_index.py +0 -0
  223. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_store_embeddings.py +0 -0
  224. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/llm_text_complete.py +0 -0
  225. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/tool_call.py +0 -0
  226. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/tool_spec.py +0 -0
  227. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/utils/__init__.py +0 -0
  228. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/utils/embedding_model.py +0 -0
  229. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/utils/prompt.py +0 -0
  230. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/set_variable_task.py +0 -0
  231. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/simple_task.py +0 -0
  232. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/start_workflow_task.py +0 -0
  233. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/sub_workflow_task.py +0 -0
  234. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/switch_task.py +0 -0
  235. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/task.py +0 -0
  236. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/task_type.py +0 -0
  237. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/terminate_task.py +0 -0
  238. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/timeout_policy.py +0 -0
  239. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/wait_for_webhook_task.py +0 -0
  240. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow/task/wait_task.py +0 -0
  241. {conductor_python-1.3.3 → conductor_python-1.3.4}/src/conductor/client/workflow_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conductor-python
3
- Version: 1.3.3
3
+ Version: 1.3.4
4
4
  Summary: Python SDK for working with https://github.com/conductor-oss/conductor
5
5
  License: Apache-2.0
6
6
  Author: Orkes
@@ -31,74 +31,145 @@ Requires-Dist: six (>=1.10)
31
31
  Requires-Dist: typing-extensions (>=4.2.0)
32
32
  Description-Content-Type: text/markdown
33
33
 
34
- # Conductor Python SDK
34
+ # Python SDK for Conductor
35
35
 
36
- [![CI Status](https://github.com/conductor-oss/python-sdk/actions/workflows/pull_request.yml/badge.svg)](https://github.com/conductor-oss/python-sdk/actions/workflows/pull_request.yml)
36
+ [![CI](https://github.com/conductor-sdk/conductor-python/actions/workflows/pull_request.yml/badge.svg)](https://github.com/conductor-sdk/conductor-python/actions/workflows/pull_request.yml)
37
+ [![PyPI](https://img.shields.io/pypi/v/conductor-python.svg)](https://pypi.org/project/conductor-python/)
38
+ [![Python Versions](https://img.shields.io/pypi/pyversions/conductor-python.svg)](https://pypi.org/project/conductor-python/)
39
+ [![License](https://img.shields.io/pypi/l/conductor-python.svg)](LICENSE)
37
40
 
38
- Python SDK for [Conductor](https://www.conductor-oss.org/) the leading open-source orchestration platform for building distributed applications, AI agents, and workflow-driven microservices. Define workflows as code, run workers anywhere, and let Conductor handle retries, state management, and observability.
41
+ Python SDK for [Conductor](https://www.conductor-oss.org/) (OSS and Orkes Conductor) — an orchestration platform for building distributed applications, AI agents, and workflow-driven microservices. Define workflows as code, run workers anywhere, and let Conductor handle retries, state management, and observability.
39
42
 
40
43
  If you find [Conductor](https://github.com/conductor-oss/conductor) useful, please consider giving it a star on GitHub -- it helps the project grow.
41
44
 
42
45
  [![GitHub stars](https://img.shields.io/github/stars/conductor-oss/conductor.svg?style=social&label=Star&maxAge=)](https://GitHub.com/conductor-oss/conductor/)
43
46
 
44
- ## 60-Second Quickstart
45
47
 
46
- Install the SDK and create a single file `quickstart.py`:
47
48
 
48
- ```shell
49
- pip install conductor-python
50
- ```
49
+ <!-- TOC -->
50
+ * [Python SDK for Conductor](#python-sdk-for-conductor)
51
+ * [Start Conductor server](#start--conductor-server)
52
+ * [Install the SDK](#install-the-sdk)
53
+ * [60-Second Quickstart](#60-second-quickstart)
54
+ * [Comprehensive worker example](#comprehensive-worker-example-)
55
+ * [Workers](#workers)
56
+ * [Monitoring Workers](#monitoring-workers)
57
+ * [Workflows](#workflows)
58
+ * [Troubleshooting](#troubleshooting)
59
+ * [AI & LLM Workflows](#ai--llm-workflows)
60
+ * [Examples](#examples)
61
+ * [API Journey Examples](#api-journey-examples)
62
+ * [Documentation](#documentation)
63
+ * [Support](#support)
64
+ * [Frequently Asked Questions](#frequently-asked-questions)
65
+ * [License](#license)
66
+ <!-- TOC -->
67
+
51
68
 
52
- ## Setting Up Conductor
69
+ ## Start Conductor server
53
70
 
54
- If you don't already have a Conductor server running:
71
+ If you don't already have a Conductor server running, pick one:
72
+
73
+ **Docker Compose (recommended, includes UI):**
74
+
75
+ ```shell
76
+ docker run -p 8080:8080 conductoross/conductor:latest
77
+ ```
78
+ The UI will be available at `http://localhost:8080` and the API at `http://localhost:8080/api`
55
79
 
56
- **macOS / Linux:**
80
+ **MacOS / Linux (one-liner):** (If you don't want to use docker, you can install and run the binary directly)
57
81
  ```shell
58
82
  curl -sSL https://raw.githubusercontent.com/conductor-oss/conductor/main/conductor_server.sh | sh
59
83
  ```
60
84
 
61
- **Docker:**
85
+ **Conductor CLI**
62
86
  ```shell
63
- docker run -p 8080:8080 conductoross/conductor:latest
87
+ # Installs conductor cli
88
+ npm install -g @conductor-oss/conductor-cli
89
+
90
+ # Start the open source conductor server
91
+ conductor server start
92
+ # see conductor server --help for all the available commands
64
93
  ```
65
- The UI will be available at `http://localhost:8080`.
66
94
 
67
- ## Run your first workflow app
95
+ ## Install the SDK
96
+
97
+ ```shell
98
+ pip install conductor-python
99
+ ```
100
+
101
+ ## 60-Second Quickstart
102
+
103
+ **Step 1: Create a workflow**
104
+
105
+ Workflows are definitions that reference task types (e.g. a SIMPLE task called `greet`). We'll build a workflow called
106
+ `greetings` that runs one task and returns its output.
107
+
108
+ Assuming you have a `WorkflowExecutor` (`executor`) and a worker task (`greet`):
109
+
110
+ ```python
111
+ from conductor.client.workflow.conductor_workflow import ConductorWorkflow
112
+
113
+ workflow = ConductorWorkflow(name='greetings', version=1, executor=executor)
114
+ greet_task = greet(task_ref_name='greet_ref', name=workflow.input('name'))
115
+ workflow >> greet_task
116
+ workflow.output_parameters({'result': greet_task.output('result')})
117
+ workflow.register(overwrite=True)
118
+ ```
119
+
120
+ **Step 2: Write worker**
121
+
122
+ Workers are just Python functions decorated with `@worker_task` that poll Conductor for tasks and execute them.
123
+
124
+ ```python
125
+ from conductor.client.worker.worker_task import worker_task
126
+
127
+ # register_task_def=True is convenient for local dev quickstarts; in production, manage task definitions separately.
128
+ @worker_task(task_definition_name='greet', register_task_def=True)
129
+ def greet(name: str) -> str:
130
+ return f'Hello {name}'
131
+ ```
132
+
133
+ **Step 3: Run your first workflow app**
134
+
135
+ Create a `quickstart.py` with the following:
136
+
68
137
  ```python
69
138
  from conductor.client.automator.task_handler import TaskHandler
70
139
  from conductor.client.configuration.configuration import Configuration
140
+ from conductor.client.orkes_clients import OrkesClients
71
141
  from conductor.client.workflow.conductor_workflow import ConductorWorkflow
72
- from conductor.client.workflow.executor.workflow_executor import WorkflowExecutor
73
142
  from conductor.client.worker.worker_task import worker_task
74
143
 
75
144
 
76
- # Step 1: Define a worker any Python function
77
- @worker_task(task_definition_name='greet')
145
+ # A worker is any Python function.
146
+ @worker_task(task_definition_name='greet', register_task_def=True)
78
147
  def greet(name: str) -> str:
79
148
  return f'Hello {name}'
80
149
 
81
150
 
82
151
  def main():
83
- # Step 2: Configure the SDK (reads CONDUCTOR_SERVER_URL from env)
152
+ # Configure the SDK (reads CONDUCTOR_SERVER_URL / CONDUCTOR_AUTH_* from env).
84
153
  config = Configuration()
85
154
 
86
- # Step 3: Build a workflow with the >> operator
87
- executor = WorkflowExecutor(configuration=config)
88
- workflow = ConductorWorkflow(name='greetings', version=1, executor=executor)
89
- workflow >> greet(task_ref_name='greet_ref', name=workflow.input('name'))
90
- workflow.register(True)
155
+ clients = OrkesClients(configuration=config)
156
+ executor = clients.get_workflow_executor()
91
157
 
92
- # Step 4: Start polling for tasks
93
- task_handler = TaskHandler(configuration=config)
94
- task_handler.start_processes()
158
+ # Build a workflow with the >> operator.
159
+ workflow = ConductorWorkflow(name='greetings', version=1, executor=executor)
160
+ greet_task = greet(task_ref_name='greet_ref', name=workflow.input('name'))
161
+ workflow >> greet_task
162
+ workflow.output_parameters({'result': greet_task.output('result')})
163
+ workflow.register(overwrite=True)
95
164
 
96
- # Step 5: Run the workflow and get the result
97
- result = executor.execute(name='greetings', version=1, workflow_input={'name': 'Conductor'})
98
- print(f'result: {result.output["result"]}')
99
- print(f'execution: {config.ui_host}/execution/{result.workflow_id}')
165
+ # Start polling for tasks (one worker subprocess per worker function).
166
+ with TaskHandler(configuration=config, scan_for_annotated_workers=True) as task_handler:
167
+ task_handler.start_processes()
100
168
 
101
- task_handler.stop_processes()
169
+ # Run the workflow and get the result.
170
+ run = executor.execute(name='greetings', version=1, workflow_input={'name': 'Conductor'})
171
+ print(f'result: {run.output["result"]}')
172
+ print(f'execution: {config.ui_host}/execution/{run.workflow_id}')
102
173
 
103
174
 
104
175
  if __name__ == '__main__':
@@ -108,42 +179,42 @@ if __name__ == '__main__':
108
179
  Run it:
109
180
 
110
181
  ```shell
111
- export CONDUCTOR_SERVER_URL="http://localhost:8080/api"
112
182
  python quickstart.py
113
183
  ```
114
184
 
115
- > **Using Orkes Conductor?** Export your authentication credentials as well:
185
+ > ### Using Orkes Conductor / Remote Server?
186
+ > Export your authentication credentials as well:
187
+ >
116
188
  > ```shell
117
189
  > export CONDUCTOR_SERVER_URL="https://your-cluster.orkesconductor.io/api"
190
+ >
191
+ > # If using Orkes Conductor that requires auth key/secret
118
192
  > export CONDUCTOR_AUTH_KEY="your-key"
119
193
  > export CONDUCTOR_AUTH_SECRET="your-secret"
194
+ >
195
+ > # Optional — set to false to force HTTP/1.1 if your network environment has unstable long-lived HTTP/2 connections (default: true)
196
+ > # export CONDUCTOR_HTTP2_ENABLED=false
120
197
  > ```
121
198
  > See [Configuration](#configuration) for details.
122
199
 
123
- That's it -- you just defined a worker, built a workflow, and executed it. Open [http://localhost:8080](http://localhost:8080) to see the execution in the Conductor UI.
200
+ That's it -- you just defined a worker, built a workflow, and executed it. Open the Conductor UI (default:
201
+ [http://localhost:8127](http://localhost:8127)) to see the execution.
124
202
 
125
- ### Comprehensive example with sync + async workers, metrics, and long-running tasks
203
+ ## Comprehensive worker example
204
+ The example includes sync + async workers, metrics, and long-running tasks
126
205
 
127
206
  See [examples/workers_e2e.py](examples/workers_e2e.py)
128
207
 
129
- ### Configuration
130
-
131
- The SDK reads configuration from environment variables:
132
-
133
- ```shell
134
- # Required — Conductor server endpoint
135
- export CONDUCTOR_SERVER_URL="http://localhost:8080/api"
136
-
137
- # Optional — Authentication (required for Orkes Conductor)
138
- export CONDUCTOR_AUTH_KEY="your-key"
139
- export CONDUCTOR_AUTH_SECRET="your-secret"
140
- ```
141
208
  ---
142
209
 
143
210
  ## Workers
144
211
 
145
- Workers are Python functions that execute tasks. Decorate any function with `@worker_task` to make it a distributed worker:
146
- Note: Workers can be used by LLMs for tool calling.
212
+ Workers are Python functions that execute Conductor tasks. Decorate any function with `@worker_task` to:
213
+
214
+ - register it as a worker (auto-discovered by `TaskHandler`)
215
+ - use it as a workflow task (call it with `task_ref_name=...`)
216
+
217
+ Note: Workers can also be used by LLMs for tool calling (see [AI & LLM Workflows](#ai--llm-workflows)).
147
218
 
148
219
  ```python
149
220
  from conductor.client.worker.worker_task import worker_task
@@ -156,6 +227,8 @@ def greet(name: str) -> str:
156
227
  **Async workers** for I/O-bound tasks — the SDK automatically uses `AsyncTaskRunner` (event loop, no thread overhead):
157
228
 
158
229
  ```python
230
+ import httpx
231
+
159
232
  @worker_task(task_definition_name='fetch_data')
160
233
  async def fetch_data(url: str) -> dict:
161
234
  async with httpx.AsyncClient() as client:
@@ -165,6 +238,9 @@ async def fetch_data(url: str) -> dict:
165
238
 
166
239
  **Start workers** with `TaskHandler`:
167
240
 
241
+ Note: `@worker_task` functions are discovered only after their modules are imported. Either import your worker modules
242
+ explicitly, or pass `import_modules=[...]` when constructing `TaskHandler`.
243
+
168
244
  ```python
169
245
  from conductor.client.automator.task_handler import TaskHandler
170
246
  from conductor.client.configuration.configuration import Configuration
@@ -173,13 +249,76 @@ api_config = Configuration()
173
249
  task_handler = TaskHandler(
174
250
  workers=[],
175
251
  configuration=api_config,
176
- scan_for_annotated_workers=True,
252
+ scan_for_annotated_workers=True, # auto-discover @worker_task functions
253
+ # monitor_processes=True and restart_on_failure=True by default
177
254
  )
178
255
  task_handler.start_processes()
256
+ try:
257
+ task_handler.join_processes() # blocks (workers poll forever)
258
+ finally:
259
+ task_handler.stop_processes()
179
260
  ```
180
261
 
181
262
  Workers support complex inputs (dataclasses), long-running tasks (`TaskInProgress`), and hierarchical configuration via environment variables.
182
263
 
264
+ **Resilience: auto-restart and health checks**
265
+
266
+
267
+ Workers are typically long-lived services. By default, `TaskHandler` monitors worker subprocesses and restarts them if
268
+ they exit unexpectedly.
269
+
270
+ For a `/healthcheck` endpoint, you can use:
271
+
272
+ ```python
273
+ task_handler.is_healthy()
274
+ task_handler.get_worker_process_status()
275
+ ```
276
+
277
+ To disable monitoring/restarts (e.g., local debugging):
278
+
279
+ ```python
280
+ TaskHandler(..., monitor_processes=False, restart_on_failure=False)
281
+ ```
282
+
283
+ **Worker Configuration**
284
+
285
+ Workers support hierarchical environment variable configuration — global settings that can be overridden per worker:
286
+
287
+ ```shell
288
+ # Global (all workers)
289
+ export CONDUCTOR_WORKER_ALL_POLL_INTERVAL_MILLIS=250
290
+ export CONDUCTOR_WORKER_ALL_THREAD_COUNT=20
291
+ export CONDUCTOR_WORKER_ALL_DOMAIN=production
292
+
293
+ # Per-worker override
294
+ export CONDUCTOR_WORKER_GREETINGS_THREAD_COUNT=50
295
+ ```
296
+
297
+ See [WORKER_CONFIGURATION.md](WORKER_CONFIGURATION.md) for all options.
298
+
299
+ ## Monitoring Workers
300
+
301
+ Enable Prometheus metrics:
302
+
303
+ ```python
304
+ from conductor.client.automator.task_handler import TaskHandler
305
+ from conductor.client.configuration.configuration import Configuration
306
+ from conductor.client.configuration.settings.metrics_settings import MetricsSettings
307
+
308
+ api_config = Configuration()
309
+ metrics_settings = MetricsSettings(directory='/tmp/conductor-metrics', http_port=8000)
310
+
311
+ task_handler = TaskHandler(configuration=api_config, metrics_settings=metrics_settings, scan_for_annotated_workers=True)
312
+ task_handler.start_processes()
313
+ # Metrics at http://localhost:8000/metrics
314
+ try:
315
+ task_handler.join_processes() # blocks (workers poll forever)
316
+ finally:
317
+ task_handler.stop_processes()
318
+ ```
319
+
320
+ See [METRICS.md](METRICS.md) for details.
321
+
183
322
  **Learn more:**
184
323
  - [Worker Design & Architecture](docs/design/WORKER_DESIGN.md) — AsyncTaskRunner vs TaskRunner, discovery, lifecycle
185
324
  - [Worker Configuration](WORKER_CONFIGURATION.md) — Environment variable configuration system
@@ -190,13 +329,19 @@ Workers support complex inputs (dataclasses), long-running tasks (`TaskInProgres
190
329
  Define workflows in Python using the `>>` operator to chain tasks:
191
330
 
192
331
  ```python
332
+ from conductor.client.configuration.configuration import Configuration
333
+ from conductor.client.orkes_clients import OrkesClients
193
334
  from conductor.client.workflow.conductor_workflow import ConductorWorkflow
194
- from conductor.client.workflow.executor.workflow_executor import WorkflowExecutor
195
335
 
196
- workflow_executor = WorkflowExecutor(configuration=api_config)
336
+ api_config = Configuration()
337
+ clients = OrkesClients(configuration=api_config)
338
+ workflow_executor = clients.get_workflow_executor()
339
+
197
340
  workflow = ConductorWorkflow(name='greetings', version=1, executor=workflow_executor)
341
+ # Assuming greet is defined (see Workers section above).
198
342
  workflow >> greet(task_ref_name='greet_ref', name=workflow.input('name'))
199
- workflow.register(True)
343
+ # Registering is required if you want to start/execute by name+version; optional if you only execute inline.
344
+ workflow.register(overwrite=True)
200
345
  ```
201
346
 
202
347
  **Execute workflows:**
@@ -209,10 +354,14 @@ print(result.output)
209
354
  # Asynchronous (returns workflow ID immediately)
210
355
  from conductor.client.http.models import StartWorkflowRequest
211
356
  request = StartWorkflowRequest(name='greetings', version=1, input={'name': 'Orkes'})
212
- workflow_id = workflow_client.start_workflow(request)
357
+ workflow_id = workflow_executor.start_workflow(request)
358
+
359
+ # Inline (sends the workflow definition with the request; no prior register required)
360
+ run = workflow.execute(workflow_input={'name': 'Orkes'}, wait_for_seconds=10)
361
+ print(run.output)
213
362
  ```
214
363
 
215
- **Manage running workflows:**
364
+ **Manage running workflows and send signals:**
216
365
 
217
366
  ```python
218
367
  from conductor.client.orkes_clients import OrkesClients
@@ -232,21 +381,22 @@ workflow_client.restart_workflow(workflow_id)
232
381
  - [Workflow Testing](docs/WORKFLOW_TESTING.md) — Unit testing with mock task outputs
233
382
  - [Metadata Management](docs/METADATA.md) — Task & workflow definitions
234
383
 
235
- ## Hello World
236
-
237
- The complete Hello World example lives in [`examples/helloworld/`](examples/helloworld/):
238
-
239
- ```shell
240
- python examples/helloworld/helloworld.py
241
- ```
242
-
243
- It creates a `greetings` workflow with one worker task, runs the worker, executes the workflow, and prints the result. See the [Hello World source](examples/helloworld/helloworld.py) for the full code.
384
+ ## Troubleshooting
244
385
 
386
+ - Worker stops polling or crashes: `TaskHandler` monitors and restarts worker subprocesses by default. Consider exposing
387
+ a `/healthcheck` endpoint using `task_handler.is_healthy()` + `task_handler.get_worker_process_status()`. If you
388
+ enable metrics, alert on `worker_restart_total`.
389
+ - `httpcore.RemoteProtocolError: <ConnectionTerminated ...>`: the SDK recreates the underlying HTTP client and retries
390
+ once for idempotent requests. If your environment is still unstable with HTTP/2, set
391
+ `CONDUCTOR_HTTP2_ENABLED=false` (forces HTTP/1.1) — see `docs/WORKER.md`.
392
+ - FastAPI/Uvicorn: avoid running `uvicorn` with multiple web workers unless you explicitly want multiple independent
393
+ `TaskHandler`s polling Conductor (see `examples/fastapi_worker_service.py`).
394
+ ---
245
395
  ## AI & LLM Workflows
246
396
 
247
397
  Conductor supports AI-native workflows including agentic tool calling, RAG pipelines, and multi-agent orchestration.
248
398
 
249
- ### Agentic Workflows
399
+ **Agentic Workflows**
250
400
 
251
401
  Build AI agents where LLMs dynamically select and call Python workers as tools. See [examples/agentic_workflows/](examples/agentic_workflows/) for all examples.
252
402
 
@@ -258,7 +408,7 @@ Build AI agents where LLMs dynamically select and call Python workers as tools.
258
408
  | [function_calling_example.py](examples/agentic_workflows/function_calling_example.py) | LLM picks which Python function to call based on user queries |
259
409
  | [mcp_weather_agent.py](examples/agentic_workflows/mcp_weather_agent.py) | AI agent using MCP tools for weather queries |
260
410
 
261
- ### LLM and RAG Workflows
411
+ **LLM and RAG Workflows**
262
412
 
263
413
  | Example | Description |
264
414
  |---------|-------------|
@@ -277,36 +427,6 @@ pip install "markitdown[pdf]"
277
427
  python examples/rag_workflow.py document.pdf "What are the key findings?"
278
428
  ```
279
429
 
280
- ### Worker Configuration
281
-
282
- Workers support hierarchical environment variable configuration — global settings that can be overridden per worker:
283
-
284
- ```shell
285
- # Global (all workers)
286
- export CONDUCTOR_WORKER_ALL_POLL_INTERVAL_MILLIS=250
287
- export CONDUCTOR_WORKER_ALL_THREAD_COUNT=20
288
- export CONDUCTOR_WORKER_ALL_DOMAIN=production
289
-
290
- # Per-worker override
291
- export CONDUCTOR_WORKER_GREETINGS_THREAD_COUNT=50
292
- ```
293
-
294
- See [WORKER_CONFIGURATION.md](WORKER_CONFIGURATION.md) for all options.
295
-
296
- ### Monitoring
297
-
298
- Enable Prometheus metrics:
299
-
300
- ```python
301
- from conductor.client.configuration.settings.metrics_settings import MetricsSettings
302
-
303
- metrics_settings = MetricsSettings(directory='/tmp/conductor-metrics', http_port=8000)
304
- task_handler = TaskHandler(configuration=api_config, metrics_settings=metrics_settings, scan_for_annotated_workers=True)
305
- # Metrics at http://localhost:8000/metrics
306
- ```
307
-
308
- See [METRICS.md](METRICS.md) for details.
309
-
310
430
  ## Examples
311
431
 
312
432
  See the [Examples Guide](examples/README.md) for the full catalog. Key examples:
@@ -314,6 +434,7 @@ See the [Examples Guide](examples/README.md) for the full catalog. Key examples:
314
434
  | Example | Description | Run |
315
435
  |---------|-------------|-----|
316
436
  | [workers_e2e.py](examples/workers_e2e.py) | End-to-end: sync + async workers, metrics | `python examples/workers_e2e.py` |
437
+ | [fastapi_worker_service.py](examples/fastapi_worker_service.py) | FastAPI: expose a workflow as an API (+ workers) (deps: fastapi, uvicorn) | `uvicorn examples.fastapi_worker_service:app --port 8081 --workers 1` |
317
438
  | [helloworld.py](examples/helloworld/helloworld.py) | Minimal hello world | `python examples/helloworld/helloworld.py` |
318
439
  | [dynamic_workflow.py](examples/dynamic_workflow.py) | Build workflows programmatically | `python examples/dynamic_workflow.py` |
319
440
  | [llm_chat.py](examples/agentic_workflows/llm_chat.py) | AI multi-turn chat | `python examples/agentic_workflows/llm_chat.py` |
@@ -323,7 +444,7 @@ See the [Examples Guide](examples/README.md) for the full catalog. Key examples:
323
444
  | [test_workflows.py](examples/test_workflows.py) | Unit testing workflows | `python -m unittest examples.test_workflows` |
324
445
  | [kitchensink.py](examples/kitchensink.py) | All task types (HTTP, JS, JQ, Switch) | `python examples/kitchensink.py` |
325
446
 
326
- ### API Journey Examples
447
+ ## API Journey Examples
327
448
 
328
449
  End-to-end examples covering all APIs for each domain:
329
450
 
@@ -355,7 +476,8 @@ End-to-end examples covering all APIs for each domain:
355
476
 
356
477
  ## Support
357
478
 
358
- - [Open an issue](https://github.com/conductor-oss/conductor/issues) for bugs, questions, and feature requests
479
+ - [Open an issue (SDK)](https://github.com/conductor-sdk/conductor-python/issues) for SDK bugs, questions, and feature requests
480
+ - [Open an issue (Conductor server)](https://github.com/conductor-oss/conductor/issues) for Conductor OSS server issues
359
481
  - [Join the Conductor Slack](https://join.slack.com/t/orkes-conductor/shared_invite/zt-2vdbx239s-Eacdyqya9giNLHfrCavfaA) for community discussion and help
360
482
  - [Orkes Community Forum](https://community.orkes.io/) for Q&A
361
483