{"id":28158522,"url":"https://github.com/indeedeng/iwf-python-sdk","last_synced_at":"2025-05-15T09:20:05.607Z","repository":{"id":168746582,"uuid":"644253822","full_name":"indeedeng/iwf-python-sdk","owner":"indeedeng","description":"Python SDK for iWF ","archived":false,"fork":false,"pushed_at":"2025-05-06T19:40:58.000Z","size":602,"stargazers_count":5,"open_issues_count":5,"forks_count":3,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-05-06T20:36:08.942Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indeedeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-23T06:26:06.000Z","updated_at":"2025-05-06T19:38:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"77866722-0742-4148-9ea3-b4524b70d2a5","html_url":"https://github.com/indeedeng/iwf-python-sdk","commit_stats":null,"previous_names":["indeedeng/iwf-python-sdk"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fiwf-python-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fiwf-python-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fiwf-python-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fiwf-python-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indeedeng","download_url":"https://codeload.github.com/indeedeng/iwf-python-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254310502,"owners_count":22049471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-15T09:19:43.035Z","updated_at":"2025-05-15T09:20:05.554Z","avatar_url":"https://github.com/indeedeng.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# iwf-python-sdk\n\nPython SDK for [iWF workflow engine](https://github.com/indeedeng/iwf)\n\n```\npip install iwf-python-sdk==0.2.0\n```\n\nSee [samples](https://github.com/indeedeng/iwf-python-samples) for use case examples.\n\n## Requirements\n\n- Python 3.9+\n- [iWF server](https://github.com/indeedeng/iwf#how-to-use)\n\n## Concepts\n\nTo implement a workflow, the two most core interfaces are\n\n* [Workflow interface](https://github.com/indeedeng/iwf-python-sdk/blob/main/iwf/workflow.py)\n  defines the workflow definition\n\n* [WorkflowState interface](https://github.com/indeedeng/iwf-python-sdk/blob/main/iwf/workflow_state.py)\n  defines the workflow states for workflow definitions\n\nA workflow can contain any number of WorkflowStates.\n\nSee more in https://github.com/indeedeng/iwf#what-is-iwf\n\n\n# Development Plan\n\n## 1.0 -- the basic and most frequently needed features\n- [x] Start workflow API\n- [x] Executing `wait_until`/`execute` APIs and completing workflow\n- [x] Parallel execution of multiple states\n- [x] GetWorkflowResultsWithWait API\n- [x] StateOption: WaitUntil(optional)/Execute API timeout and retry policy\n- [x] Get workflow with wait API\n- [x] Timer command\n- [x] AnyCommandCompleted and AllCommandCompleted waitingType\n- [x] InternalChannel command\n- [x] DataAttribute\n- [x] Stop workflow API\n- [x] Improve workflow uncompleted error return(canceled, failed, timeout, terminated)\n- [x] Support execute API failure policy\n- [x] Support workflow RPC\n- [x] Signal command\n- [x] Reset workflow API\n- [x] Skip timer API for testing/operation\n\n### Running iwf-server locally\n\n#### Option 1: use docker compose\nSee [iwf README](https://github.com/indeedeng/iwf#using-docker-image--docker-compose)\n\n#### Option 2: VSCode Dev Container\n\nDev Container is an easy way to get iwf-server running locally. Follow these steps to launch a dev container:\n- Install Docker, VSCode, and [VSCode Dev Container plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).\n- Open the project in VSCode.\n    ```bash\n    cd iwf-python-sdk\n    code .\n    ```\n- Launch the Remote-Containers: Reopen in Container command from Command Palette (Ctrl + Shift + P). You can also click in the bottom left corner to access the remote container menu.\n- Once the dev container starts, iwf-server will be listening on port 8801.\n\n## How To Contribute\n\nThis project uses [Poetry](https://python-poetry.org/) as a dependency manager. Check out Poetry's [documentation on how to install it](https://python-poetry.org/docs/#installing-with-the-official-installer) on your system before proceeding.\n\n\u003e ❗Note: If you use Conda or Pyenv as your environment / package manager, avoid dependency conflicts by doing the following first:\n1. Before installing Poetry, create and activate a new Conda env (e.g. conda create -n langchain python=3.9)\n2. Install Poetry (see above)\n3. Tell Poetry to use the virtualenv python environment (poetry config virtualenvs.prefer-active-python true)\n4. Continue with the following steps.\n\nTo install requirements:\n\n```bash\npoetry install\n```\n\n#### Update IDL\nInitialize the IDL Git submodule\n```bash\ngit submodule update --init --recursive\n```\n\nUpdate IDL to the latest commit.\n```bash\ngit submodule update --remote --merge\n```\n\n#### Generate API client from IDL\n\nThis project uses [openapi-python-client](https://github.com/openapi-generators/openapi-python-client) to generate an API client from the IDL. To update the generated client:\n\n```bash\npoetry run openapi-python-client generate --path iwf-idl/iwf-sdk.yaml --config iwf/.openapi-python-client-config.yaml\ncp -R iwf_api/iwf_api/* iwf/iwf_api \u0026\u0026 rm -R iwf_api/ \u0026\u0026 poetry update\n```\n\nThe last command will:\n* Fix the api package path\n* Update the local path dependency.\n#### Linting\n\nTo run linting for this project:\n\n```bash\npoetry run pre-commit run --show-diff-on-failure --color=always --all-files\n```\n\n## Code of Conduct\nThis project is governed by the [Contributor Covenant v 1.4.1](CODE_OF_CONDUCT.md). (Review the Code of Conduct and remove this sentence before publishing your project.)\n\n## License\nThis project uses the [Apache 2.0](LICENSE) license. (Update this and the LICENSE file if your project uses a different license.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Fiwf-python-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findeedeng%2Fiwf-python-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Fiwf-python-sdk/lists"}