simplicio-cli 0.9.6__tar.gz → 0.10.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.
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/PKG-INFO +12 -12
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/README.md +10 -11
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/pyproject.toml +12 -12
- simplicio_cli-0.10.0/simplicio/__init__.py +5 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/_cache.py +13 -1
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/bench.py +21 -8
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/cli.py +66 -61
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/_shared.py +5 -1
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/run.py +2 -1
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/test_run.py +6 -2
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/dod.py +39 -11
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/ecosystem.py +15 -8
- simplicio_cli-0.10.0/simplicio/mapper_api.py +34 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/mechanical_edit.py +4 -4
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/memory_store.py +2 -1
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/observability.py +54 -27
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/pipeline.py +5 -6
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/precedent.py +1 -1
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/providers.py +66 -105
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/runtime_env.py +117 -58
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/cli.py +2 -1
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/skill_router.py +11 -6
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/token_primitives.py +4 -2
- simplicio_cli-0.10.0/simplicio/utils/fs.py +27 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/PKG-INFO +12 -12
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/SOURCES.txt +2 -2
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/requires.txt +1 -1
- simplicio_cli-0.9.6/simplicio/__init__.py +0 -1
- simplicio_cli-0.9.6/simplicio/commands/serve.py +0 -22
- simplicio_cli-0.9.6/simplicio/mcp_server.py +0 -261
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/LICENSE +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/setup.cfg +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/adaptive.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/cache.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/cache_cli.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/bench.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/cache.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/claims.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/detect.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/doctor.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/edit.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/env_export.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/file.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/file_read.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/gate.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/index.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/init.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/inspect.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/memory.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/nest.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/runtime.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/score_skill.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/smoke.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/status.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/task.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/test.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/token.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/detect.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/doctor.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/hardware.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/init.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/intent.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/local_models.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/mapper.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/orchestrator/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/orchestrator/cost_governor.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/orchestrator/feature.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/pipeline_fixers.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/prompt.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/py.typed +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/runtime_bridge.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/runtime_contracts.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/_pipeline_adapter.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/go_gin.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/markdown_document.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/php_laravel.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_cst.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_fastapi.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_orm.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_pydantic.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_pytest.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/registry.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/rust_axum.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/types.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/executor.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/plan_schema.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/planner.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/recipes.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/skill_opt.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/stack_registry.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/sprint_loader.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/SKILL.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/simplicio_prompt.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/toon_codec.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/__init__.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/cache.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/http_client.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/serialization.py +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/dependency_links.txt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/entry_points.txt +0 -0
- {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/top_level.txt +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simplicio-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0
|
|
4
4
|
Summary: Portable task-to-code pipeline that works with any LLM. Turn a one-line task into a verified code change — diff + test + verify loop. +55 pts on a 156-check benchmark, 21% faster, ~same tokens.
|
|
5
5
|
Author-email: Wesley Simplicio <wesleybob4@gmail.com>
|
|
6
6
|
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/wesleysimplicio/simplicio-cli
|
|
8
|
-
Project-URL: Repository, https://github.com/wesleysimplicio/simplicio-cli
|
|
9
|
-
Project-URL: Issues, https://github.com/wesleysimplicio/simplicio-cli/issues
|
|
10
|
-
Project-URL: Changelog, https://github.com/wesleysimplicio/simplicio-cli/releases
|
|
7
|
+
Project-URL: Homepage, https://github.com/wesleysimplicio/simplicio-dev-cli
|
|
8
|
+
Project-URL: Repository, https://github.com/wesleysimplicio/simplicio-dev-cli
|
|
9
|
+
Project-URL: Issues, https://github.com/wesleysimplicio/simplicio-dev-cli/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/wesleysimplicio/simplicio-dev-cli/releases
|
|
11
11
|
Keywords: llm,ai,agent,code-generation,prompt-engineering,openrouter,openai,anthropic,claude,developer-tools,cli,rag,embeddings,verify-loop,task-automation
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Environment :: Console
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
23
|
Classifier: Topic :: Software Development
|
|
23
24
|
Classifier: Topic :: Software Development :: Code Generators
|
|
24
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
@@ -27,7 +28,7 @@ Requires-Python: >=3.10
|
|
|
27
28
|
Description-Content-Type: text/markdown
|
|
28
29
|
License-File: LICENSE
|
|
29
30
|
Requires-Dist: numpy>=2.1.0
|
|
30
|
-
Requires-Dist: simplicio-mapper>=0.
|
|
31
|
+
Requires-Dist: simplicio-mapper>=0.18.0
|
|
31
32
|
Requires-Dist: simplicio-prompt>=1.14.1
|
|
32
33
|
Requires-Dist: httpx>=0.28.1
|
|
33
34
|
Requires-Dist: orjson>=3.11.9
|
|
@@ -99,6 +100,10 @@ simplicio-py detect "hide the Delete button for non-admins"
|
|
|
99
100
|
simplicio-py task "hide the Delete button for non-admins"
|
|
100
101
|
```
|
|
101
102
|
|
|
103
|
+
Auto-upgrade is now opt-in: set `SIMPLICIO_AUTO_UPGRADE=1` for session-start upgrades, or run `simplicio-py doctor --upgrade` explicitly.
|
|
104
|
+
Python consumers can expose the bundled mapper dependency directly with
|
|
105
|
+
`from simplicio import mapper_module, mapper_version` or `import simplicio.mapper_api`.
|
|
106
|
+
|
|
102
107
|
## What it does
|
|
103
108
|
|
|
104
109
|
- Classifies the task before execution so small fixes stay small and sprint-scale work becomes a plan.
|
|
@@ -472,12 +477,7 @@ recorded to a separate append-only ledger,
|
|
|
472
477
|
`.simplicio/ledger/savings-events.jsonl` (`simplicio.savings-event/v1`), via
|
|
473
478
|
`simplicio.observability.record_savings_event()`.
|
|
474
479
|
|
|
475
|
-
####
|
|
476
|
-
|
|
477
|
-
`simplicio-dev-cli serve --mcp` runs this CLI as an MCP stdio server
|
|
478
|
-
(stdlib-only JSON-RPC 2.0, no extra dependency), exposing `dev_cli_edit`,
|
|
479
|
-
`dev_cli_validate`, and `dev_cli_memory` as tools any MCP client (Claude
|
|
480
|
-
Code, Codex, Cursor, VS Code) can call directly.
|
|
480
|
+
#### Cross-vendor memory
|
|
481
481
|
|
|
482
482
|
`simplicio-dev-cli memory init|store|recall` is a markdown + git store under
|
|
483
483
|
`~/.simplicio/memory/` (override with `SIMPLICIO_MEMORY_DIR`) for handing
|
|
@@ -34,11 +34,15 @@ The new first screen is the doorway; the restored guide below is the workshop. T
|
|
|
34
34
|
|
|
35
35
|
## Quick Start
|
|
36
36
|
|
|
37
|
-
```bash
|
|
38
|
-
pip install -U simplicio-cli
|
|
39
|
-
simplicio-py detect "hide the Delete button for non-admins"
|
|
40
|
-
simplicio-py task "hide the Delete button for non-admins"
|
|
41
|
-
```
|
|
37
|
+
```bash
|
|
38
|
+
pip install -U simplicio-cli
|
|
39
|
+
simplicio-py detect "hide the Delete button for non-admins"
|
|
40
|
+
simplicio-py task "hide the Delete button for non-admins"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Auto-upgrade is now opt-in: set `SIMPLICIO_AUTO_UPGRADE=1` for session-start upgrades, or run `simplicio-py doctor --upgrade` explicitly.
|
|
44
|
+
Python consumers can expose the bundled mapper dependency directly with
|
|
45
|
+
`from simplicio import mapper_module, mapper_version` or `import simplicio.mapper_api`.
|
|
42
46
|
|
|
43
47
|
## What it does
|
|
44
48
|
|
|
@@ -413,12 +417,7 @@ recorded to a separate append-only ledger,
|
|
|
413
417
|
`.simplicio/ledger/savings-events.jsonl` (`simplicio.savings-event/v1`), via
|
|
414
418
|
`simplicio.observability.record_savings_event()`.
|
|
415
419
|
|
|
416
|
-
####
|
|
417
|
-
|
|
418
|
-
`simplicio-dev-cli serve --mcp` runs this CLI as an MCP stdio server
|
|
419
|
-
(stdlib-only JSON-RPC 2.0, no extra dependency), exposing `dev_cli_edit`,
|
|
420
|
-
`dev_cli_validate`, and `dev_cli_memory` as tools any MCP client (Claude
|
|
421
|
-
Code, Codex, Cursor, VS Code) can call directly.
|
|
420
|
+
#### Cross-vendor memory
|
|
422
421
|
|
|
423
422
|
`simplicio-dev-cli memory init|store|recall` is a markdown + git store under
|
|
424
423
|
`~/.simplicio/memory/` (override with `SIMPLICIO_MEMORY_DIR`) for handing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "simplicio-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.10.0"
|
|
4
4
|
description = "Portable task-to-code pipeline that works with any LLM. Turn a one-line task into a verified code change — diff + test + verify loop. +55 pts on a 156-check benchmark, 21% faster, ~same tokens."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
@@ -33,7 +33,8 @@ classifiers = [
|
|
|
33
33
|
"Programming Language :: Python :: 3 :: Only",
|
|
34
34
|
"Programming Language :: Python :: 3.10",
|
|
35
35
|
"Programming Language :: Python :: 3.11",
|
|
36
|
-
"Programming Language :: Python :: 3.12",
|
|
36
|
+
"Programming Language :: Python :: 3.12",
|
|
37
|
+
"Programming Language :: Python :: 3.13",
|
|
37
38
|
"Topic :: Software Development",
|
|
38
39
|
"Topic :: Software Development :: Code Generators",
|
|
39
40
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
@@ -52,7 +53,7 @@ classifiers = [
|
|
|
52
53
|
# (generated, `--check`-able) for the full graph and #99 for the audit.
|
|
53
54
|
dependencies = [
|
|
54
55
|
"numpy>=2.1.0",
|
|
55
|
-
"simplicio-mapper>=0.
|
|
56
|
+
"simplicio-mapper>=0.18.0",
|
|
56
57
|
"simplicio-prompt>=1.14.1",
|
|
57
58
|
"httpx>=0.28.1",
|
|
58
59
|
"orjson>=3.11.9",
|
|
@@ -88,10 +89,10 @@ test = ["pytest>=8", "tomli>=2.0.1; python_version < '3.11'"]
|
|
|
88
89
|
dev = ["simplicio-cli[test]", "ruff>=0.15.8", "mypy>=1.19.1"]
|
|
89
90
|
|
|
90
91
|
[project.urls]
|
|
91
|
-
Homepage = "https://github.com/wesleysimplicio/simplicio-cli"
|
|
92
|
-
Repository = "https://github.com/wesleysimplicio/simplicio-cli"
|
|
93
|
-
Issues = "https://github.com/wesleysimplicio/simplicio-cli/issues"
|
|
94
|
-
Changelog = "https://github.com/wesleysimplicio/simplicio-cli/releases"
|
|
92
|
+
Homepage = "https://github.com/wesleysimplicio/simplicio-dev-cli"
|
|
93
|
+
Repository = "https://github.com/wesleysimplicio/simplicio-dev-cli"
|
|
94
|
+
Issues = "https://github.com/wesleysimplicio/simplicio-dev-cli/issues"
|
|
95
|
+
Changelog = "https://github.com/wesleysimplicio/simplicio-dev-cli/releases"
|
|
95
96
|
|
|
96
97
|
[project.scripts]
|
|
97
98
|
simplicio-cli = "simplicio.cli:main"
|
|
@@ -145,7 +146,7 @@ extend-exclude = [
|
|
|
145
146
|
[tool.ruff.lint]
|
|
146
147
|
# E/F = pyflakes+pycodestyle core, I = isort, UP = pyupgrade, B = bugbear,
|
|
147
148
|
# T20 = flake8-print (issue #106 — blocks new print() regressions in
|
|
148
|
-
# library
|
|
149
|
+
# library code; see per-file-ignores below for the documented
|
|
149
150
|
# CLI-handler exception, where stdout IS the subcommand's intended output).
|
|
150
151
|
select = ["E", "F", "I", "UP", "B", "T20"]
|
|
151
152
|
# B008: PLAN_JSON-style default args show up in a few argparse builders;
|
|
@@ -157,8 +158,8 @@ ignore = []
|
|
|
157
158
|
"tests/**/*.py" = ["E501", "T201"]
|
|
158
159
|
# CLI-handler exception (#106): stdout IS the intended output of these
|
|
159
160
|
# subcommand entry points (JSON payloads, tables, human summaries), so
|
|
160
|
-
# print() is the correct tool here — never in
|
|
161
|
-
#
|
|
161
|
+
# print() is the correct tool here — never in providers.py, pipeline.py,
|
|
162
|
+
# mapper.py, or any other library module, which
|
|
162
163
|
# stay covered by the bare T201 rule above with zero suppressions.
|
|
163
164
|
"simplicio/cli.py" = ["T201"]
|
|
164
165
|
"simplicio/doctor.py" = ["T201"]
|
|
@@ -178,7 +179,7 @@ quote-style = "double"
|
|
|
178
179
|
indent-style = "space"
|
|
179
180
|
|
|
180
181
|
[tool.mypy]
|
|
181
|
-
python_version = "3.
|
|
182
|
+
python_version = "3.13"
|
|
182
183
|
files = ["simplicio"]
|
|
183
184
|
# Baseline rigor (#102 AC): permissive on missing third-party stubs, but
|
|
184
185
|
# real within the package. Tighten per-module (`[[tool.mypy.overrides]]`)
|
|
@@ -207,7 +208,6 @@ module = [
|
|
|
207
208
|
"simplicio.commands.test_run",
|
|
208
209
|
"simplicio.cache_cli",
|
|
209
210
|
"simplicio.precedent",
|
|
210
|
-
"simplicio.mcp_server",
|
|
211
211
|
"simplicio.scratch.executor",
|
|
212
212
|
"simplicio.orchestrator.feature",
|
|
213
213
|
"simplicio.scratch.cli",
|
|
@@ -30,6 +30,16 @@ def _env_float(name: str, default: float) -> float:
|
|
|
30
30
|
return default
|
|
31
31
|
|
|
32
32
|
|
|
33
|
+
def _env_int(name: str, default: int) -> int:
|
|
34
|
+
raw = os.environ.get(name)
|
|
35
|
+
if raw is None or not raw.strip():
|
|
36
|
+
return default
|
|
37
|
+
try:
|
|
38
|
+
return int(raw)
|
|
39
|
+
except ValueError:
|
|
40
|
+
return default
|
|
41
|
+
|
|
42
|
+
|
|
33
43
|
def _cache_root() -> Path:
|
|
34
44
|
override = os.environ.get("SIMPLICIO_CACHE_DIR")
|
|
35
45
|
if override:
|
|
@@ -153,7 +163,9 @@ class CompletionCache:
|
|
|
153
163
|
if os.path.exists(tmp_name):
|
|
154
164
|
self._safe_unlink(Path(tmp_name))
|
|
155
165
|
self.puts += 1
|
|
156
|
-
|
|
166
|
+
evict_every = max(1, _env_int("SIMPLICIO_CACHE_EVICT_EVERY", 16))
|
|
167
|
+
if self.puts == 1 or self.puts % evict_every == 0:
|
|
168
|
+
self._evict_if_needed()
|
|
157
169
|
|
|
158
170
|
def clear(self) -> int:
|
|
159
171
|
n = self.stats()["entries"]
|
|
@@ -14,6 +14,7 @@ import json
|
|
|
14
14
|
import os
|
|
15
15
|
import subprocess
|
|
16
16
|
import time
|
|
17
|
+
from pathlib import Path
|
|
17
18
|
|
|
18
19
|
from .observability import estimate_tokens, log_run
|
|
19
20
|
from .prompt import build_prompt
|
|
@@ -21,15 +22,15 @@ from .providers import generate
|
|
|
21
22
|
from .runtime_env import wrap_project_command
|
|
22
23
|
|
|
23
24
|
|
|
24
|
-
def _test(output, root, test_cmd):
|
|
25
|
+
def _test(output: str, root: str, test_cmd: str) -> bool:
|
|
25
26
|
os.makedirs(os.path.join(root, ".simplicio"), exist_ok=True)
|
|
26
|
-
|
|
27
|
+
Path(root, ".simplicio", "bench_out.txt").write_text(output or "", encoding="utf-8")
|
|
27
28
|
test_cmd = wrap_project_command(root, test_cmd)
|
|
28
29
|
p = subprocess.run(test_cmd, shell=True, cwd=root, capture_output=True, text=True)
|
|
29
30
|
return p.returncode == 0
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
def _baseline(case, root):
|
|
33
|
+
def _baseline(case: dict[str, str], root: str) -> str:
|
|
33
34
|
# baseline: raw goal, zero built context
|
|
34
35
|
prompt = case["goal"]
|
|
35
36
|
out = generate(prompt)
|
|
@@ -45,7 +46,7 @@ def _baseline(case, root):
|
|
|
45
46
|
return out
|
|
46
47
|
|
|
47
48
|
|
|
48
|
-
def _pipeline(case, root, stack):
|
|
49
|
+
def _pipeline(case: dict[str, str], root: str, stack: str) -> str:
|
|
49
50
|
prompt = build_prompt(
|
|
50
51
|
root,
|
|
51
52
|
stack,
|
|
@@ -67,9 +68,19 @@ def _pipeline(case, root, stack):
|
|
|
67
68
|
return out
|
|
68
69
|
|
|
69
70
|
|
|
70
|
-
def run_bench(root, stack, cases_path):
|
|
71
|
-
|
|
71
|
+
def run_bench(root: str, stack: str, cases_path: str) -> int:
|
|
72
|
+
try:
|
|
73
|
+
cases = json.loads(Path(cases_path).read_text(encoding="utf-8"))
|
|
74
|
+
except (OSError, ValueError) as exc:
|
|
75
|
+
print(f"simplicio-py: error: cannot read benchmark cases: {exc}")
|
|
76
|
+
return 1
|
|
77
|
+
if not isinstance(cases, list):
|
|
78
|
+
print("simplicio-py: error: benchmark cases must be a JSON list")
|
|
79
|
+
return 1
|
|
72
80
|
rows, n = [], len(cases)
|
|
81
|
+
if n == 0:
|
|
82
|
+
print("simplicio-py: error: benchmark cases list is empty")
|
|
83
|
+
return 1
|
|
73
84
|
hits = {"without": 0, "with": 0}
|
|
74
85
|
hallucination_flags = {"without": 0, "with": 0}
|
|
75
86
|
for c in cases:
|
|
@@ -97,10 +108,12 @@ def run_bench(root, stack, cases_path):
|
|
|
97
108
|
)
|
|
98
109
|
out = os.path.join(root, "bench", "results.md")
|
|
99
110
|
os.makedirs(os.path.dirname(out), exist_ok=True)
|
|
100
|
-
|
|
111
|
+
Path(out).write_text(
|
|
101
112
|
f"# Benchmark (generated by `simplicio-py bench`)\n\n"
|
|
102
113
|
f"Provider: {os.environ.get('SIMPLICIO_PROVIDER', 'claude')} · "
|
|
103
|
-
f"cases: {n} · date: {time.strftime('%Y-%m-%d')}\n\n{table}\n"
|
|
114
|
+
f"cases: {n} · date: {time.strftime('%Y-%m-%d')}\n\n{table}\n",
|
|
115
|
+
encoding="utf-8",
|
|
104
116
|
)
|
|
105
117
|
print(table)
|
|
106
118
|
print(f"\n-> {out}")
|
|
119
|
+
return 0
|
|
@@ -55,23 +55,28 @@ def _dispatch_nested(argv: list[str]) -> int | None:
|
|
|
55
55
|
parsing (unchanged by issue #103's cli.py cleanup)."""
|
|
56
56
|
from .commands._shared import parse_rust_flags, try_route_via_simplicio
|
|
57
57
|
|
|
58
|
+
def wants_help(args: list[str]) -> bool:
|
|
59
|
+
return any(arg in {"-h", "--help"} for arg in args)
|
|
60
|
+
|
|
58
61
|
if argv and argv[0] == "gate":
|
|
59
62
|
clean_args, native, python = parse_rust_flags(argv[1:])
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
if not wants_help(clean_args):
|
|
64
|
+
result = try_route_via_simplicio(
|
|
65
|
+
"gate", clean_args, prefer_native=native or not python, prefer_python=python
|
|
66
|
+
)
|
|
67
|
+
if result is not None:
|
|
68
|
+
return result
|
|
65
69
|
from .commands.gate import main as gate_main
|
|
66
70
|
|
|
67
71
|
return gate_main(clean_args)
|
|
68
72
|
if argv and argv[0] == "nest":
|
|
69
73
|
clean_args, native, python = parse_rust_flags(argv[1:])
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
if not wants_help(clean_args):
|
|
75
|
+
result = try_route_via_simplicio(
|
|
76
|
+
"nest", clean_args, prefer_native=native or not python, prefer_python=python
|
|
77
|
+
)
|
|
78
|
+
if result is not None:
|
|
79
|
+
return result
|
|
75
80
|
from .commands.nest import main as nest_main
|
|
76
81
|
|
|
77
82
|
return nest_main(clean_args)
|
|
@@ -383,15 +388,6 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
383
388
|
p_runtime_doctor.add_argument("--root", default=".")
|
|
384
389
|
p_runtime_doctor.add_argument("--json", action="store_true")
|
|
385
390
|
|
|
386
|
-
p_serve = sub.add_parser(
|
|
387
|
-
"serve", help="run simplicio-dev-cli as a server (--mcp for the MCP stdio protocol)"
|
|
388
|
-
)
|
|
389
|
-
p_serve.add_argument(
|
|
390
|
-
"--mcp",
|
|
391
|
-
action="store_true",
|
|
392
|
-
help="serve MCP tools (dev_cli_edit, dev_cli_validate, dev_cli_memory) over stdio",
|
|
393
|
-
)
|
|
394
|
-
|
|
395
391
|
p_memory = sub.add_parser(
|
|
396
392
|
"memory", help="cross-vendor memory handoff (markdown + git under ~/.simplicio/memory)"
|
|
397
393
|
)
|
|
@@ -435,7 +431,6 @@ _COMMAND_MODULES = {
|
|
|
435
431
|
"test": "test",
|
|
436
432
|
"token": "token",
|
|
437
433
|
"runtime": "runtime",
|
|
438
|
-
"serve": "serve",
|
|
439
434
|
"memory": "memory",
|
|
440
435
|
}
|
|
441
436
|
|
|
@@ -448,48 +443,58 @@ def main(argv=None):
|
|
|
448
443
|
|
|
449
444
|
configure_logging(quiet=quiet, verbose=verbose)
|
|
450
445
|
|
|
451
|
-
# Session-start ecosystem-freshness check (closes the runtime gap where
|
|
452
|
-
# pyproject pins >=X but the installed version is older). Idempotent +
|
|
453
|
-
# opt-out via SIMPLICIO_NO_AUTO_UPGRADE=1. See simplicio/ecosystem.py.
|
|
454
446
|
try:
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
447
|
+
# Session-start ecosystem-freshness check (closes the runtime gap where
|
|
448
|
+
# pyproject pins >=X but the installed version is older). Idempotent +
|
|
449
|
+
# opt-in via SIMPLICIO_AUTO_UPGRADE=1. See simplicio/ecosystem.py.
|
|
450
|
+
try:
|
|
451
|
+
from .ecosystem import maybe_run_session_start
|
|
452
|
+
|
|
453
|
+
maybe_run_session_start()
|
|
454
|
+
except Exception as e:
|
|
455
|
+
# Never let the freshness check break the CLI.
|
|
456
|
+
print(f"{CLI_PROG}: ecosystem check skipped ({e})", file=sys.stderr)
|
|
457
|
+
|
|
458
|
+
nested = _dispatch_nested(argv)
|
|
459
|
+
if nested is not None:
|
|
460
|
+
return nested
|
|
461
|
+
|
|
462
|
+
ap = _build_parser()
|
|
463
|
+
a = ap.parse_args(argv)
|
|
464
|
+
maybe_autoinstall(a.cmd)
|
|
465
|
+
|
|
466
|
+
# `mechanical-edit`/`edit`/`score-skill` need a little dispatch logic
|
|
467
|
+
# of their own (edit falls back to mechanical-edit; score-skill tries
|
|
468
|
+
# the Rust binary first) that doesn't fit the flat name->module table.
|
|
469
|
+
if a.cmd == "mechanical-edit":
|
|
470
|
+
from .commands.edit import run_mechanical_edit
|
|
471
|
+
|
|
472
|
+
return run_mechanical_edit(a)
|
|
473
|
+
if a.cmd == "edit":
|
|
474
|
+
from .commands.edit import run_edit
|
|
475
|
+
|
|
476
|
+
return run_edit(a)
|
|
477
|
+
if a.cmd == "score-skill":
|
|
478
|
+
from .commands.score_skill import run as score_skill_run
|
|
479
|
+
|
|
480
|
+
return score_skill_run(a)
|
|
481
|
+
|
|
482
|
+
module_name = _COMMAND_MODULES.get(a.cmd)
|
|
483
|
+
if module_name is None:
|
|
484
|
+
return 0
|
|
485
|
+
import importlib
|
|
486
|
+
|
|
487
|
+
command_module = importlib.import_module(f".commands.{module_name}", package=__package__)
|
|
488
|
+
return command_module.run(a)
|
|
489
|
+
except KeyboardInterrupt:
|
|
490
|
+
return 130
|
|
491
|
+
except BrokenPipeError:
|
|
492
|
+
return 130
|
|
493
|
+
except Exception as exc:
|
|
494
|
+
if verbose:
|
|
495
|
+
raise
|
|
496
|
+
print(f"{CLI_PROG}: error: {exc}", file=sys.stderr)
|
|
497
|
+
return 1
|
|
493
498
|
|
|
494
499
|
|
|
495
500
|
if __name__ == "__main__":
|
|
@@ -17,7 +17,11 @@ def read_text_source(path: str) -> str:
|
|
|
17
17
|
"""Read *path*, or stdin when *path* is the literal string ``"-"``."""
|
|
18
18
|
if path == "-":
|
|
19
19
|
return sys.stdin.read()
|
|
20
|
-
|
|
20
|
+
try:
|
|
21
|
+
return Path(path).read_text(encoding="utf-8")
|
|
22
|
+
except (FileNotFoundError, OSError) as exc:
|
|
23
|
+
print(f"{Path(sys.argv[0]).name}: error: cannot read {path}: {exc}", file=sys.stderr)
|
|
24
|
+
raise SystemExit(2) from exc
|
|
21
25
|
|
|
22
26
|
|
|
23
27
|
def force_local_if_requested(a: argparse.Namespace) -> None:
|
|
@@ -14,6 +14,7 @@ import sys
|
|
|
14
14
|
import time
|
|
15
15
|
from pathlib import Path
|
|
16
16
|
|
|
17
|
+
from ..utils.fs import write_text_atomic
|
|
17
18
|
from ._shared import force_local_if_requested
|
|
18
19
|
|
|
19
20
|
CLI_PROG = "simplicio-py"
|
|
@@ -158,7 +159,7 @@ def _write_sprint_state(
|
|
|
158
159
|
"dod": dod_results,
|
|
159
160
|
"cost": cost,
|
|
160
161
|
}
|
|
161
|
-
path
|
|
162
|
+
write_text_atomic(path, json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8")
|
|
162
163
|
|
|
163
164
|
|
|
164
165
|
def _run_sprint(a: argparse.Namespace) -> int:
|
|
@@ -69,7 +69,11 @@ def _run_via_runtime(a: argparse.Namespace, extra_args: list[str]) -> int | None
|
|
|
69
69
|
binary = discover_simplicio()
|
|
70
70
|
if binary is None:
|
|
71
71
|
return None
|
|
72
|
-
|
|
72
|
+
binary_path = Path(binary)
|
|
73
|
+
if sys.platform == "win32" and binary_path.suffix.lower() not in {".exe", ".bat", ".cmd", ".ps1", ".py"}:
|
|
74
|
+
cmd = [sys.executable, binary, *_build_runtime_args(a, extra_args)]
|
|
75
|
+
else:
|
|
76
|
+
cmd = [binary, *_build_runtime_args(a, extra_args)]
|
|
73
77
|
try:
|
|
74
78
|
completed = subprocess.run(
|
|
75
79
|
cmd,
|
|
@@ -93,7 +97,7 @@ def _run_via_runtime(a: argparse.Namespace, extra_args: list[str]) -> int | None
|
|
|
93
97
|
_print_human(payload)
|
|
94
98
|
if completed.stderr:
|
|
95
99
|
print(completed.stderr, end="", file=sys.stderr)
|
|
96
|
-
return completed.returncode
|
|
100
|
+
return int(payload.get("exit_code", completed.returncode))
|
|
97
101
|
|
|
98
102
|
|
|
99
103
|
def _parse_pytest_summary(output: str) -> tuple[int | None, int | None, int | None, float | None, str | None]:
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import os
|
|
5
6
|
import re
|
|
7
|
+
import shlex
|
|
6
8
|
import subprocess
|
|
7
9
|
from dataclasses import dataclass
|
|
8
10
|
from pathlib import Path
|
|
9
11
|
|
|
10
12
|
_CHECK_RE = re.compile(r"^\s*-\s+\[(?P<mark>[ xX])\]\s+(?P<label>.+?)\s*$")
|
|
11
13
|
_COMMAND_RE = re.compile(r"`([^`]+)`")
|
|
14
|
+
_SHELL_META_RE = re.compile(r"[|;&><$`]")
|
|
12
15
|
|
|
13
16
|
|
|
14
17
|
@dataclass
|
|
@@ -54,6 +57,7 @@ def load_sprint_dod(sprint_root: str | Path) -> list[DodGate]:
|
|
|
54
57
|
|
|
55
58
|
def run_dod_gates(root: str | Path, gates: list[DodGate]) -> list[dict]:
|
|
56
59
|
results = []
|
|
60
|
+
allow_shell = os.environ.get("SIMPLICIO_DOD_ALLOW_SHELL", "").strip().lower() in {"1", "true", "yes"}
|
|
57
61
|
for gate in gates:
|
|
58
62
|
if not gate.command:
|
|
59
63
|
results.append(
|
|
@@ -66,21 +70,45 @@ def run_dod_gates(root: str | Path, gates: list[DodGate]) -> list[dict]:
|
|
|
66
70
|
}
|
|
67
71
|
)
|
|
68
72
|
continue
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
try:
|
|
74
|
+
if allow_shell:
|
|
75
|
+
proc = subprocess.run(
|
|
76
|
+
gate.command,
|
|
77
|
+
shell=True,
|
|
78
|
+
cwd=root,
|
|
79
|
+
capture_output=True,
|
|
80
|
+
text=True,
|
|
81
|
+
timeout=600,
|
|
82
|
+
check=False,
|
|
83
|
+
)
|
|
84
|
+
else:
|
|
85
|
+
if _SHELL_META_RE.search(gate.command):
|
|
86
|
+
raise ValueError(
|
|
87
|
+
"shell metacharacters are blocked by default; rerun with SIMPLICIO_DOD_ALLOW_SHELL=1"
|
|
88
|
+
)
|
|
89
|
+
proc = subprocess.run(
|
|
90
|
+
shlex.split(gate.command),
|
|
91
|
+
shell=False,
|
|
92
|
+
cwd=root,
|
|
93
|
+
capture_output=True,
|
|
94
|
+
text=True,
|
|
95
|
+
timeout=600,
|
|
96
|
+
check=False,
|
|
97
|
+
)
|
|
98
|
+
passed = proc.returncode == 0
|
|
99
|
+
log = (proc.stdout + proc.stderr)[-1500:]
|
|
100
|
+
except subprocess.TimeoutExpired as exc:
|
|
101
|
+
passed = False
|
|
102
|
+
log = f"command timed out after {exc.timeout}s"
|
|
103
|
+
except ValueError as exc:
|
|
104
|
+
passed = False
|
|
105
|
+
log = str(exc)
|
|
78
106
|
results.append(
|
|
79
107
|
{
|
|
80
108
|
"label": gate.label,
|
|
81
|
-
"passed":
|
|
109
|
+
"passed": passed,
|
|
82
110
|
"command": gate.command,
|
|
83
|
-
"log":
|
|
111
|
+
"log": log,
|
|
84
112
|
"manual": False,
|
|
85
113
|
}
|
|
86
114
|
)
|
|
@@ -16,9 +16,9 @@ API:
|
|
|
16
16
|
Cached: PyPI lookups go through a 24h cache in ~/.simplicio/cache/pypi_versions.json
|
|
17
17
|
so we don't hit pypi.org on every invocation.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
Controls:
|
|
20
|
+
SIMPLICIO_AUTO_UPGRADE=1 # enable session-start upgrade check
|
|
21
|
+
SIMPLICIO_NO_AUTO_UPGRADE=1 # skip it even when AUTO_UPGRADE is set
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
24
|
from __future__ import annotations
|
|
@@ -150,14 +150,19 @@ def _pypi_latest(name: str, timeout: float = 5.0, refresh: bool = False) -> str
|
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
def _version_lt(a: str | None, b: str | None) -> bool:
|
|
153
|
-
"""
|
|
154
|
-
None — we don't try to guess what 'unknown' means."""
|
|
153
|
+
"""PEP-440-lite compare for numeric releases plus dev/a/b/rc prereleases."""
|
|
155
154
|
if a is None or b is None:
|
|
156
155
|
return False
|
|
157
156
|
|
|
158
|
-
def parse(v: str) -> tuple[int, ...]:
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
def parse(v: str) -> tuple[tuple[int, ...], tuple[int, int]]:
|
|
158
|
+
match = re.match(r"^\s*(\d+(?:\.\d+)*)\s*([A-Za-z]+)?\s*(\d+)?\s*$", v)
|
|
159
|
+
if not match:
|
|
160
|
+
raise ValueError(v)
|
|
161
|
+
release = tuple(int(part) for part in match.group(1).split("."))
|
|
162
|
+
stage_raw = (match.group(2) or "").lower()
|
|
163
|
+
stage_num = int(match.group(3) or 0)
|
|
164
|
+
stage_order = {"dev": 0, "a": 1, "alpha": 1, "b": 2, "beta": 2, "rc": 3, "c": 3, "": 4}
|
|
165
|
+
return release, (stage_order.get(stage_raw, 4), stage_num)
|
|
161
166
|
|
|
162
167
|
try:
|
|
163
168
|
return parse(a) < parse(b)
|
|
@@ -297,6 +302,8 @@ def maybe_run_session_start() -> None:
|
|
|
297
302
|
"yes",
|
|
298
303
|
):
|
|
299
304
|
return
|
|
305
|
+
if os.environ.get("SIMPLICIO_AUTO_UPGRADE", "").strip().lower() not in {"1", "true", "yes"}:
|
|
306
|
+
return
|
|
300
307
|
|
|
301
308
|
upgraded = ensure_latest()
|
|
302
309
|
if upgraded:
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Public bridge to the installed ``simplicio-mapper`` package.
|
|
2
|
+
|
|
3
|
+
This keeps ``simplicio-cli`` as the operational CLI while exposing the
|
|
4
|
+
underlying mapper dependency for downstream Python consumers that want a
|
|
5
|
+
single import surface from this distribution.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from importlib import import_module
|
|
11
|
+
from importlib.metadata import version
|
|
12
|
+
from types import ModuleType
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
_DIST_NAME = "simplicio-mapper"
|
|
16
|
+
_MODULE_NAME = "simplicio_mapper"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def mapper_module() -> ModuleType:
|
|
20
|
+
"""Return the installed ``simplicio_mapper`` module."""
|
|
21
|
+
return import_module(_MODULE_NAME)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def mapper_version() -> str:
|
|
25
|
+
"""Return the installed ``simplicio-mapper`` distribution version."""
|
|
26
|
+
return version(_DIST_NAME)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def __getattr__(name: str) -> Any:
|
|
30
|
+
"""Proxy attributes to the underlying ``simplicio_mapper`` module."""
|
|
31
|
+
return getattr(mapper_module(), name)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
__all__ = ["mapper_module", "mapper_version"]
|