batho 0.1.4__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.
- batho-0.1.4/.batho/hooks.yaml +33 -0
- batho-0.1.4/.bathoignore.example +114 -0
- batho-0.1.4/.github/workflows/ci.yml +48 -0
- batho-0.1.4/.github/workflows/publish-pypi.yml +123 -0
- batho-0.1.4/.github/workflows/publish-testpypi.yml +62 -0
- batho-0.1.4/.github/workflows/release-readiness.yml +114 -0
- batho-0.1.4/.gitignore +51 -0
- batho-0.1.4/.kilo/plans/1778847690633-neon-island.md +205 -0
- batho-0.1.4/.pre-commit-config.yaml +16 -0
- batho-0.1.4/.python-version +1 -0
- batho-0.1.4/LICENSE +201 -0
- batho-0.1.4/PKG-INFO +1378 -0
- batho-0.1.4/README.md +1140 -0
- batho-0.1.4/assets/batho.svg +64 -0
- batho-0.1.4/batho/__init__.py +55 -0
- batho-0.1.4/batho/bridge/__init__.py +42 -0
- batho-0.1.4/batho/bridge/artifact_loader.py +214 -0
- batho-0.1.4/batho/bridge/constants.py +79 -0
- batho-0.1.4/batho/bridge/http_api.py +383 -0
- batho-0.1.4/batho/bridge/mcp_server.py +159 -0
- batho-0.1.4/batho/bridge/models.py +102 -0
- batho-0.1.4/batho/bridge/registry_client.py +221 -0
- batho-0.1.4/batho/bsg/__init__.py +31 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_cicd.yaml +87 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_cloud_providers.yaml +100 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_cpp.yaml +110 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_csharp.yaml +130 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_dart.yaml +89 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_elixir.yaml +92 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_foundation.yaml +268 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_kotlin.yaml +79 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_php.yaml +135 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_ruby.yaml +100 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_scala.yaml +93 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_swift.yaml +119 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_detection_test_frameworks.yaml +130 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_file_categorization.yaml +320 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_angular.yaml +40 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_django.yaml +44 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_flask.yaml +44 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_nodejs.yaml +378 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_other.yaml +278 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_python.yaml +249 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_react.yaml +92 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_framework_vue.yaml +58 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_graph_foundation.yaml +109 -0
- batho-0.1.4/batho/bsg/plugins/foundation/bsg_token_optimization.yaml +184 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_api_contract_guardian.yaml +27 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_auth_boundary_shield.yaml +29 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_dependency_blast_radius.yaml +28 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_hardcoded_secret_catcher.yaml +30 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_iac_drift_sentinel.yaml +29 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_nplus1_query_catcher.yaml +29 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_resource_leak_preventer.yaml +27 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_schema_migration_enforcer.yaml +23 -0
- batho-0.1.4/batho/bsg/plugins/interceptors/bsg_silent_failure_catcher.yaml +23 -0
- batho-0.1.4/batho/bsg/plugins_cli.py +263 -0
- batho-0.1.4/batho/bsg/rules.py +3268 -0
- batho-0.1.4/batho/bsg/schemas/bsg-plugin-schema-v1.json +429 -0
- batho-0.1.4/batho/bsg/testing.py +519 -0
- batho-0.1.4/batho/cli/bridge.py +295 -0
- batho-0.1.4/batho/cli/dashboard.py +280 -0
- batho-0.1.4/batho/cloud_sync/__init__.py +11 -0
- batho-0.1.4/batho/cloud_sync/client.py +358 -0
- batho-0.1.4/batho/cloud_sync/config.py +55 -0
- batho-0.1.4/batho/cloud_sync/uploader.py +195 -0
- batho-0.1.4/batho/config.py +1021 -0
- batho-0.1.4/batho/context/__init__.py +22 -0
- batho-0.1.4/batho/context/bsg.py +8 -0
- batho-0.1.4/batho/context/bsg_map.py +1835 -0
- batho-0.1.4/batho/context/cache.py +473 -0
- batho-0.1.4/batho/context/codegraph.py +1179 -0
- batho-0.1.4/batho/context/extractor.py +1004 -0
- batho-0.1.4/batho/context/graph_cache.py +99 -0
- batho-0.1.4/batho/context/incremental.py +198 -0
- batho-0.1.4/batho/context/languages/__init__.py +148 -0
- batho-0.1.4/batho/context/languages/_common.py +271 -0
- batho-0.1.4/batho/context/languages/bash.py +72 -0
- batho-0.1.4/batho/context/languages/c.py +61 -0
- batho-0.1.4/batho/context/languages/cpp.py +87 -0
- batho-0.1.4/batho/context/languages/csharp.py +86 -0
- batho-0.1.4/batho/context/languages/css.py +242 -0
- batho-0.1.4/batho/context/languages/dart.py +84 -0
- batho-0.1.4/batho/context/languages/detector.py +578 -0
- batho-0.1.4/batho/context/languages/erlang.py +76 -0
- batho-0.1.4/batho/context/languages/factory.py +500 -0
- batho-0.1.4/batho/context/languages/go.py +67 -0
- batho-0.1.4/batho/context/languages/hack.py +83 -0
- batho-0.1.4/batho/context/languages/haskell.py +87 -0
- batho-0.1.4/batho/context/languages/hcl.py +357 -0
- batho-0.1.4/batho/context/languages/html.py +225 -0
- batho-0.1.4/batho/context/languages/java.py +69 -0
- batho-0.1.4/batho/context/languages/javascript.py +78 -0
- batho-0.1.4/batho/context/languages/json.py +243 -0
- batho-0.1.4/batho/context/languages/julia.py +83 -0
- batho-0.1.4/batho/context/languages/kotlin.py +76 -0
- batho-0.1.4/batho/context/languages/lua.py +70 -0
- batho-0.1.4/batho/context/languages/markdown.py +357 -0
- batho-0.1.4/batho/context/languages/objectivec.py +107 -0
- batho-0.1.4/batho/context/languages/ocaml.py +87 -0
- batho-0.1.4/batho/context/languages/perl.py +75 -0
- batho-0.1.4/batho/context/languages/php.py +74 -0
- batho-0.1.4/batho/context/languages/python.py +106 -0
- batho-0.1.4/batho/context/languages/r.py +63 -0
- batho-0.1.4/batho/context/languages/registry.py +635 -0
- batho-0.1.4/batho/context/languages/ruby.py +67 -0
- batho-0.1.4/batho/context/languages/rust.py +75 -0
- batho-0.1.4/batho/context/languages/scala.py +99 -0
- batho-0.1.4/batho/context/languages/swift.py +94 -0
- batho-0.1.4/batho/context/languages/toml.py +262 -0
- batho-0.1.4/batho/context/languages/typescript.py +88 -0
- batho-0.1.4/batho/context/languages/verilog.py +100 -0
- batho-0.1.4/batho/context/languages/yaml.py +285 -0
- batho-0.1.4/batho/context/languages/zig.py +88 -0
- batho-0.1.4/batho/context/mmap_storage.py +63 -0
- batho-0.1.4/batho/context/pipeline.py +381 -0
- batho-0.1.4/batho/context/query.py +313 -0
- batho-0.1.4/batho/context/schema.py +227 -0
- batho-0.1.4/batho/context/storage.py +1727 -0
- batho-0.1.4/batho/context/symbol_index.py +124 -0
- batho-0.1.4/batho/dashboard/DESIGN.md +8 -0
- batho-0.1.4/batho/dashboard/README.md +51 -0
- batho-0.1.4/batho/dashboard/assets/css/animations.css +35 -0
- batho-0.1.4/batho/dashboard/assets/css/base.css +139 -0
- batho-0.1.4/batho/dashboard/assets/css/components.css +326 -0
- batho-0.1.4/batho/dashboard/assets/css/graph.css +267 -0
- batho-0.1.4/batho/dashboard/assets/css/tokens.css +119 -0
- batho-0.1.4/batho/dashboard/assets/fonts/inter-500.woff2 +11 -0
- batho-0.1.4/batho/dashboard/assets/fonts/inter-500.woff2.LICENSE +2 -0
- batho-0.1.4/batho/dashboard/assets/fonts/inter-600.woff2 +11 -0
- batho-0.1.4/batho/dashboard/assets/fonts/space-grotesk-500.woff2 +11 -0
- batho-0.1.4/batho/dashboard/assets/fonts/space-grotesk-500.woff2.LICENSE +2 -0
- batho-0.1.4/batho/dashboard/assets/fonts/space-grotesk-700.woff2 +11 -0
- batho-0.1.4/batho/dashboard/assets/js/ctn-loader.js +424 -0
- batho-0.1.4/batho/dashboard/assets/js/cy-import.js +34 -0
- batho-0.1.4/batho/dashboard/assets/js/cy-stylesheet.js +156 -0
- batho-0.1.4/batho/dashboard/assets/js/format.js +60 -0
- batho-0.1.4/batho/dashboard/assets/js/glob.js +94 -0
- batho-0.1.4/batho/dashboard/assets/js/graph-stream.js +158 -0
- batho-0.1.4/batho/dashboard/assets/js/main.js +175 -0
- batho-0.1.4/batho/dashboard/assets/js/router.js +101 -0
- batho-0.1.4/batho/dashboard/assets/js/store.js +53 -0
- batho-0.1.4/batho/dashboard/index.html +88 -0
- batho-0.1.4/batho/dashboard/pages/files.js +275 -0
- batho-0.1.4/batho/dashboard/pages/hypergraph.js +564 -0
- batho-0.1.4/batho/dashboard/pages/metrics.js +6 -0
- batho-0.1.4/batho/dashboard/pages/overview.js +752 -0
- batho-0.1.4/batho/dashboard/pages/relationships.js +192 -0
- batho-0.1.4/batho/dashboard/pages/rules.js +6 -0
- batho-0.1.4/batho/dashboard/pages/search.js +6 -0
- batho-0.1.4/batho/dashboard/pages/snapshots.js +234 -0
- batho-0.1.4/batho/dashboard/shared/components/audit-export.js +127 -0
- batho-0.1.4/batho/dashboard/shared/components/chip-filter.js +67 -0
- batho-0.1.4/batho/dashboard/shared/components/code-pane.js +47 -0
- batho-0.1.4/batho/dashboard/shared/components/data-table.js +206 -0
- batho-0.1.4/batho/dashboard/shared/components/drawer.js +134 -0
- batho-0.1.4/batho/dashboard/shared/components/entity-chip.js +75 -0
- batho-0.1.4/batho/dashboard/shared/components/header-bar.js +230 -0
- batho-0.1.4/batho/dashboard/shared/components/kpi-row.js +28 -0
- batho-0.1.4/batho/dashboard/shared/components/latency-bar.js +69 -0
- batho-0.1.4/batho/dashboard/shared/components/side-rail.js +73 -0
- batho-0.1.4/batho/dashboard/shared/components/staleness-gauge.js +69 -0
- batho-0.1.4/batho/dashboard/shared/components/stat-tile.js +41 -0
- batho-0.1.4/batho/dashboard/shared/components/tab-bar.js +70 -0
- batho-0.1.4/batho/dashboard/vendor/cytoscape/LICENSE +19 -0
- batho-0.1.4/batho/dashboard/vendor/cytoscape/VERSION.txt +1 -0
- batho-0.1.4/batho/dashboard/vendor/cytoscape/cytoscape.min.js +32 -0
- batho-0.1.4/batho/dashboard/vendor/marked/LICENSE +1 -0
- batho-0.1.4/batho/dashboard/vendor/marked/VERSION.txt +1 -0
- batho-0.1.4/batho/dashboard/vendor/marked/marked.min.js +6 -0
- batho-0.1.4/batho/hooks/__init__.py +43 -0
- batho-0.1.4/batho/hooks/bootstrap.py +18 -0
- batho-0.1.4/batho/hooks/constants.py +97 -0
- batho-0.1.4/batho/hooks/installer.py +159 -0
- batho-0.1.4/batho/hooks/loader.py +63 -0
- batho-0.1.4/batho/hooks/models.py +78 -0
- batho-0.1.4/batho/hooks/planner.py +128 -0
- batho-0.1.4/batho/hooks/runner.py +147 -0
- batho-0.1.4/batho/synthesizer.py +249 -0
- batho-0.1.4/batho/time_machine.py +1667 -0
- batho-0.1.4/batho/utils/__init__.py +54 -0
- batho-0.1.4/batho/utils/cli_output.py +165 -0
- batho-0.1.4/batho/utils/dependencies.py +618 -0
- batho-0.1.4/batho/utils/encoding.py +106 -0
- batho-0.1.4/batho/utils/file_io.py +194 -0
- batho-0.1.4/batho/utils/file_lock.py +294 -0
- batho-0.1.4/batho/utils/hash.py +214 -0
- batho-0.1.4/batho/utils/ignore.py +379 -0
- batho-0.1.4/batho/utils/logging.py +160 -0
- batho-0.1.4/batho/utils/memory_monitor.py +304 -0
- batho-0.1.4/batho/utils/patch_errors.py +279 -0
- batho-0.1.4/batho/utils/path_sanitizer.py +237 -0
- batho-0.1.4/batho.yaml +137 -0
- batho-0.1.4/batho.yaml.example +164 -0
- batho-0.1.4/batho_cli.py +3922 -0
- batho-0.1.4/cicd/README.md +37 -0
- batho-0.1.4/cicd/action.yml +149 -0
- batho-0.1.4/cicd/batho-index.yml +106 -0
- batho-0.1.4/cicd/starter-batho.yml +56 -0
- batho-0.1.4/pyproject.toml +88 -0
- batho-0.1.4/pytest.ini +45 -0
- batho-0.1.4/scripts/ci/render_summary.py +188 -0
- batho-0.1.4/test.py +94 -0
- batho-0.1.4/tests/__init__.py +1 -0
- batho-0.1.4/tests/bridge/__init__.py +1 -0
- batho-0.1.4/tests/bridge/test_artifact_loader.py +100 -0
- batho-0.1.4/tests/bridge/test_http_api.py +330 -0
- batho-0.1.4/tests/bridge/test_mcp_server.py +93 -0
- batho-0.1.4/tests/bridge/test_registry_client.py +144 -0
- batho-0.1.4/tests/bsg_plugins/secret_catcher.yaml +45 -0
- batho-0.1.4/tests/cli/__init__.py +0 -0
- batho-0.1.4/tests/cli/test_batho_high_coverage.py +1382 -0
- batho-0.1.4/tests/cli/test_cli_commands.py +1057 -0
- batho-0.1.4/tests/cli/test_cli_integration.py +72 -0
- batho-0.1.4/tests/cli/test_cli_main_logging.py +103 -0
- batho-0.1.4/tests/cli/test_cli_parser.py +220 -0
- batho-0.1.4/tests/cli/test_cli_plugins.py +399 -0
- batho-0.1.4/tests/cli/test_sync_command.py +211 -0
- batho-0.1.4/tests/cloud_sync/__init__.py +0 -0
- batho-0.1.4/tests/cloud_sync/test_client.py +149 -0
- batho-0.1.4/tests/cloud_sync/test_uploader.py +142 -0
- batho-0.1.4/tests/conftest.py +191 -0
- batho-0.1.4/tests/context/__init__.py +0 -0
- batho-0.1.4/tests/context/test_bsg_map_json.py +313 -0
- batho-0.1.4/tests/context/test_cache_high_coverage.py +141 -0
- batho-0.1.4/tests/context/test_codegraph.py +664 -0
- batho-0.1.4/tests/context/test_common_queries.py +41 -0
- batho-0.1.4/tests/context/test_context_misc_coverage.py +295 -0
- batho-0.1.4/tests/context/test_css_extractor.py +468 -0
- batho-0.1.4/tests/context/test_extractor_imports.py +54 -0
- batho-0.1.4/tests/context/test_factory.py +308 -0
- batho-0.1.4/tests/context/test_graph_cache.py +52 -0
- batho-0.1.4/tests/context/test_hcl_extractor.py +490 -0
- batho-0.1.4/tests/context/test_html_extractor.py +238 -0
- batho-0.1.4/tests/context/test_incremental.py +137 -0
- batho-0.1.4/tests/context/test_json_extractor.py +69 -0
- batho-0.1.4/tests/context/test_language_detector_comprehensive.py +376 -0
- batho-0.1.4/tests/context/test_languages.py +173 -0
- batho-0.1.4/tests/context/test_markdown_extractor.py +288 -0
- batho-0.1.4/tests/context/test_mmap_storage.py +110 -0
- batho-0.1.4/tests/context/test_objectivec_extractor.py +245 -0
- batho-0.1.4/tests/context/test_pipeline_high_coverage.py +348 -0
- batho-0.1.4/tests/context/test_query_service.py +214 -0
- batho-0.1.4/tests/context/test_storage_registry.py +677 -0
- batho-0.1.4/tests/context/test_symbol_index.py +89 -0
- batho-0.1.4/tests/context/test_tiny_language_extractors.py +62 -0
- batho-0.1.4/tests/context/test_toml_extractor.py +129 -0
- batho-0.1.4/tests/context/test_yaml_extractor.py +419 -0
- batho-0.1.4/tests/core/__init__.py +0 -0
- batho-0.1.4/tests/core/test_bsg_rules.py +480 -0
- batho-0.1.4/tests/core/test_bsg_rules_extended.py +796 -0
- batho-0.1.4/tests/core/test_config.py +399 -0
- batho-0.1.4/tests/core/test_extractor.py +199 -0
- batho-0.1.4/tests/core/test_hooks_config.py +81 -0
- batho-0.1.4/tests/core/test_new_detection_plugins.py +375 -0
- batho-0.1.4/tests/core/test_schema.py +172 -0
- batho-0.1.4/tests/core/test_synthesizer.py +60 -0
- batho-0.1.4/tests/integration/__init__.py +0 -0
- batho-0.1.4/tests/integration/test_cross_platform.py +291 -0
- batho-0.1.4/tests/integration/test_error_handling.py +291 -0
- batho-0.1.4/tests/integration/test_workflows.py +193 -0
- batho-0.1.4/tests/performance/test_performance.py +294 -0
- batho-0.1.4/tests/test_batho_core_init.py +41 -0
- batho-0.1.4/tests/test_flask_fixture.py +59 -0
- batho-0.1.4/tests/test_incremental_patch.py +796 -0
- batho-0.1.4/tests/test_time_machine.py +384 -0
- batho-0.1.4/tests/test_time_machine_high_coverage.py +845 -0
- batho-0.1.4/tests/testdata/PHASE1_COMPLETION_SUMMARY.md +116 -0
- batho-0.1.4/tests/testdata/PHASES1_5_COMPLETION_SUMMARY.md +171 -0
- batho-0.1.4/tests/testdata/files/README.md +10 -0
- batho-0.1.4/tests/testdata/files/config/sample_config.ini +66 -0
- batho-0.1.4/tests/testdata/files/config/sample_config.json +80 -0
- batho-0.1.4/tests/testdata/files/config/sample_config.toml +77 -0
- batho-0.1.4/tests/testdata/files/config/sample_config.yaml +77 -0
- batho-0.1.4/tests/testdata/files/cpp/sample_cpp.cpp +224 -0
- batho-0.1.4/tests/testdata/files/css/advanced.css +38 -0
- batho-0.1.4/tests/testdata/files/css/basic.css +18 -0
- batho-0.1.4/tests/testdata/files/css/complex_selectors.css +58 -0
- batho-0.1.4/tests/testdata/files/css/scss_style.scss +54 -0
- batho-0.1.4/tests/testdata/files/go/sample_go.go +113 -0
- batho-0.1.4/tests/testdata/files/hcl/basic.tf +24 -0
- batho-0.1.4/tests/testdata/files/hcl/complex.tf +76 -0
- batho-0.1.4/tests/testdata/files/java/SampleClass.java +151 -0
- batho-0.1.4/tests/testdata/files/javascript/sample_es6.js +84 -0
- batho-0.1.4/tests/testdata/files/markup/sample_html.html +341 -0
- batho-0.1.4/tests/testdata/files/markup/sample_markdown.md +186 -0
- batho-0.1.4/tests/testdata/files/markup/sample_xml.xml +246 -0
- batho-0.1.4/tests/testdata/files/python/sample_functions.py +77 -0
- batho-0.1.4/tests/testdata/files/rust/sample_rust.rs +160 -0
- batho-0.1.4/tests/testdata/files/yaml/basic.yaml +20 -0
- batho-0.1.4/tests/testdata/files/yaml/complex.yaml +54 -0
- batho-0.1.4/tests/testdata/fixtures/README.md +10 -0
- batho-0.1.4/tests/testdata/outputs/PHASE7_COMPLETION_SUMMARY.md +135 -0
- batho-0.1.4/tests/testdata/outputs/README.md +10 -0
- batho-0.1.4/tests/testdata/outputs/api_responses/error_response.json +13 -0
- batho-0.1.4/tests/testdata/outputs/api_responses/index_success.json +27 -0
- batho-0.1.4/tests/testdata/outputs/api_responses/stats_response.json +30 -0
- batho-0.1.4/tests/testdata/outputs/configs/custom_configs/language_specific_config.yaml +18 -0
- batho-0.1.4/tests/testdata/outputs/configs/custom_configs/large_repository_config.json +21 -0
- batho-0.1.4/tests/testdata/outputs/configs/custom_configs/performance_tuning_config.toml +18 -0
- batho-0.1.4/tests/testdata/outputs/configs/default_config.json +21 -0
- batho-0.1.4/tests/testdata/outputs/configs/env_override_configs/override_example.json +34 -0
- batho-0.1.4/tests/testdata/outputs/configs/invalid_configs/missing_fields.json +9 -0
- batho-0.1.4/tests/testdata/outputs/configs/invalid_configs/schema_violation.json +21 -0
- batho-0.1.4/tests/testdata/outputs/configs/invalid_configs/type_errors.json +21 -0
- batho-0.1.4/tests/testdata/outputs/graphs/flask_sample_graph.json +22336 -0
- batho-0.1.4/tests/testdata/outputs/graphs/multi_language_graph.json +1272 -0
- batho-0.1.4/tests/testdata/outputs/graphs/simple_python_graph.json +531 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/flask_sample_repomap.json +4591 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/flask_sample_repomap_compressed_1000.txt +102 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/flask_sample_repomap_compressed_2000.txt +215 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/flask_sample_repomap_compressed_4000.txt +533 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/flask_sample_repomap_full.txt +763 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/flask_sample_repomap_hierarchical.txt +768 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/multi_language_repomap.json +314 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/multi_language_repomap_compressed_1000.txt +39 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/multi_language_repomap_compressed_2000.txt +39 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/multi_language_repomap_compressed_4000.txt +39 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/multi_language_repomap_full.txt +39 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/multi_language_repomap_hierarchical.txt +42 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/simple_python_repomap.json +148 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/simple_python_repomap_compressed_1000.txt +19 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/simple_python_repomap_compressed_2000.txt +19 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/simple_python_repomap_compressed_4000.txt +19 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/simple_python_repomap_full.txt +19 -0
- batho-0.1.4/tests/testdata/outputs/repomaps/simple_python_repomap_hierarchical.txt +22 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/.!61241!latin1_file.py +1 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/.!61737!latin1_file.py +1 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/.!6650!latin1_file.py +1 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/binary_file.bin +0 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/deep/nested/path/to/file.py +2 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/empty_file.py +0 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/latin1_file.py +4 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/utf16_file.txt +0 -0
- batho-0.1.4/tests/testdata/repositories/edge_cases/whitespace_only.py +3 -0
- batho-0.1.4/tests/testdata/repositories/flask/.devcontainer/devcontainer.json +17 -0
- batho-0.1.4/tests/testdata/repositories/flask/.devcontainer/on-create-command.sh +9 -0
- batho-0.1.4/tests/testdata/repositories/flask/.editorconfig +13 -0
- batho-0.1.4/tests/testdata/repositories/flask/.flake8 +25 -0
- batho-0.1.4/tests/testdata/repositories/flask/.gitignore +25 -0
- batho-0.1.4/tests/testdata/repositories/flask/.pre-commit-config.yaml +37 -0
- batho-0.1.4/tests/testdata/repositories/flask/.readthedocs.yaml +13 -0
- batho-0.1.4/tests/testdata/repositories/flask/CHANGES.rst +1516 -0
- batho-0.1.4/tests/testdata/repositories/flask/CODE_OF_CONDUCT.md +76 -0
- batho-0.1.4/tests/testdata/repositories/flask/CONTRIBUTING.rst +238 -0
- batho-0.1.4/tests/testdata/repositories/flask/LICENSE.rst +28 -0
- batho-0.1.4/tests/testdata/repositories/flask/README.rst +80 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/Makefile +20 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/_static/debugger.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/_static/flask-horizontal.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/_static/flask-vertical.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/_static/pycharm-run-config.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/_static/shortcut-icon.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/api.rst +722 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/appcontext.rst +147 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/async-await.rst +131 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/blueprints.rst +315 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/changes.rst +4 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/cli.rst +556 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/conf.py +96 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/config.rst +721 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/contributing.rst +1 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/debugging.rst +99 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/apache-httpd.rst +66 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/asgi.rst +27 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/eventlet.rst +80 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/gevent.rst +80 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/gunicorn.rst +130 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/index.rst +79 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/mod_wsgi.rst +94 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/nginx.rst +69 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/proxy_fix.rst +33 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/uwsgi.rst +145 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/deploying/waitress.rst +75 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/design.rst +228 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/errorhandling.rst +523 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/extensiondev.rst +303 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/extensions.rst +48 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/index.rst +84 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/installation.rst +144 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/license.rst +4 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/lifecycle.rst +168 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/logging.rst +183 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/make.bat +35 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/appdispatch.rst +189 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/appfactories.rst +118 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/caching.rst +16 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/celery.rst +242 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/deferredcallbacks.rst +44 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/favicon.rst +53 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/fileuploads.rst +182 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/flashing.rst +148 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/index.rst +40 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/javascript.rst +259 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/jquery.rst +6 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/lazyloading.rst +109 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/methodoverrides.rst +42 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/mongoengine.rst +103 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/packages.rst +133 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/requestchecksum.rst +55 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/singlepageapplications.rst +24 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/sqlalchemy.rst +214 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/sqlite3.rst +147 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/streaming.rst +85 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/subclassing.rst +17 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/templateinheritance.rst +68 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/urlprocessors.rst +126 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/viewdecorators.rst +171 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/patterns/wtforms.rst +126 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/quickstart.rst +907 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/reqcontext.rst +243 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/security.rst +274 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/server.rst +115 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/shell.rst +100 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/signals.rst +167 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/templating.rst +229 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/testing.rst +319 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/blog.rst +336 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/database.rst +209 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/deploy.rst +111 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/factory.rst +162 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/flaskr_edit.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/flaskr_index.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/flaskr_login.png +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/index.rst +64 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/install.rst +89 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/layout.rst +110 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/next.rst +38 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/static.rst +72 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/templates.rst +187 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/tests.rst +559 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/tutorial/views.rst +305 -0
- batho-0.1.4/tests/testdata/repositories/flask/docs/views.rst +324 -0
- batho-0.1.4/tests/testdata/repositories/flask/metadata.py +101 -0
- batho-0.1.4/tests/testdata/repositories/flask/pyproject.toml +108 -0
- batho-0.1.4/tests/testdata/repositories/flask/repository_metadata.json +159 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/build.in +1 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/build.txt +13 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/dev.in +6 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/dev.txt +64 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/docs.in +5 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/docs.txt +68 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/tests-pallets-min.in +6 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/tests-pallets-min.txt +22 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/tests.in +4 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/tests.txt +19 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/typing.in +4 -0
- batho-0.1.4/tests/testdata/repositories/flask/requirements/typing.txt +23 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/__init__.py +102 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/__main__.py +3 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/app.py +2213 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/blueprints.py +626 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/cli.py +1068 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/config.py +347 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/ctx.py +440 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/debughelpers.py +160 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/globals.py +96 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/helpers.py +701 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/json/__init__.py +170 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/json/provider.py +216 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/json/tag.py +314 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/logging.py +76 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/py.typed +0 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/scaffold.py +873 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/sessions.py +367 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/signals.py +33 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/templating.py +220 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/testing.py +295 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/typing.py +82 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/views.py +190 -0
- batho-0.1.4/tests/testdata/repositories/flask/src/flask/wrappers.py +173 -0
- batho-0.1.4/tests/testdata/repositories/flask/tox.ini +42 -0
- batho-0.1.4/tests/testdata/repositories/flask/uv.lock +473 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/Dockerfile +5 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/backend/app.py +20 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/backend/models.py +28 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/backend/requirements.txt +3 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/frontend/package.json +13 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/frontend/src/App.tsx +17 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/frontend/src/utils.ts +9 -0
- batho-0.1.4/tests/testdata/repositories/multi_language/frontend/tsconfig.json +10 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/.gitignore +5 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/README.md +2 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/requirements.txt +3 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/setup.py +9 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/src/__init__.py +6 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/src/calculator.py +43 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/src/utils.py +16 -0
- batho-0.1.4/tests/testdata/repositories/simple_python/tests/test_calculator.py +17 -0
- batho-0.1.4/tests/utils/__init__.py +0 -0
- batho-0.1.4/tests/utils/test_dependencies.py +518 -0
- batho-0.1.4/tests/utils/test_encoding.py +120 -0
- batho-0.1.4/tests/utils/test_file_io.py +94 -0
- batho-0.1.4/tests/utils/test_file_lock.py +195 -0
- batho-0.1.4/tests/utils/test_hash.py +161 -0
- batho-0.1.4/tests/utils/test_ignore.py +220 -0
- batho-0.1.4/tests/utils/test_logging.py +91 -0
- batho-0.1.4/tests/utils/test_memory_monitor.py +244 -0
- batho-0.1.4/tests/utils/test_patch_errors.py +93 -0
- batho-0.1.4/tests/utils/test_path_sanitizer.py +95 -0
- batho-0.1.4/uv.lock +1224 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: hooks.v1
|
|
2
|
+
defaults:
|
|
3
|
+
shell: sh
|
|
4
|
+
timeout_seconds: 300
|
|
5
|
+
fail_fast: true
|
|
6
|
+
env: {}
|
|
7
|
+
|
|
8
|
+
templates:
|
|
9
|
+
custom-team-check:
|
|
10
|
+
description: Team-specific guardrail
|
|
11
|
+
run: echo "[batho hooks] add your team check here"
|
|
12
|
+
|
|
13
|
+
hooks:
|
|
14
|
+
pre-commit:
|
|
15
|
+
enabled: true
|
|
16
|
+
description: Enterprise pre-commit gate
|
|
17
|
+
stages:
|
|
18
|
+
- template: code-quality
|
|
19
|
+
- template: secret-scan
|
|
20
|
+
- template: batho-index
|
|
21
|
+
|
|
22
|
+
pre-push:
|
|
23
|
+
enabled: true
|
|
24
|
+
description: Enterprise pre-push validation
|
|
25
|
+
stages:
|
|
26
|
+
- template: validation-tests
|
|
27
|
+
- template: batho-patch-scan
|
|
28
|
+
|
|
29
|
+
enterprise-nightly:
|
|
30
|
+
enabled: true
|
|
31
|
+
description: Custom non-git hook runnable via batho hooks run
|
|
32
|
+
stages:
|
|
33
|
+
- template: custom-team-check
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Batho Ignore File
|
|
2
|
+
# This file uses glob patterns to exclude files/directories from BSG indexing.
|
|
3
|
+
# Patterns are merged with global ignore patterns.
|
|
4
|
+
# Format: one pattern per line, shell-style globs (same as .gitignore)
|
|
5
|
+
|
|
6
|
+
# Build artifacts and dependencies
|
|
7
|
+
**/__pycache__/
|
|
8
|
+
**/*.pyc
|
|
9
|
+
**/*.pyo
|
|
10
|
+
**/*.pyd
|
|
11
|
+
**/.Python
|
|
12
|
+
**/build/
|
|
13
|
+
**/dist/
|
|
14
|
+
**/*.egg-info/
|
|
15
|
+
**/.eggs/
|
|
16
|
+
**/node_modules/
|
|
17
|
+
**/vendor/
|
|
18
|
+
**/.venv/
|
|
19
|
+
**/venv/
|
|
20
|
+
**/ENV/
|
|
21
|
+
|
|
22
|
+
# IDE and editor files
|
|
23
|
+
**/.vscode/
|
|
24
|
+
**/.idea/
|
|
25
|
+
**/.DS_Store
|
|
26
|
+
**/*.swp
|
|
27
|
+
**/*.swo
|
|
28
|
+
**/*~
|
|
29
|
+
**/.project
|
|
30
|
+
**/.settings/
|
|
31
|
+
|
|
32
|
+
# Test and coverage artifacts
|
|
33
|
+
**/.pytest_cache/
|
|
34
|
+
**/.coverage
|
|
35
|
+
**/htmlcov/
|
|
36
|
+
**/.tox/
|
|
37
|
+
**/.mypy_cache/
|
|
38
|
+
**/coverage.xml
|
|
39
|
+
**/*.cover
|
|
40
|
+
|
|
41
|
+
# Documentation and generated files
|
|
42
|
+
**/_build/
|
|
43
|
+
**/site/
|
|
44
|
+
**/.doctrees/
|
|
45
|
+
**/*.md~
|
|
46
|
+
|
|
47
|
+
# Temporary and cache files
|
|
48
|
+
**/tmp/
|
|
49
|
+
**/temp/
|
|
50
|
+
**/*.tmp
|
|
51
|
+
**/*.bak
|
|
52
|
+
**/*.log
|
|
53
|
+
**/*.cache
|
|
54
|
+
|
|
55
|
+
# Large binary files
|
|
56
|
+
**/*.zip
|
|
57
|
+
**/*.tar
|
|
58
|
+
**/*.tar.gz
|
|
59
|
+
**/*.rar
|
|
60
|
+
**/*.7z
|
|
61
|
+
**/*.iso
|
|
62
|
+
**/*.dmg
|
|
63
|
+
**/*.img
|
|
64
|
+
**/*.bin
|
|
65
|
+
|
|
66
|
+
# Database files
|
|
67
|
+
**/*.db
|
|
68
|
+
**/*.sqlite
|
|
69
|
+
**/*.sqlite3
|
|
70
|
+
|
|
71
|
+
# Environment files
|
|
72
|
+
**/.env
|
|
73
|
+
**/.env.local
|
|
74
|
+
**/.env.*.local
|
|
75
|
+
|
|
76
|
+
# OS-specific files
|
|
77
|
+
**/Thumbs.db
|
|
78
|
+
**/Desktop.ini
|
|
79
|
+
**/.Spotlight-V100
|
|
80
|
+
**/.Trashes
|
|
81
|
+
|
|
82
|
+
# Version control (usually handled by .gitignore, but for safety)
|
|
83
|
+
**/.git/
|
|
84
|
+
**/.hg/
|
|
85
|
+
**/.svn/
|
|
86
|
+
|
|
87
|
+
# CI/CD
|
|
88
|
+
**/.github/workflows/*.log
|
|
89
|
+
**/.gitlab-ci.yml
|
|
90
|
+
**/Jenkinsfile
|
|
91
|
+
|
|
92
|
+
# Large data files
|
|
93
|
+
**/data/
|
|
94
|
+
**/datasets/
|
|
95
|
+
**/*.csv
|
|
96
|
+
**/*.xlsx
|
|
97
|
+
**/*.xls
|
|
98
|
+
**/*.parquet
|
|
99
|
+
**/assets/images/
|
|
100
|
+
**/assets/videos/
|
|
101
|
+
**/assets/audio/
|
|
102
|
+
|
|
103
|
+
# Lock files (package managers)
|
|
104
|
+
**/poetry.lock
|
|
105
|
+
**/package-lock.json
|
|
106
|
+
**/yarn.lock
|
|
107
|
+
**/pnpm-lock.yaml
|
|
108
|
+
**/uv.lock
|
|
109
|
+
|
|
110
|
+
# Example/skeleton files
|
|
111
|
+
**/example/
|
|
112
|
+
**/examples/
|
|
113
|
+
**/demo/
|
|
114
|
+
**/samples/
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test:
|
|
15
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.12"]
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout
|
|
24
|
+
uses: actions/checkout@v4
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v4
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
run: uv python install ${{ matrix.python-version }}
|
|
31
|
+
|
|
32
|
+
- name: Install dependencies
|
|
33
|
+
run: uv sync --all-extras
|
|
34
|
+
|
|
35
|
+
- name: Run all tests with coverage
|
|
36
|
+
run: |
|
|
37
|
+
uv run pytest \
|
|
38
|
+
--cov=batho \
|
|
39
|
+
--cov=batho_cli \
|
|
40
|
+
--cov-report=xml \
|
|
41
|
+
--cov-report=term-missing
|
|
42
|
+
|
|
43
|
+
- name: Upload coverage
|
|
44
|
+
uses: actions/upload-artifact@v4
|
|
45
|
+
with:
|
|
46
|
+
name: coverage-${{ matrix.python-version }}
|
|
47
|
+
path: coverage.xml
|
|
48
|
+
retention-days: 7
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v[0-9]+.[0-9]+.[0-9]+'
|
|
7
|
+
- '!v*-test*'
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
confirm:
|
|
11
|
+
description: 'Type "publish" to confirm production PyPI release'
|
|
12
|
+
required: true
|
|
13
|
+
default: ''
|
|
14
|
+
|
|
15
|
+
concurrency:
|
|
16
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
17
|
+
cancel-in-progress: false
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
readiness:
|
|
24
|
+
uses: ./.github/workflows/release-readiness.yml
|
|
25
|
+
|
|
26
|
+
build:
|
|
27
|
+
name: Build package
|
|
28
|
+
needs: readiness
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
outputs:
|
|
31
|
+
version: ${{ steps.get-version.outputs.version }}
|
|
32
|
+
|
|
33
|
+
steps:
|
|
34
|
+
- name: Checkout code
|
|
35
|
+
uses: actions/checkout@v4
|
|
36
|
+
|
|
37
|
+
- name: Install uv
|
|
38
|
+
uses: astral-sh/setup-uv@v4
|
|
39
|
+
|
|
40
|
+
- name: Set up Python
|
|
41
|
+
run: uv python install 3.12
|
|
42
|
+
|
|
43
|
+
- name: Get version from pyproject.toml
|
|
44
|
+
id: get-version
|
|
45
|
+
run: |
|
|
46
|
+
version=$(grep '^version' pyproject.toml | head -1 | cut -d'"' -f2)
|
|
47
|
+
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
48
|
+
|
|
49
|
+
- name: Build package
|
|
50
|
+
run: uv build
|
|
51
|
+
|
|
52
|
+
- name: Verify build artifacts
|
|
53
|
+
run: |
|
|
54
|
+
ls -lh dist/
|
|
55
|
+
echo "Checking for duplicate files in wheel..."
|
|
56
|
+
unzip -l dist/*.whl | awk 'NR>3 && $4 != "" && $4 !~ /^-+$/ {print $4}' | sort | uniq -d | grep -q . && exit 1 || echo "No duplicates found"
|
|
57
|
+
echo "Checking sdist contents..."
|
|
58
|
+
tar tzf dist/*.tar.gz | head -20
|
|
59
|
+
|
|
60
|
+
- name: Check package metadata with twine
|
|
61
|
+
run: uv run --with twine twine check dist/*
|
|
62
|
+
|
|
63
|
+
- name: Upload build artifacts
|
|
64
|
+
uses: actions/upload-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: dist-packages
|
|
67
|
+
path: dist/
|
|
68
|
+
if-no-files-found: error
|
|
69
|
+
|
|
70
|
+
publish-to-pypi:
|
|
71
|
+
name: Publish to PyPI
|
|
72
|
+
needs:
|
|
73
|
+
- readiness
|
|
74
|
+
- build
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
environment:
|
|
77
|
+
name: pypi
|
|
78
|
+
url: https://pypi.org/project/batho/${{ needs.build.outputs.version }}/
|
|
79
|
+
|
|
80
|
+
steps:
|
|
81
|
+
- name: Guard against accidental manual trigger
|
|
82
|
+
if: github.event_name == 'workflow_dispatch'
|
|
83
|
+
run: |
|
|
84
|
+
if [ "${{ github.event.inputs.confirm }}" != "publish" ]; then
|
|
85
|
+
echo "Aborted: confirmation input was not 'publish'"
|
|
86
|
+
exit 1
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
- name: Download build artifacts
|
|
90
|
+
uses: actions/download-artifact@v4
|
|
91
|
+
with:
|
|
92
|
+
name: dist-packages
|
|
93
|
+
path: dist/
|
|
94
|
+
|
|
95
|
+
- name: List artifacts
|
|
96
|
+
run: ls -lh dist/
|
|
97
|
+
|
|
98
|
+
- name: Publish to PyPI
|
|
99
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
100
|
+
with:
|
|
101
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
102
|
+
verbose: true
|
|
103
|
+
|
|
104
|
+
verify-install:
|
|
105
|
+
name: Verify PyPI install
|
|
106
|
+
needs:
|
|
107
|
+
- publish-to-pypi
|
|
108
|
+
- build
|
|
109
|
+
runs-on: ubuntu-latest
|
|
110
|
+
steps:
|
|
111
|
+
- name: Install uv
|
|
112
|
+
uses: astral-sh/setup-uv@v4
|
|
113
|
+
|
|
114
|
+
- name: Set up Python
|
|
115
|
+
run: uv python install 3.12
|
|
116
|
+
|
|
117
|
+
- name: Install from PyPI and verify
|
|
118
|
+
run: |
|
|
119
|
+
uv venv .verify-venv
|
|
120
|
+
source .verify-venv/bin/activate
|
|
121
|
+
uv pip install batho==${{ needs.build.outputs.version }}
|
|
122
|
+
python -c "import batho; print(f'Installed batho {batho.__version__}')"
|
|
123
|
+
batho --version
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Publish to TestPyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*-test*' # Trigger on tags like v0.1.0-test1, v0.2.0-test2
|
|
7
|
+
workflow_dispatch: # Allow manual trigger
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build-and-publish:
|
|
14
|
+
name: Build and publish to TestPyPI
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout code
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
run: uv python install 3.12
|
|
26
|
+
|
|
27
|
+
- name: Build package
|
|
28
|
+
run: uv build
|
|
29
|
+
|
|
30
|
+
- name: Verify build artifacts
|
|
31
|
+
run: |
|
|
32
|
+
ls -lh dist/
|
|
33
|
+
echo "Checking for duplicate files in wheel..."
|
|
34
|
+
unzip -l dist/*.whl | awk '{print $4}' | sort | uniq -d || echo "No duplicates found ✓"
|
|
35
|
+
|
|
36
|
+
- name: Publish to TestPyPI
|
|
37
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
38
|
+
with:
|
|
39
|
+
repository-url: https://test.pypi.org/legacy/
|
|
40
|
+
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
|
|
41
|
+
skip-existing: true
|
|
42
|
+
verbose: true
|
|
43
|
+
|
|
44
|
+
- name: Test installation from TestPyPI
|
|
45
|
+
run: |
|
|
46
|
+
sleep 10 # Wait for package to be available
|
|
47
|
+
uv venv .test-venv
|
|
48
|
+
source .test-venv/bin/activate
|
|
49
|
+
uv pip install --index-url https://test.pypi.org/simple/ \
|
|
50
|
+
--extra-index-url https://pypi.org/simple \
|
|
51
|
+
batho==$(cat pyproject.toml | grep '^version' | cut -d'"' -f2)
|
|
52
|
+
|
|
53
|
+
# Verify installation
|
|
54
|
+
python -c "import batho; print(f'Batho version: {batho.__version__}')"
|
|
55
|
+
batho --version
|
|
56
|
+
|
|
57
|
+
- name: Upload build artifacts
|
|
58
|
+
uses: actions/upload-artifact@v4
|
|
59
|
+
with:
|
|
60
|
+
name: dist-packages
|
|
61
|
+
path: dist/
|
|
62
|
+
retention-days: 7
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
name: Release Readiness Check
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
outputs:
|
|
6
|
+
version:
|
|
7
|
+
description: "Extracted version from pyproject.toml"
|
|
8
|
+
value: ${{ jobs.validate.outputs.version }}
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [main]
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: release-readiness-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
test:
|
|
22
|
+
name: Test Suite
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
|
|
28
|
+
- name: Install uv
|
|
29
|
+
uses: astral-sh/setup-uv@v4
|
|
30
|
+
|
|
31
|
+
- name: Set up Python
|
|
32
|
+
run: uv python install 3.12
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: uv sync --all-extras
|
|
36
|
+
|
|
37
|
+
- name: Run tests with coverage
|
|
38
|
+
run: |
|
|
39
|
+
uv run pytest \
|
|
40
|
+
--cov=batho \
|
|
41
|
+
--cov=batho_cli \
|
|
42
|
+
--cov-report=xml \
|
|
43
|
+
--cov-report=term-missing
|
|
44
|
+
|
|
45
|
+
- name: Upload coverage
|
|
46
|
+
uses: actions/upload-artifact@v4
|
|
47
|
+
with:
|
|
48
|
+
name: coverage
|
|
49
|
+
path: coverage.xml
|
|
50
|
+
retention-days: 1
|
|
51
|
+
|
|
52
|
+
validate:
|
|
53
|
+
name: Validate Release
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
outputs:
|
|
56
|
+
version: ${{ steps.version.outputs.version }}
|
|
57
|
+
|
|
58
|
+
steps:
|
|
59
|
+
- name: Checkout
|
|
60
|
+
uses: actions/checkout@v4
|
|
61
|
+
|
|
62
|
+
- name: Install uv
|
|
63
|
+
uses: astral-sh/setup-uv@v4
|
|
64
|
+
|
|
65
|
+
- name: Set up Python
|
|
66
|
+
run: uv python install 3.12
|
|
67
|
+
|
|
68
|
+
- name: Extract version
|
|
69
|
+
id: version
|
|
70
|
+
run: |
|
|
71
|
+
version=$(grep '^version' pyproject.toml | head -1 | cut -d'"' -f2)
|
|
72
|
+
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
73
|
+
echo "Detected version: $version"
|
|
74
|
+
|
|
75
|
+
- name: Verify tag matches version (tag pushes only)
|
|
76
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
77
|
+
run: |
|
|
78
|
+
tag=${GITHUB_REF#refs/tags/v}
|
|
79
|
+
version=${{ steps.version.outputs.version }}
|
|
80
|
+
if [ "$tag" != "$version" ]; then
|
|
81
|
+
echo "ERROR: Git tag ($tag) does not match pyproject.toml version ($version)"
|
|
82
|
+
exit 1
|
|
83
|
+
fi
|
|
84
|
+
echo "Tag and version match: $version"
|
|
85
|
+
|
|
86
|
+
- name: Verify clean working tree (non-PR only)
|
|
87
|
+
if: github.event_name != 'pull_request'
|
|
88
|
+
run: |
|
|
89
|
+
if [ -n "$(git status --porcelain)" ]; then
|
|
90
|
+
echo "ERROR: Working tree is not clean"
|
|
91
|
+
git status --short
|
|
92
|
+
exit 1
|
|
93
|
+
fi
|
|
94
|
+
echo "Working tree is clean"
|
|
95
|
+
|
|
96
|
+
- name: Build package
|
|
97
|
+
run: uv build
|
|
98
|
+
|
|
99
|
+
- name: Verify build artifacts
|
|
100
|
+
run: |
|
|
101
|
+
ls -lh dist/
|
|
102
|
+
echo "Checking for duplicate files in wheel..."
|
|
103
|
+
unzip -l dist/*.whl | awk 'NR>3 && $4 != "" && $4 !~ /^-+$/ {print $4}' | sort | uniq -d | grep -q . && exit 1 || echo "No duplicates found"
|
|
104
|
+
|
|
105
|
+
- name: Check package metadata with twine
|
|
106
|
+
run: uv run --with twine twine check dist/*
|
|
107
|
+
|
|
108
|
+
- name: Test local install
|
|
109
|
+
run: |
|
|
110
|
+
uv venv .check-venv
|
|
111
|
+
source .check-venv/bin/activate
|
|
112
|
+
uv pip install dist/*.whl
|
|
113
|
+
python -c "import batho; print(f'Installed batho {batho.__version__}')"
|
|
114
|
+
batho --version
|
batho-0.1.4/.gitignore
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Python cache and build artifacts
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.so
|
|
5
|
+
*.egg
|
|
6
|
+
*.egg-info/
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
wheels/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
env/
|
|
16
|
+
.env/
|
|
17
|
+
|
|
18
|
+
# Test, coverage, and output
|
|
19
|
+
.coverage
|
|
20
|
+
.pytest_cache/
|
|
21
|
+
htmlcov/
|
|
22
|
+
coverage.xml
|
|
23
|
+
test-results.xml
|
|
24
|
+
test_output.puml
|
|
25
|
+
|
|
26
|
+
# Supabase and .ctn artifacts
|
|
27
|
+
supabase/
|
|
28
|
+
.ctn/
|
|
29
|
+
|
|
30
|
+
# Editor/OS files
|
|
31
|
+
.DS_Store
|
|
32
|
+
Thumbs.db
|
|
33
|
+
*.swp
|
|
34
|
+
*.swo
|
|
35
|
+
*.bak
|
|
36
|
+
*.tmp
|
|
37
|
+
~$*
|
|
38
|
+
|
|
39
|
+
# IDE/project files
|
|
40
|
+
.vscode/
|
|
41
|
+
.idea/
|
|
42
|
+
*.iml
|
|
43
|
+
docs/*
|
|
44
|
+
BSGautoresearch/repos/
|
|
45
|
+
BSGautoresearch/generated/
|
|
46
|
+
BSGautoresearch/state/
|
|
47
|
+
BSGautoresearch/.env
|
|
48
|
+
bsg_analysis.ipynb
|
|
49
|
+
.DS_Store
|
|
50
|
+
issue.md
|
|
51
|
+
plans/*
|