{"id":28546059,"url":"https://github.com/jbasko/aws-sfn-builder","last_synced_at":"2025-08-02T23:09:41.867Z","repository":{"id":57413366,"uuid":"152883392","full_name":"jbasko/aws-sfn-builder","owner":"jbasko","description":"AWS Step Functions: state machine boilerplate generator","archived":false,"fork":false,"pushed_at":"2018-10-15T23:21:31.000Z","size":46,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-30T00:03:01.636Z","etag":null,"topics":["aws","aws-step-functions","boilerplate","python","state-machine"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbasko.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-13T15:02:42.000Z","updated_at":"2024-05-09T15:40:50.000Z","dependencies_parsed_at":"2022-08-28T01:12:01.762Z","dependency_job_id":null,"html_url":"https://github.com/jbasko/aws-sfn-builder","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/jbasko/aws-sfn-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbasko%2Faws-sfn-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbasko%2Faws-sfn-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbasko%2Faws-sfn-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbasko%2Faws-sfn-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbasko","download_url":"https://codeload.github.com/jbasko/aws-sfn-builder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbasko%2Faws-sfn-builder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268470799,"owners_count":24255391,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aws","aws-step-functions","boilerplate","python","state-machine"],"created_at":"2025-06-09T23:08:56.675Z","updated_at":"2025-08-02T23:09:41.859Z","avatar_url":"https://github.com/jbasko.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"===============\naws-sfn-builder\n===============\n\nAWS Step Functions State Machine builder.\n\nThe primary motivation for this was the amount of boilerplate (``Next``, ``End``) required to compose a valid\nstate machine definition, but soon one got carried away.\n\nPython 3.6+ only.\n\nInstallation\n------------\n\n.. code-block:: shell\n\n    pip install aws-sfn-builder\n\n\nGenerate State Machine Definition from Simple Description\n---------------------------------------------------------\n\n.. code-block:: python\n\n    from aws_sfn_builder import Machine\n\n    Machine.parse([\n        \"a\",\n        [\n            [\"b-10\", \"b-11\"],\n            [\"b-20\"],\n        ],\n        \"c\",\n    ]).to_json()\n\nThis will generate:\n\n.. code-block:: json\n\n    {\n        \"StartAt\": \"a\",\n        \"States\": {\n            \"a\": {\n                \"Type\": \"Task\",\n                \"Next\": \"d3d52323-137d-4228-9956-d3b77cc43a92\"\n            },\n            \"d3d52323-137d-4228-9956-d3b77cc43a92\": {\n                \"Type\": \"Parallel\",\n                \"Next\": \"c\",\n                \"Branches\": [\n                    {\n                        \"StartAt\": \"b-10\",\n                        \"States\": {\n                            \"b-10\": {\n                                \"Type\": \"Task\",\n                                \"Next\": \"b-11\"\n                            },\n                            \"b-11\": {\n                                \"Type\": \"Task\",\n                                \"End\": true\n                            }\n                        }\n                    },\n                    {\n                        \"StartAt\": \"b-20\",\n                        \"States\": {\n                            \"b-20\": {\n                                \"Type\": \"Task\",\n                                \"End\": true\n                            }\n                        }\n                    }\n                ]\n            },\n            \"c\": {\n                \"Type\": \"Task\",\n                \"End\": true\n            }\n        }\n    }\n\nParse Existing State Machine Definition\n---------------------------------------\n\n.. code-block:: python\n\n    # TODO load state_machine_json_dict\n\n    state_machine = Machine.parse(state_machine_json_dict)\n\n\nCompile State Machine\n---------------------\n\n.. code-block:: python\n\n    # TODO initialise state_machine\n\n    state_machine.compile()\n\n\nTest Your State Machine\n-----------------------\n\n*Work in progress.*\n\n.. code-block:: python\n\n    # TODO initialise state_machine\n\n    runner = Runner()\n\n    @runner.resource_provider(\"arn:aws:lambda:us-east-1:123456789012:function:Foo\")\n    def foo(input):\n        return \"foo-result\"\n\n    final_state, output = runner.run(state_machine)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbasko%2Faws-sfn-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbasko%2Faws-sfn-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbasko%2Faws-sfn-builder/lists"}