conductor-oss / conductor-oss/python-sdk

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

Offen
#432 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Python
Sterne
104
Forks
42
Ø Merge
2 T. 1 Std.
Gemergte PRs (30 T.)
3

Beschreibung

## 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

```python
# 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:

```python
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).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend-api-design
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.