feat: experimental workflows prototype
Which issue(s) does this pull-request address?
The PR contains a prototype for more flexible workflows. Its supports the standard features of our previous implementation such as shared state, and basic flows but adds:
- Workflow is defined in a single class
- Each step in a method
- Support static fan out and in
- Supports dynamic fan out and in
The major advantage of this approach is that you can have a step wait on multiple other steps to run, and you can have multiple steps that wait on a single step. The implementation also supports dynamic fan out/in.
Checklist
General
- [x] I have read the appropriate contributor guide: Python / TypeScript
- [x] I have signed off on my commit: Python instructions / TypeScript instructions
- [x] Commit messages and PR title follow conventional commits
- [x] Appropriate label(s) added to PR:
Pythonfor Python changes,TypeScriptfor TypeScript changes
Code quality checks
- [x] Linting passes: Python
poe lintorpoe lint --fix/ TypeScriptyarn lintoryarn lint:fix - [x] Formatting is applied: Python
poe formatorpoe format --fix/ TypeScript:yarn formatoryarn format:fix - [x] Static type checks pass: Python
poe type-check
Testing
- [x] Unit tests pass: Python
poe test --type unit/ TypeScriptyarn test:unit - [x] E2E tests pass: Python
poe test --type e2e/ TypeScript:yarn test:e2e - [x] Integration tests pass: Python
poe test --type integration - [ ] Tests are included (for bug fixes or new features)
Documentation
- [ ] Documentation is updated
- [ ] Embedme embeds code examples in docs. To update after edits, run: Python
poe docs --type build
@Tomas2D @jenna-winkler if you get a chance please take a look. This is an initial proposal for a new approach to workflows. With the understanding that there is likely down stream effects that I have not fully taken into account.
Discussed internally. We will work on a more appealing interface.
Stale. Closing.