kaboo-workflows 0.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kaboo_workflows-0.9.0/.github/ISSUE_TEMPLATE/bug_report.yml +124 -0
- kaboo_workflows-0.9.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- kaboo_workflows-0.9.0/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
- kaboo_workflows-0.9.0/.github/PULL_REQUEST_TEMPLATE.md +45 -0
- kaboo_workflows-0.9.0/.github/dependabot.yml +20 -0
- kaboo_workflows-0.9.0/.github/workflows/ci.yml +93 -0
- kaboo_workflows-0.9.0/.github/workflows/pages.yml +49 -0
- kaboo_workflows-0.9.0/.github/workflows/publish.yml +123 -0
- kaboo_workflows-0.9.0/.gitignore +63 -0
- kaboo_workflows-0.9.0/.kiro/skills/library-development/SKILL.md +314 -0
- kaboo_workflows-0.9.0/.kiro/skills/library-development/references/project-map.md +124 -0
- kaboo_workflows-0.9.0/.kiro/skills/library-testing/SKILL.md +332 -0
- kaboo_workflows-0.9.0/.kiro/skills/library-testing/references/test-patterns.md +380 -0
- kaboo_workflows-0.9.0/.pre-commit-config.yaml +48 -0
- kaboo_workflows-0.9.0/.secrets.baseline +127 -0
- kaboo_workflows-0.9.0/AGENTS.md +129 -0
- kaboo_workflows-0.9.0/CHANGELOG.md +105 -0
- kaboo_workflows-0.9.0/CONTRIBUTING.md +147 -0
- kaboo_workflows-0.9.0/LICENSE +174 -0
- kaboo_workflows-0.9.0/PKG-INFO +364 -0
- kaboo_workflows-0.9.0/README.md +324 -0
- kaboo_workflows-0.9.0/RELEASING.md +118 -0
- kaboo_workflows-0.9.0/SECURITY.md +31 -0
- kaboo_workflows-0.9.0/SUPPORT.md +34 -0
- kaboo_workflows-0.9.0/docs/api/adapters.md +8 -0
- kaboo_workflows-0.9.0/docs/api/config.md +8 -0
- kaboo_workflows-0.9.0/docs/api/converters.md +8 -0
- kaboo_workflows-0.9.0/docs/api/hooks.md +8 -0
- kaboo_workflows-0.9.0/docs/api/kaboo_workflows.md +9 -0
- kaboo_workflows-0.9.0/docs/api/mcp.md +8 -0
- kaboo_workflows-0.9.0/docs/api/renderers.md +8 -0
- kaboo_workflows-0.9.0/docs/api/tools.md +8 -0
- kaboo_workflows-0.9.0/docs/api/types.md +8 -0
- kaboo_workflows-0.9.0/docs/api-reference.md +66 -0
- kaboo_workflows-0.9.0/docs/assets/kaboo-icon.svg +14 -0
- kaboo_workflows-0.9.0/docs/concepts.md +73 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_01.md +71 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_02.md +106 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_03.md +117 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_04.md +115 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_05.md +107 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_06.md +180 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_07.md +165 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_08.md +71 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_09.md +195 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_10.md +170 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_11.md +67 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_12.md +118 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_13.md +110 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_14.md +97 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_15.md +113 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_16.md +70 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_17.md +210 -0
- kaboo_workflows-0.9.0/docs/configuration/Chapter_18.md +155 -0
- kaboo_workflows-0.9.0/docs/configuration/Quick_Recipes.md +113 -0
- kaboo_workflows-0.9.0/docs/configuration/README.md +38 -0
- kaboo_workflows-0.9.0/docs/getting-started.md +99 -0
- kaboo_workflows-0.9.0/docs/img/logo-black.svg +213 -0
- kaboo_workflows-0.9.0/docs/img/logo-white.svg +213 -0
- kaboo_workflows-0.9.0/docs/img/logo.png +0 -0
- kaboo_workflows-0.9.0/docs/index.md +50 -0
- kaboo_workflows-0.9.0/docs/troubleshooting.md +68 -0
- kaboo_workflows-0.9.0/docs/workflows/deep-nesting.md +59 -0
- kaboo_workflows-0.9.0/docs/workflows/errors-and-rejection.md +50 -0
- kaboo_workflows-0.9.0/docs/workflows/human-in-the-loop.md +65 -0
- kaboo_workflows-0.9.0/docs/workflows/multi-turn-history.md +51 -0
- kaboo_workflows-0.9.0/docs/workflows/parallel.md +58 -0
- kaboo_workflows-0.9.0/docs/workflows/swarm-and-graph.md +54 -0
- kaboo_workflows-0.9.0/examples/01_minimal/README.md +67 -0
- kaboo_workflows-0.9.0/examples/01_minimal/config.yaml +22 -0
- kaboo_workflows-0.9.0/examples/01_minimal/main.py +47 -0
- kaboo_workflows-0.9.0/examples/02_vars_and_anchors/README.md +100 -0
- kaboo_workflows-0.9.0/examples/02_vars_and_anchors/config.yaml +48 -0
- kaboo_workflows-0.9.0/examples/02_vars_and_anchors/main.py +59 -0
- kaboo_workflows-0.9.0/examples/03_tools/README.md +78 -0
- kaboo_workflows-0.9.0/examples/03_tools/config.yaml +35 -0
- kaboo_workflows-0.9.0/examples/03_tools/main.py +48 -0
- kaboo_workflows-0.9.0/examples/03_tools/tools.py +48 -0
- kaboo_workflows-0.9.0/examples/04_session/README.md +144 -0
- kaboo_workflows-0.9.0/examples/04_session/config.yaml +32 -0
- kaboo_workflows-0.9.0/examples/04_session/main.py +47 -0
- kaboo_workflows-0.9.0/examples/05_hooks/README.md +84 -0
- kaboo_workflows-0.9.0/examples/05_hooks/config.yaml +40 -0
- kaboo_workflows-0.9.0/examples/05_hooks/custom_tools.py +50 -0
- kaboo_workflows-0.9.0/examples/05_hooks/hooks.py +36 -0
- kaboo_workflows-0.9.0/examples/05_hooks/main.py +50 -0
- kaboo_workflows-0.9.0/examples/06_mcp/README.md +126 -0
- kaboo_workflows-0.9.0/examples/06_mcp/config.yaml +68 -0
- kaboo_workflows-0.9.0/examples/06_mcp/main.py +49 -0
- kaboo_workflows-0.9.0/examples/06_mcp/server.py +75 -0
- kaboo_workflows-0.9.0/examples/07_delegate/README.md +86 -0
- kaboo_workflows-0.9.0/examples/07_delegate/config.yaml +57 -0
- kaboo_workflows-0.9.0/examples/07_delegate/main.py +47 -0
- kaboo_workflows-0.9.0/examples/08_swarm/README.md +75 -0
- kaboo_workflows-0.9.0/examples/08_swarm/config.yaml +52 -0
- kaboo_workflows-0.9.0/examples/08_swarm/main.py +47 -0
- kaboo_workflows-0.9.0/examples/09_graph/README.md +76 -0
- kaboo_workflows-0.9.0/examples/09_graph/config.yaml +55 -0
- kaboo_workflows-0.9.0/examples/09_graph/main.py +47 -0
- kaboo_workflows-0.9.0/examples/10_nested/README.md +85 -0
- kaboo_workflows-0.9.0/examples/10_nested/config.yaml +105 -0
- kaboo_workflows-0.9.0/examples/10_nested/main.py +48 -0
- kaboo_workflows-0.9.0/examples/11_multi_file_config/README.md +83 -0
- kaboo_workflows-0.9.0/examples/11_multi_file_config/agents.yaml +18 -0
- kaboo_workflows-0.9.0/examples/11_multi_file_config/base.yaml +19 -0
- kaboo_workflows-0.9.0/examples/11_multi_file_config/main.py +50 -0
- kaboo_workflows-0.9.0/examples/12_streaming/README.md +96 -0
- kaboo_workflows-0.9.0/examples/12_streaming/config.yaml +59 -0
- kaboo_workflows-0.9.0/examples/12_streaming/main.py +71 -0
- kaboo_workflows-0.9.0/examples/13_graph_conditions/README.md +90 -0
- kaboo_workflows-0.9.0/examples/13_graph_conditions/conditions.py +33 -0
- kaboo_workflows-0.9.0/examples/13_graph_conditions/config.yaml +55 -0
- kaboo_workflows-0.9.0/examples/13_graph_conditions/main.py +48 -0
- kaboo_workflows-0.9.0/examples/14_agent_factory/README.md +75 -0
- kaboo_workflows-0.9.0/examples/14_agent_factory/config.yaml +23 -0
- kaboo_workflows-0.9.0/examples/14_agent_factory/factory.py +53 -0
- kaboo_workflows-0.9.0/examples/14_agent_factory/main.py +47 -0
- kaboo_workflows-0.9.0/examples/15_deep_nesting/README.md +34 -0
- kaboo_workflows-0.9.0/examples/15_deep_nesting/config.yaml +72 -0
- kaboo_workflows-0.9.0/examples/15_deep_nesting/main.py +45 -0
- kaboo_workflows-0.9.0/examples/16_swarm_in_graph/README.md +32 -0
- kaboo_workflows-0.9.0/examples/16_swarm_in_graph/config.yaml +80 -0
- kaboo_workflows-0.9.0/examples/16_swarm_in_graph/main.py +44 -0
- kaboo_workflows-0.9.0/examples/17_parallel/README.md +34 -0
- kaboo_workflows-0.9.0/examples/17_parallel/config.yaml +74 -0
- kaboo_workflows-0.9.0/examples/17_parallel/main.py +45 -0
- kaboo_workflows-0.9.0/examples/18_hitl/README.md +40 -0
- kaboo_workflows-0.9.0/examples/18_hitl/config.yaml +53 -0
- kaboo_workflows-0.9.0/examples/18_hitl/main.py +50 -0
- kaboo_workflows-0.9.0/examples/19_multiturn_history/README.md +35 -0
- kaboo_workflows-0.9.0/examples/19_multiturn_history/config.yaml +50 -0
- kaboo_workflows-0.9.0/examples/19_multiturn_history/main.py +50 -0
- kaboo_workflows-0.9.0/examples/20_error_and_rejection/README.md +35 -0
- kaboo_workflows-0.9.0/examples/20_error_and_rejection/config.yaml +52 -0
- kaboo_workflows-0.9.0/examples/20_error_and_rejection/main.py +46 -0
- kaboo_workflows-0.9.0/examples/README.md +50 -0
- kaboo_workflows-0.9.0/examples/TEMPLATE_EXAMPLE.md +57 -0
- kaboo_workflows-0.9.0/examples/step1/config.yaml +33 -0
- kaboo_workflows-0.9.0/examples/step1/main.py +44 -0
- kaboo_workflows-0.9.0/examples/step1/tools/calculator_tool.py +18 -0
- kaboo_workflows-0.9.0/justfile +30 -0
- kaboo_workflows-0.9.0/llms-full.txt +3600 -0
- kaboo_workflows-0.9.0/llms.txt +65 -0
- kaboo_workflows-0.9.0/mkdocs.yml +102 -0
- kaboo_workflows-0.9.0/pyproject.toml +142 -0
- kaboo_workflows-0.9.0/scripts/gen_llms.py +116 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/__init__.py +66 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/_context.py +135 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/adapters/__init__.py +7 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/adapters/_activity.py +172 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/adapters/_multiagent.py +387 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/adapters/_strands_bridge.py +107 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/adapters/agui.py +958 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/cli.py +434 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/__init__.py +53 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/interpolation.py +196 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/loaders/__init__.py +12 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/loaders/helpers.py +409 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/loaders/loaders.py +292 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/loaders/validators.py +124 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/__init__.py +28 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/agents.py +255 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/config.py +466 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/conversation_manager.py +54 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/hooks.py +68 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/mcp.py +106 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/models.py +47 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/orchestrations/__init__.py +81 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/orchestrations/builders.py +409 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/orchestrations/planner.py +103 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/schema_prompt.py +67 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/resolvers/session_manager.py +183 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/config/schema.py +457 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/converters/__init__.py +13 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/converters/base.py +54 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/converters/openai.py +381 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/converters/raw.py +31 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/exceptions.py +27 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/__init__.py +21 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/event_publisher.py +600 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/history_hook.py +145 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/interrupt_hook.py +52 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/max_calls_guard.py +90 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/stop_guard.py +113 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/hooks/tool_name_sanitizer.py +184 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/manifest.py +306 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/mcp/README.md +105 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/mcp/__init__.py +27 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/mcp/client.py +154 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/mcp/lifecycle.py +246 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/mcp/server.py +327 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/mcp/transports.py +188 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/models.py +69 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/py.typed +0 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/renderers/__init__.py +9 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/renderers/ansi.py +295 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/renderers/base.py +36 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/serve.py +64 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/startup/__init__.py +24 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/startup/report.py +174 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/startup/validator.py +167 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/tools/__init__.py +38 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/tools/ask_user.py +76 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/tools/extractors.py +154 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/tools/loaders.py +259 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/tools/wrappers.py +158 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/types.py +321 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/utils.py +209 -0
- kaboo_workflows-0.9.0/src/kaboo_workflows/wire.py +317 -0
- kaboo_workflows-0.9.0/tasks/README.md +152 -0
- kaboo_workflows-0.9.0/tasks/check.just +36 -0
- kaboo_workflows-0.9.0/tasks/clean.just +55 -0
- kaboo_workflows-0.9.0/tasks/commit.just +19 -0
- kaboo_workflows-0.9.0/tasks/docs.just +22 -0
- kaboo_workflows-0.9.0/tasks/format.just +13 -0
- kaboo_workflows-0.9.0/tasks/install.just +15 -0
- kaboo_workflows-0.9.0/tasks/release.just +39 -0
- kaboo_workflows-0.9.0/tasks/test.just +18 -0
- kaboo_workflows-0.9.0/tests/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/cli/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/cli/test_cli.py +52 -0
- kaboo_workflows-0.9.0/tests/cli/test_startup.py +42 -0
- kaboo_workflows-0.9.0/tests/conftest.py +52 -0
- kaboo_workflows-0.9.0/tests/contract/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/contract/shape_baseline.json +62 -0
- kaboo_workflows-0.9.0/tests/contract/test_llms.py +30 -0
- kaboo_workflows-0.9.0/tests/contract/test_public_api.py +90 -0
- kaboo_workflows-0.9.0/tests/contract/test_shape.py +49 -0
- kaboo_workflows-0.9.0/tests/e2e/__init__.py +9 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/delegate.yaml +38 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/delegate_2level.yaml +44 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/delegate_3level.yaml +58 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/delegate_graph.yaml +56 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/delegate_swarm.yaml +50 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/error_plain.yaml +12 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/error_swarm.yaml +36 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/graph.yaml +42 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/graph_graph.yaml +46 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/graph_swarm.yaml +46 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/history.yaml +31 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/interrupt.yaml +37 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/interrupt_graph.yaml +32 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/interrupt_parallel.yaml +18 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/interrupt_plain.yaml +17 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/interrupt_swarm.yaml +31 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/kitchen_sink.yaml +77 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/parallel_nested.yaml +49 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/plain.yaml +11 -0
- kaboo_workflows-0.9.0/tests/e2e/configs/swarm.yaml +36 -0
- kaboo_workflows-0.9.0/tests/e2e/harness.py +219 -0
- kaboo_workflows-0.9.0/tests/e2e/test_complex.py +136 -0
- kaboo_workflows-0.9.0/tests/e2e/test_compositions.py +198 -0
- kaboo_workflows-0.9.0/tests/e2e/test_cross_cutting.py +120 -0
- kaboo_workflows-0.9.0/tests/factories.py +81 -0
- kaboo_workflows-0.9.0/tests/fakes/__init__.py +15 -0
- kaboo_workflows-0.9.0/tests/fakes/scripted_model.py +201 -0
- kaboo_workflows-0.9.0/tests/fakes/strands.py +205 -0
- kaboo_workflows-0.9.0/tests/parse/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/parse/test_helpers.py +177 -0
- kaboo_workflows-0.9.0/tests/parse/test_interpolation.py +77 -0
- kaboo_workflows-0.9.0/tests/pipeline/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/pipeline/conftest.py +22 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/delegate.yaml +13 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/graph.yaml +17 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/minimal.yaml +4 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/multi_source_base.yaml +4 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/multi_source_extra.yaml +3 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/nested.yaml +21 -0
- kaboo_workflows-0.9.0/tests/pipeline/fixtures/swarm.yaml +12 -0
- kaboo_workflows-0.9.0/tests/pipeline/test_examples.py +58 -0
- kaboo_workflows-0.9.0/tests/pipeline/test_load.py +58 -0
- kaboo_workflows-0.9.0/tests/property/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/property/test_interpolation.py +44 -0
- kaboo_workflows-0.9.0/tests/property/test_merge.py +28 -0
- kaboo_workflows-0.9.0/tests/property/test_sanitize_keys.py +28 -0
- kaboo_workflows-0.9.0/tests/resolve/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/resolve/test_agents.py +73 -0
- kaboo_workflows-0.9.0/tests/resolve/test_delegation.py +31 -0
- kaboo_workflows-0.9.0/tests/resolve/test_history.py +127 -0
- kaboo_workflows-0.9.0/tests/resolve/test_hooks.py +50 -0
- kaboo_workflows-0.9.0/tests/resolve/test_import.py +41 -0
- kaboo_workflows-0.9.0/tests/resolve/test_mcp.py +19 -0
- kaboo_workflows-0.9.0/tests/resolve/test_models.py +31 -0
- kaboo_workflows-0.9.0/tests/resolve/test_multiagent_groups.py +221 -0
- kaboo_workflows-0.9.0/tests/resolve/test_orchestrations.py +100 -0
- kaboo_workflows-0.9.0/tests/resolve/test_session_manager.py +125 -0
- kaboo_workflows-0.9.0/tests/resolve/test_tools.py +87 -0
- kaboo_workflows-0.9.0/tests/runtime/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/runtime/test_consume_run.py +149 -0
- kaboo_workflows-0.9.0/tests/runtime/test_converters.py +131 -0
- kaboo_workflows-0.9.0/tests/runtime/test_event_publisher_callback.py +139 -0
- kaboo_workflows-0.9.0/tests/runtime/test_event_queue.py +78 -0
- kaboo_workflows-0.9.0/tests/runtime/test_event_stream.py +105 -0
- kaboo_workflows-0.9.0/tests/runtime/test_guards.py +135 -0
- kaboo_workflows-0.9.0/tests/runtime/test_history_hook.py +140 -0
- kaboo_workflows-0.9.0/tests/runtime/test_manifest.py +89 -0
- kaboo_workflows-0.9.0/tests/runtime/test_mcp_lifecycle.py +90 -0
- kaboo_workflows-0.9.0/tests/runtime/test_multiagent_adapter.py +206 -0
- kaboo_workflows-0.9.0/tests/runtime/test_renderers.py +97 -0
- kaboo_workflows-0.9.0/tests/runtime/test_result_extraction.py +96 -0
- kaboo_workflows-0.9.0/tests/runtime/test_stream_group_reactivation.py +98 -0
- kaboo_workflows-0.9.0/tests/runtime/test_transcript_balance.py +247 -0
- kaboo_workflows-0.9.0/tests/runtime/test_turn_id.py +56 -0
- kaboo_workflows-0.9.0/tests/schema/__init__.py +0 -0
- kaboo_workflows-0.9.0/tests/schema/test_planner.py +41 -0
- kaboo_workflows-0.9.0/tests/schema/test_references.py +101 -0
- kaboo_workflows-0.9.0/tests/schema/test_validation.py +95 -0
- kaboo_workflows-0.9.0/uv.lock +2507 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug in kaboo-workflows
|
|
3
|
+
title: "[BUG] "
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
assignees: []
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for taking the time to fill out this bug report for kaboo-workflows!
|
|
11
|
+
|
|
12
|
+
- type: checkboxes
|
|
13
|
+
id: checks
|
|
14
|
+
attributes:
|
|
15
|
+
label: Checks
|
|
16
|
+
options:
|
|
17
|
+
- label: I have updated to the latest version of kaboo-workflows
|
|
18
|
+
required: true
|
|
19
|
+
- label: I have checked the documentation and this is not expected behavior
|
|
20
|
+
required: true
|
|
21
|
+
- label: I have searched [./issues](./issues?q=) and there are no duplicates of my issue
|
|
22
|
+
required: true
|
|
23
|
+
|
|
24
|
+
- type: input
|
|
25
|
+
id: compose-version
|
|
26
|
+
attributes:
|
|
27
|
+
label: kaboo-workflows Version
|
|
28
|
+
description: Which version of kaboo-workflows are you using?
|
|
29
|
+
placeholder: e.g., 0.1.0
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
|
|
33
|
+
- type: input
|
|
34
|
+
id: strands-version
|
|
35
|
+
attributes:
|
|
36
|
+
label: strands-agents Version
|
|
37
|
+
description: Which version of strands-agents are you using?
|
|
38
|
+
placeholder: e.g., 1.32.0
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: input
|
|
43
|
+
id: python-version
|
|
44
|
+
attributes:
|
|
45
|
+
label: Python Version
|
|
46
|
+
description: Which version of Python are you using?
|
|
47
|
+
placeholder: e.g., 3.11.5
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
|
|
51
|
+
- type: input
|
|
52
|
+
id: os
|
|
53
|
+
attributes:
|
|
54
|
+
label: Operating System
|
|
55
|
+
description: Which operating system are you using?
|
|
56
|
+
placeholder: e.g., Ubuntu 22.04 / Windows 11 / macOS 14
|
|
57
|
+
validations:
|
|
58
|
+
required: true
|
|
59
|
+
|
|
60
|
+
- type: dropdown
|
|
61
|
+
id: installation-method
|
|
62
|
+
attributes:
|
|
63
|
+
label: Installation Method
|
|
64
|
+
description: How did you install kaboo-workflows?
|
|
65
|
+
options:
|
|
66
|
+
- pip
|
|
67
|
+
- uv
|
|
68
|
+
- git clone
|
|
69
|
+
- other
|
|
70
|
+
validations:
|
|
71
|
+
required: true
|
|
72
|
+
|
|
73
|
+
- type: textarea
|
|
74
|
+
id: config-yaml
|
|
75
|
+
attributes:
|
|
76
|
+
label: Relevant YAML Config
|
|
77
|
+
description: Paste the relevant portion of your `config.yaml` (remove any secrets)
|
|
78
|
+
render: yaml
|
|
79
|
+
|
|
80
|
+
- type: textarea
|
|
81
|
+
id: steps-to-reproduce
|
|
82
|
+
attributes:
|
|
83
|
+
label: Steps to Reproduce
|
|
84
|
+
description: Detailed steps to reproduce the behavior
|
|
85
|
+
placeholder: |
|
|
86
|
+
1. config.yaml and code snippet (minimal reproducible example)
|
|
87
|
+
2. Run the command...
|
|
88
|
+
3. See error...
|
|
89
|
+
validations:
|
|
90
|
+
required: true
|
|
91
|
+
|
|
92
|
+
- type: textarea
|
|
93
|
+
id: expected-behavior
|
|
94
|
+
attributes:
|
|
95
|
+
label: Expected Behavior
|
|
96
|
+
description: A clear description of what you expected to happen
|
|
97
|
+
validations:
|
|
98
|
+
required: true
|
|
99
|
+
|
|
100
|
+
- type: textarea
|
|
101
|
+
id: actual-behavior
|
|
102
|
+
attributes:
|
|
103
|
+
label: Actual Behavior
|
|
104
|
+
description: What actually happened — include full traceback if applicable
|
|
105
|
+
validations:
|
|
106
|
+
required: true
|
|
107
|
+
|
|
108
|
+
- type: textarea
|
|
109
|
+
id: additional-context
|
|
110
|
+
attributes:
|
|
111
|
+
label: Additional Context
|
|
112
|
+
description: Any other relevant information, logs, screenshots, etc.
|
|
113
|
+
|
|
114
|
+
- type: textarea
|
|
115
|
+
id: possible-solution
|
|
116
|
+
attributes:
|
|
117
|
+
label: Possible Solution
|
|
118
|
+
description: Optional — if you have suggestions on how to fix the bug
|
|
119
|
+
|
|
120
|
+
- type: input
|
|
121
|
+
id: related-issues
|
|
122
|
+
attributes:
|
|
123
|
+
label: Related Issues
|
|
124
|
+
description: Optional — link to related issues if applicable
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: kaboo-workflows Discussions
|
|
4
|
+
url: https://github.com/gl-pgege/kaboo-workflows/discussions
|
|
5
|
+
about: Please ask and answer questions here
|
|
6
|
+
- name: kaboo-workflows Documentation
|
|
7
|
+
url: https://gl-pgege.github.io/kaboo-workflows/
|
|
8
|
+
about: Visit the documentation for help
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest a new feature or enhancement for kaboo-workflows
|
|
3
|
+
title: "[FEATURE] "
|
|
4
|
+
labels: ["enhancement", "triage"]
|
|
5
|
+
assignees: []
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for suggesting a new feature for kaboo-workflows!
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: problem-statement
|
|
14
|
+
attributes:
|
|
15
|
+
label: Problem Statement
|
|
16
|
+
description: Describe the problem you're trying to solve. What is currently difficult or impossible to do?
|
|
17
|
+
placeholder: I would like kaboo-workflows to...
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: proposed-solution
|
|
23
|
+
attributes:
|
|
24
|
+
label: Proposed Solution
|
|
25
|
+
description: Optional — describe your proposed solution. How would this feature work? Include example YAML or Python if helpful.
|
|
26
|
+
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: use-case
|
|
29
|
+
attributes:
|
|
30
|
+
label: Use Case
|
|
31
|
+
description: Provide specific use cases for the feature. How would people use it?
|
|
32
|
+
placeholder: This would help with...
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: alternatives
|
|
38
|
+
attributes:
|
|
39
|
+
label: Alternatives Considered
|
|
40
|
+
description: Optional — have you considered alternative approaches? What are their pros and cons?
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: additional-context
|
|
44
|
+
attributes:
|
|
45
|
+
label: Additional Context
|
|
46
|
+
description: Any other context, screenshots, code examples, or references that might help understand the request.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
|
|
3
|
+
<!-- Provide a detailed description of the changes in this PR -->
|
|
4
|
+
|
|
5
|
+
## Related Issues
|
|
6
|
+
|
|
7
|
+
<!-- Link to related issues using #issue-number format -->
|
|
8
|
+
|
|
9
|
+
## Type of Change
|
|
10
|
+
|
|
11
|
+
<!-- Choose one and delete the rest -->
|
|
12
|
+
|
|
13
|
+
- Bug fix
|
|
14
|
+
- New feature
|
|
15
|
+
- Breaking change
|
|
16
|
+
- Documentation update
|
|
17
|
+
- Other (please describe):
|
|
18
|
+
|
|
19
|
+
## YAML / API Impact
|
|
20
|
+
|
|
21
|
+
<!-- Does this change affect the config schema or the public Python API?
|
|
22
|
+
If yes, describe what changes and whether it's backwards-compatible. -->
|
|
23
|
+
|
|
24
|
+
## Testing
|
|
25
|
+
|
|
26
|
+
How have you tested the change?
|
|
27
|
+
|
|
28
|
+
- [ ] I ran `uv run just check` (lint + type check)
|
|
29
|
+
- [ ] I ran `uv run just test` for overall testing
|
|
30
|
+
- [ ] I ran `uv run just test-docs` and `uv run mkdocs build --strict`
|
|
31
|
+
- [ ] I added or updated tests that prove my fix is effective or my feature works
|
|
32
|
+
- [ ] New public symbols have a docstring + an autodoc page (`docs/api/`)
|
|
33
|
+
- [ ] I verified existing examples in `examples/` still work
|
|
34
|
+
- [ ] I regenerated `llms.txt` / `llms-full.txt` if docs changed (`uv run just docs-llms`)
|
|
35
|
+
|
|
36
|
+
## Checklist
|
|
37
|
+
|
|
38
|
+
- [ ] I have read the [CONTRIBUTING](CONTRIBUTING.md) document
|
|
39
|
+
- [ ] I have updated the documentation accordingly
|
|
40
|
+
- [ ] My changes generate no new warnings
|
|
41
|
+
- [ ] Any dependent changes have been merged and published
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "daily"
|
|
7
|
+
open-pull-requests-limit: 100
|
|
8
|
+
commit-message:
|
|
9
|
+
prefix: ci
|
|
10
|
+
groups:
|
|
11
|
+
dev-dependencies:
|
|
12
|
+
patterns:
|
|
13
|
+
- "pytest"
|
|
14
|
+
- package-ecosystem: "github-actions"
|
|
15
|
+
directory: "/"
|
|
16
|
+
schedule:
|
|
17
|
+
interval: "daily"
|
|
18
|
+
open-pull-requests-limit: 100
|
|
19
|
+
commit-message:
|
|
20
|
+
prefix: ci
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Continuous Integration — runs on every push and pull request.
|
|
2
|
+
|
|
3
|
+
name: CI
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: ["main"]
|
|
10
|
+
workflow_call:
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ci-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
# ── Quality checks (format · lint · type · security) ──────────────────────
|
|
21
|
+
check:
|
|
22
|
+
name: Quality checks
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v7
|
|
28
|
+
|
|
29
|
+
- uses: astral-sh/setup-uv@v8.2.0
|
|
30
|
+
with:
|
|
31
|
+
enable-cache: true
|
|
32
|
+
|
|
33
|
+
- name: Install dev deps
|
|
34
|
+
run: uv sync --all-groups --all-extras
|
|
35
|
+
|
|
36
|
+
- name: Ruff — format check
|
|
37
|
+
run: uv run just check-format-ci
|
|
38
|
+
|
|
39
|
+
- name: Ruff — lint
|
|
40
|
+
run: uv run just check-code
|
|
41
|
+
|
|
42
|
+
- name: ty — type check
|
|
43
|
+
run: uv run just check-type
|
|
44
|
+
|
|
45
|
+
- name: Bandit — security scan
|
|
46
|
+
run: uv run just check-security
|
|
47
|
+
|
|
48
|
+
# ── Tests ──────────────────────────────────────────────────────────────────
|
|
49
|
+
test:
|
|
50
|
+
name: Tests (Python ${{ matrix.python-version }}, ${{ matrix.os }})
|
|
51
|
+
runs-on: ${{ matrix.os }}
|
|
52
|
+
permissions:
|
|
53
|
+
contents: read
|
|
54
|
+
strategy:
|
|
55
|
+
fail-fast: false
|
|
56
|
+
matrix:
|
|
57
|
+
os: [ubuntu-latest, windows-latest]
|
|
58
|
+
python-version: ["3.12", "3.13"]
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@v7
|
|
61
|
+
|
|
62
|
+
- uses: astral-sh/setup-uv@v8.2.0
|
|
63
|
+
with:
|
|
64
|
+
enable-cache: true
|
|
65
|
+
python-version: ${{ matrix.python-version }}
|
|
66
|
+
|
|
67
|
+
- name: Install dev deps
|
|
68
|
+
run: uv sync --all-groups --all-extras
|
|
69
|
+
|
|
70
|
+
- name: pytest with coverage
|
|
71
|
+
run: uv run just test
|
|
72
|
+
|
|
73
|
+
# ── Docs (proven snippets + strict site build) ──────────────────────────────
|
|
74
|
+
docs:
|
|
75
|
+
name: Docs
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
permissions:
|
|
78
|
+
contents: read
|
|
79
|
+
steps:
|
|
80
|
+
- uses: actions/checkout@v7
|
|
81
|
+
|
|
82
|
+
- uses: astral-sh/setup-uv@v8.2.0
|
|
83
|
+
with:
|
|
84
|
+
enable-cache: true
|
|
85
|
+
|
|
86
|
+
- name: Install deps (dev + docs)
|
|
87
|
+
run: uv sync --all-groups --all-extras
|
|
88
|
+
|
|
89
|
+
- name: Execute doc snippets
|
|
90
|
+
run: uv run just test-docs
|
|
91
|
+
|
|
92
|
+
- name: Build docs (strict) + render sanity check
|
|
93
|
+
run: uv run just docs-check-render
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Build and deploy the MkDocs Material site to GitHub Pages.
|
|
2
|
+
#
|
|
3
|
+
# One-time manual step (a maintainer must do this once; the workflow cannot
|
|
4
|
+
# self-enable Pages): repo Settings -> Pages -> Source = "GitHub Actions".
|
|
5
|
+
name: Pages
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: ["main"]
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
pages: write
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: pages
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
build:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v7
|
|
26
|
+
|
|
27
|
+
- uses: astral-sh/setup-uv@v8.2.0
|
|
28
|
+
with:
|
|
29
|
+
enable-cache: true
|
|
30
|
+
|
|
31
|
+
- name: Install docs dependencies
|
|
32
|
+
run: uv sync --group docs
|
|
33
|
+
|
|
34
|
+
- name: Build (strict)
|
|
35
|
+
run: uv run mkdocs build --strict
|
|
36
|
+
|
|
37
|
+
- uses: actions/upload-pages-artifact@v3
|
|
38
|
+
with:
|
|
39
|
+
path: site
|
|
40
|
+
|
|
41
|
+
deploy:
|
|
42
|
+
needs: build
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
environment:
|
|
45
|
+
name: github-pages
|
|
46
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
47
|
+
steps:
|
|
48
|
+
- id: deployment
|
|
49
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Publish to PyPI — triggered by pushing a version tag (v*.*.*).
|
|
2
|
+
# Uses Trusted Publishing (OIDC — no API tokens required).
|
|
3
|
+
#
|
|
4
|
+
# One-time setup on PyPI:
|
|
5
|
+
# 1. Create a project for "kaboo-workflows" at https://pypi.org/manage/account/publishing/
|
|
6
|
+
# 2. Configure Trusted Publisher:
|
|
7
|
+
# - Owner: gl-pgege
|
|
8
|
+
# - Repository: kaboo-workflows
|
|
9
|
+
# - Workflow: publish.yml
|
|
10
|
+
# - Environment: release
|
|
11
|
+
|
|
12
|
+
name: Publish
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
push:
|
|
16
|
+
tags:
|
|
17
|
+
- "v[0-9]+.[0-9]+.[0-9]+"
|
|
18
|
+
- "v[0-9]+.[0-9]+.[0-9]+.post*"
|
|
19
|
+
- "v[0-9]+.[0-9]+.[0-9]+rc*"
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
# ── Gate: run CI checks before publishing ─────────────────────────────────
|
|
26
|
+
ci:
|
|
27
|
+
uses: ./.github/workflows/ci.yml
|
|
28
|
+
permissions:
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
31
|
+
# ── Build distribution package ────────────────────────────────────────────
|
|
32
|
+
# Pure Python package — one wheel (py3-none-any) runs on every OS and arch.
|
|
33
|
+
# No need for cibuildwheel or a platform matrix.
|
|
34
|
+
build:
|
|
35
|
+
name: Build
|
|
36
|
+
needs: ci
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
permissions:
|
|
39
|
+
contents: read
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v7
|
|
42
|
+
|
|
43
|
+
- uses: astral-sh/setup-uv@v8.2.0
|
|
44
|
+
with:
|
|
45
|
+
enable-cache: true
|
|
46
|
+
|
|
47
|
+
- name: Build wheel + sdist
|
|
48
|
+
run: uv build --out-dir dist/
|
|
49
|
+
|
|
50
|
+
- name: Upload build artifacts
|
|
51
|
+
uses: actions/upload-artifact@v7
|
|
52
|
+
with:
|
|
53
|
+
name: dist
|
|
54
|
+
path: dist/
|
|
55
|
+
if-no-files-found: error
|
|
56
|
+
|
|
57
|
+
# ── Publish to PyPI ───────────────────────────────────────────────────────
|
|
58
|
+
publish:
|
|
59
|
+
name: Publish to PyPI
|
|
60
|
+
needs: build
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
environment: release
|
|
63
|
+
permissions:
|
|
64
|
+
id-token: write
|
|
65
|
+
steps:
|
|
66
|
+
- name: Download build artifacts
|
|
67
|
+
uses: actions/download-artifact@v8
|
|
68
|
+
with:
|
|
69
|
+
name: dist
|
|
70
|
+
path: dist/
|
|
71
|
+
|
|
72
|
+
- name: Publish to PyPI
|
|
73
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
74
|
+
with:
|
|
75
|
+
packages-dir: dist/
|
|
76
|
+
|
|
77
|
+
# ── Create GitHub Release with CHANGELOG notes ────────────────────────────
|
|
78
|
+
github-release:
|
|
79
|
+
name: GitHub Release
|
|
80
|
+
needs: publish
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
permissions:
|
|
83
|
+
contents: write
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@v7
|
|
86
|
+
with:
|
|
87
|
+
fetch-depth: 0
|
|
88
|
+
|
|
89
|
+
- uses: actions/setup-python@v6
|
|
90
|
+
with:
|
|
91
|
+
python-version: "3.x"
|
|
92
|
+
|
|
93
|
+
- name: Extract changelog for this version
|
|
94
|
+
id: changelog
|
|
95
|
+
run: |
|
|
96
|
+
VERSION="${GITHUB_REF_NAME#v}"
|
|
97
|
+
NOTES=$(python -c "
|
|
98
|
+
import re, pathlib
|
|
99
|
+
text = pathlib.Path('CHANGELOG.md').read_text()
|
|
100
|
+
match = re.search(
|
|
101
|
+
r'(?:^|\n)(## v?' + re.escape('$VERSION') + r'[^\n]*\n.*?)(?=\n## |\Z)',
|
|
102
|
+
text, re.DOTALL
|
|
103
|
+
)
|
|
104
|
+
print(match.group(1).strip() if match else 'See CHANGELOG.md for details.')
|
|
105
|
+
" VERSION="$VERSION")
|
|
106
|
+
{
|
|
107
|
+
echo 'notes<<EOF'
|
|
108
|
+
echo "$NOTES"
|
|
109
|
+
echo EOF
|
|
110
|
+
} >> "$GITHUB_OUTPUT"
|
|
111
|
+
|
|
112
|
+
- name: Download all artifacts
|
|
113
|
+
uses: actions/download-artifact@v8
|
|
114
|
+
with:
|
|
115
|
+
path: dist-all/
|
|
116
|
+
merge-multiple: true
|
|
117
|
+
|
|
118
|
+
- name: Create GitHub Release
|
|
119
|
+
uses: softprops/action-gh-release@v3
|
|
120
|
+
with:
|
|
121
|
+
body: ${{ steps.changelog.outputs.notes }}
|
|
122
|
+
files: dist-all/**/*
|
|
123
|
+
prerelease: ${{ contains(github.ref_name, 'rc') || contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
.env
|
|
2
|
+
.claude
|
|
3
|
+
.kiro/specs
|
|
4
|
+
.sessions
|
|
5
|
+
.converter
|
|
6
|
+
.hypothesis
|
|
7
|
+
|
|
8
|
+
# Ignore Python cache and compiled files
|
|
9
|
+
__pycache__/
|
|
10
|
+
*.py[cod]
|
|
11
|
+
*.pyo
|
|
12
|
+
*.pyd
|
|
13
|
+
.ruff_cache
|
|
14
|
+
|
|
15
|
+
# Ignore virtual environments
|
|
16
|
+
venv/
|
|
17
|
+
env/
|
|
18
|
+
.venv/
|
|
19
|
+
.env/
|
|
20
|
+
|
|
21
|
+
# Ignore Jupyter Notebook checkpoints
|
|
22
|
+
.ipynb_checkpoints/
|
|
23
|
+
|
|
24
|
+
# Existing rules
|
|
25
|
+
python/*
|
|
26
|
+
.req.txt
|
|
27
|
+
*.egg-info/
|
|
28
|
+
dist/
|
|
29
|
+
build/
|
|
30
|
+
requirements.txt
|
|
31
|
+
*.log
|
|
32
|
+
.logs/
|
|
33
|
+
|
|
34
|
+
# Pytest cache
|
|
35
|
+
.pytest_cache/
|
|
36
|
+
.coverage*
|
|
37
|
+
htmlcov/
|
|
38
|
+
.tox/
|
|
39
|
+
.nox/
|
|
40
|
+
|
|
41
|
+
# VS Code settings
|
|
42
|
+
.vscode/
|
|
43
|
+
|
|
44
|
+
# Visual Studio files
|
|
45
|
+
*.user
|
|
46
|
+
*.suo
|
|
47
|
+
*.userosscache
|
|
48
|
+
*.sln.docstates
|
|
49
|
+
|
|
50
|
+
# JetBrains IDEs (PyCharm, IntelliJ, etc.)
|
|
51
|
+
.idea/
|
|
52
|
+
*.iml
|
|
53
|
+
|
|
54
|
+
# Sublime Text
|
|
55
|
+
*.sublime-workspace
|
|
56
|
+
*.sublime-project
|
|
57
|
+
|
|
58
|
+
# MacOS and Windows system files
|
|
59
|
+
.DS_Store
|
|
60
|
+
Thumbs.db
|
|
61
|
+
|
|
62
|
+
# MkDocs site build output
|
|
63
|
+
/site/
|