ConductorWorkflow requires a live executor at construction time — prevents offline use

Open
#432 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
68/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python

Research direction

Locate ConductorWorkflow.init(), then inspect register(), start_workflow(), and execute() along with the existing WorkflowExecutor handling. Reproduce construction without a server, then verify executor-dependent calls fail clearly without one while executor-backed use still works.

Written by the indexing model from the issue text.

Description

enhancement

Summary

Tested against: Conductor OSS 3.32.0-rc.9

ConductorWorkflow.__init__() takes executor: WorkflowExecutor as a mandatory
first positional argument. This forces a live server connection at the point of
constructing a workflow definition, making offline use impossible.

Impact

  • Unit testing: tests that validate workflow structure (task order, task types,
    inputParameters) cannot be written without a running Conductor server.
  • Library code: functions that return workflow definitions must thread an
    executor parameter through all their call chains, coupling definition logic
    to connection management.
  • Code generation / serialization: workflow definitions cannot be built and
    exported to JSON without a server connection.

Reproduction

# Fails without a server running:
wf = ConductorWorkflow(name="my_wf", version=1)
# TypeError: ConductorWorkflow.__init__() missing 1 required positional argument: 'executor'

# Required:
config = Configuration(server_api_url="http://localhost:8080/api")
executor = WorkflowExecutor(config)
wf = ConductorWorkflow(executor=executor, name="my_wf", version=1)

Suggested fix

Make executor optional; raise RuntimeError only when an executor-dependent
method (.register(), .start_workflow(), .execute()) is called on a workflow
with no executor set:

def __init__(self, name: str, version: Optional[int] = None,
             executor: Optional[WorkflowExecutor] = None, ...):
    self._executor = executor
    ...

def register(self, overwrite: bool):
    if self._executor is None:
        raise RuntimeError("ConductorWorkflow.register() requires an executor. "
                           "Pass executor= at construction time.")
    ...

Verified against

Conductor server 3.32.0-rc.9, Python SDK (editable install from
conductor-oss/python-sdk main branch).

Dominant language
Python
Stars
104
Forks
43
Avg merge
1d 13h
Merged PRs (30d)
4

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from conductor-oss/python-sdk

All issues in conductor-oss/python-sdk

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.