groundworkers 0.3.3__tar.gz → 0.4.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.
- groundworkers-0.4.0/.githooks/pre-commit +36 -0
- groundworkers-0.4.0/.github/CONTRIBUTING.md +27 -0
- groundworkers-0.4.0/.github/ISSUE_TEMPLATE/bug_report.yml +66 -0
- groundworkers-0.4.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- groundworkers-0.4.0/.github/ISSUE_TEMPLATE/feature_request.yml +32 -0
- groundworkers-0.4.0/.github/ISSUE_TEMPLATE/not_working.yml +65 -0
- groundworkers-0.4.0/.github/PULL_REQUEST_TEMPLATE.md +9 -0
- groundworkers-0.4.0/.github/release-drafter.yml +31 -0
- groundworkers-0.4.0/.github/workflows/ci.yml +10 -0
- groundworkers-0.4.0/.github/workflows/docs.yml +10 -0
- groundworkers-0.4.0/.github/workflows/merge.yml +13 -0
- groundworkers-0.4.0/.github/workflows/publish.yml +21 -0
- groundworkers-0.4.0/.gitignore +22 -0
- groundworkers-0.4.0/.python-version +1 -0
- groundworkers-0.4.0/CHANGELOG.md +500 -0
- groundworkers-0.4.0/Makefile +23 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/PKG-INFO +57 -54
- {groundworkers-0.3.3 → groundworkers-0.4.0}/README.md +10 -19
- groundworkers-0.4.0/config/docker-compose.yaml +40 -0
- groundworkers-0.4.0/config/groundworkers.example.toml +141 -0
- groundworkers-0.4.0/config/groundworkers_db.env +5 -0
- groundworkers-0.4.0/docs/adapters/cdm.md +53 -0
- groundworkers-0.4.0/docs/adapters/omop_emb.md +69 -0
- groundworkers-0.4.0/docs/adapters/omop_graph.md +67 -0
- groundworkers-0.4.0/docs/architecture.md +181 -0
- groundworkers-0.4.0/docs/concepts.md +98 -0
- groundworkers-0.4.0/docs/development/extending.md +121 -0
- groundworkers-0.4.0/docs/development/integration.md +132 -0
- groundworkers-0.4.0/docs/from-scratch.md +102 -0
- groundworkers-0.4.0/docs/index.md +66 -0
- groundworkers-0.4.0/docs/js/mermaid-init.js +6 -0
- groundworkers-0.4.0/docs/reference/ref_adapters.md +17 -0
- groundworkers-0.4.0/docs/reference/ref_base.md +13 -0
- groundworkers-0.4.0/docs/reference/ref_config.md +3 -0
- groundworkers-0.4.0/docs/reference/ref_services.md +61 -0
- groundworkers-0.4.0/docs/reference/ref_tools.md +41 -0
- groundworkers-0.4.0/docs/services/domain.md +106 -0
- groundworkers-0.4.0/docs/services/graph.md +57 -0
- groundworkers-0.4.0/docs/services/grounding.md +50 -0
- groundworkers-0.4.0/docs/services/mapping.md +106 -0
- groundworkers-0.4.0/docs/services/semantic_projection.md +153 -0
- groundworkers-0.4.0/docs/services/source_planning.md +39 -0
- groundworkers-0.4.0/docs/services/text.md +165 -0
- groundworkers-0.4.0/docs/services/vocab.md +168 -0
- groundworkers-0.4.0/docs/static/01_create_config.png +0 -0
- groundworkers-0.4.0/docs/static/02_empty_config.png +0 -0
- groundworkers-0.4.0/docs/static/03_config_wizard.png +0 -0
- groundworkers-0.4.0/docs/static/04_test_cnx.png +0 -0
- groundworkers-0.4.0/docs/static/04_warnings.png +0 -0
- groundworkers-0.4.0/docs/static/05_graph_setup.png +0 -0
- groundworkers-0.4.0/docs/static/06_load_predicates.png +0 -0
- groundworkers-0.4.0/docs/static/07_vector_store.png +0 -0
- groundworkers-0.4.0/docs/static/08_register_embedding.png +0 -0
- groundworkers-0.4.0/docs/static/10_setup_complete.png +0 -0
- groundworkers-0.4.0/docs/tools/concept.md +318 -0
- groundworkers-0.4.0/docs/tools/domain.md +81 -0
- groundworkers-0.4.0/docs/tools/embedding.md +95 -0
- groundworkers-0.4.0/docs/tools/knowledge.md +46 -0
- groundworkers-0.4.0/docs/tools/mapping.md +220 -0
- groundworkers-0.4.0/docs/tools/overview.md +54 -0
- groundworkers-0.4.0/docs/tools/resolver.md +70 -0
- groundworkers-0.4.0/docs/tools/search.md +156 -0
- groundworkers-0.4.0/docs/tools/semantic_projection.md +127 -0
- groundworkers-0.4.0/docs/tools/source_planning.md +48 -0
- groundworkers-0.4.0/docs/tools/system.md +68 -0
- groundworkers-0.4.0/docs/tools/text.md +104 -0
- groundworkers-0.4.0/docs/usage/configuration.md +345 -0
- groundworkers-0.4.0/docs/usage/installation.md +119 -0
- groundworkers-0.4.0/docs/usage/integrations.md +138 -0
- groundworkers-0.4.0/docs/usage/setup_journey.md +17 -0
- groundworkers-0.4.0/docs/usage/testing.md +34 -0
- groundworkers-0.4.0/groundworkers.bundle +0 -0
- groundworkers-0.4.0/mkdocs.yaml +102 -0
- groundworkers-0.4.0/pyproject.toml +120 -0
- groundworkers-0.4.0/src/groundworkers/__init__.py +10 -0
- groundworkers-0.4.0/src/groundworkers/_env.py +108 -0
- groundworkers-0.4.0/src/groundworkers/adapters/llm.py +298 -0
- groundworkers-0.4.0/src/groundworkers/adapters/omop_emb.py +473 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/adapters/omop_graph.py +293 -72
- groundworkers-0.4.0/src/groundworkers/app.py +186 -0
- groundworkers-0.4.0/src/groundworkers/application/__init__.py +1 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/__init__.py +6 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/configuration.py +229 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/configuration_provider.py +2032 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/databases.py +940 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_artifacts.py +145 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_capability.py +125 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_coverage.py +118 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_population.py +307 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_reconciliation.py +101 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_registry.py +91 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/embedding_setup.py +522 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/graph_maintenance.py +249 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/integration.py +44 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/maintenance.py +85 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/maintenance_runs.py +851 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/model_inventory.py +83 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/models.py +490 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/performance_maintenance.py +153 -0
- groundworkers-0.4.0/src/groundworkers/application/setup/runtime_setup.py +419 -0
- groundworkers-0.4.0/src/groundworkers/base/__init__.py +24 -0
- groundworkers-0.4.0/src/groundworkers/base/errors.py +86 -0
- groundworkers-0.4.0/src/groundworkers/base/results.py +64 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/base/server.py +92 -7
- groundworkers-0.4.0/src/groundworkers/base/sql.py +16 -0
- groundworkers-0.4.0/src/groundworkers/bootstrap.py +97 -0
- groundworkers-0.4.0/src/groundworkers/config/README +6 -0
- groundworkers-0.4.0/src/groundworkers/config/predicate_classification.csv +26 -0
- groundworkers-0.4.0/src/groundworkers/config/predicate_mapping.csv +735 -0
- groundworkers-0.4.0/src/groundworkers/config.py +322 -0
- groundworkers-0.4.0/src/groundworkers/server.py +307 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/domain.py +32 -8
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/graph.py +141 -22
- groundworkers-0.4.0/src/groundworkers/services/grounding.py +228 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/knowledge/catalogue.py +2 -1
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/knowledge/models.py +0 -1
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/mapping.py +134 -16
- groundworkers-0.4.0/src/groundworkers/services/semantic_projection/__init__.py +25 -0
- groundworkers-0.4.0/src/groundworkers/services/semantic_projection/definitions.py +323 -0
- groundworkers-0.4.0/src/groundworkers/services/semantic_projection/models.py +82 -0
- groundworkers-0.4.0/src/groundworkers/services/semantic_projection/service.py +147 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/__init__.py +18 -15
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/assisted.py +30 -4
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/classifier.py +11 -8
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/csv_.py +4 -2
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/docx_.py +5 -2
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/models.py +13 -3
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/normalisation.py +4 -3
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/service.py +55 -4
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/__init__.py +10 -4
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/redcap.py +3 -1
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/registry.py +6 -2
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/prompts.py +0 -1
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/service.py +83 -1
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/vocab.py +52 -10
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/concept_tools.py +8 -30
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/domain_tools.py +7 -6
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/embedding_tools.py +7 -15
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/knowledge_tools.py +8 -8
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/mapping_tools.py +8 -24
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/resolver_tools.py +32 -19
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/search_tools.py +3 -9
- groundworkers-0.4.0/src/groundworkers/tools/semantic_projection_tools.py +78 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/source_planning_tools.py +5 -10
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/system_tools.py +114 -19
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/text_tools.py +30 -26
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/rest/api.py +28 -4
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/rest/models.py +2 -2
- groundworkers-0.4.0/src/groundworkers/tui/__init__.py +5 -0
- groundworkers-0.4.0/src/groundworkers/tui/app.py +132 -0
- groundworkers-0.4.0/src/groundworkers/tui/pages/__init__.py +5 -0
- groundworkers-0.4.0/src/groundworkers/tui/pages/base.py +52 -0
- groundworkers-0.4.0/src/groundworkers/tui/pages/setup.py +1000 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/__init__.py +1 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/base.py +59 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/chat.py +45 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/configuration.py +57 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/database.py +284 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/embeddings.py +606 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/graph.py +116 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/llm_provider.py +298 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/overview.py +131 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/performance.py +173 -0
- groundworkers-0.4.0/src/groundworkers/tui/presenters/runs.py +162 -0
- groundworkers-0.4.0/src/groundworkers/tui/routes.py +9 -0
- groundworkers-0.4.0/src/groundworkers/tui/state.py +80 -0
- groundworkers-0.4.0/src/groundworkers/tui/wizards/__init__.py +1 -0
- groundworkers-0.4.0/src/groundworkers/tui/wizards/config_location.py +235 -0
- groundworkers-0.4.0/src/groundworkers/tui/wizards/embedding_store.py +96 -0
- groundworkers-0.4.0/src/groundworkers/tui/wizards/embeddings.py +525 -0
- groundworkers-0.4.0/src/groundworkers/tui/wizards/graph_maintenance.py +415 -0
- groundworkers-0.4.0/src/groundworkers/tui/wizards/performance_maintenance.py +221 -0
- groundworkers-0.4.0/tests/__init__.py +0 -0
- groundworkers-0.4.0/tests/conftest.py +33 -0
- groundworkers-0.4.0/tests/integration/__init__.py +0 -0
- groundworkers-0.4.0/tests/integration/test_omop_emb_adapter.py +94 -0
- groundworkers-0.4.0/tests/integration/test_omop_graph_adapter.py +422 -0
- groundworkers-0.4.0/tests/support/__init__.py +13 -0
- groundworkers-0.4.0/tests/support/stack_config.py +170 -0
- groundworkers-0.4.0/tests/test_bootstrap_config.py +276 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/tests/test_rest_api.py +56 -13
- groundworkers-0.4.0/tests/test_server_registry.py +502 -0
- groundworkers-0.4.0/tests/unit/__init__.py +0 -0
- groundworkers-0.4.0/tests/unit/test_concept_tools.py +746 -0
- groundworkers-0.4.0/tests/unit/test_config_location_wizard.py +344 -0
- groundworkers-0.4.0/tests/unit/test_configuration_provider.py +617 -0
- groundworkers-0.4.0/tests/unit/test_domain_tools.py +118 -0
- groundworkers-0.4.0/tests/unit/test_embedding_population_scope.py +212 -0
- groundworkers-0.4.0/tests/unit/test_embedding_reconciliation.py +307 -0
- groundworkers-0.4.0/tests/unit/test_embedding_registry_step.py +159 -0
- groundworkers-0.4.0/tests/unit/test_embedding_tools.py +238 -0
- groundworkers-0.4.0/tests/unit/test_env_bootstrap.py +180 -0
- groundworkers-0.4.0/tests/unit/test_error_boundary.py +50 -0
- groundworkers-0.4.0/tests/unit/test_graph_maintenance.py +194 -0
- groundworkers-0.4.0/tests/unit/test_graph_maintenance_wizard.py +265 -0
- groundworkers-0.4.0/tests/unit/test_graph_service.py +59 -0
- groundworkers-0.4.0/tests/unit/test_graph_status.py +118 -0
- groundworkers-0.4.0/tests/unit/test_grounding_constraints.py +603 -0
- groundworkers-0.4.0/tests/unit/test_grounding_service.py +202 -0
- groundworkers-0.4.0/tests/unit/test_knowledge_catalogue.py +219 -0
- groundworkers-0.4.0/tests/unit/test_llm_adapter.py +263 -0
- groundworkers-0.4.0/tests/unit/test_maintenance_phase1.py +68 -0
- groundworkers-0.4.0/tests/unit/test_maintenance_runs_phase2.py +264 -0
- groundworkers-0.4.0/tests/unit/test_mapping_service.py +613 -0
- groundworkers-0.4.0/tests/unit/test_mapping_tools.py +142 -0
- groundworkers-0.4.0/tests/unit/test_migration_boundaries.py +164 -0
- groundworkers-0.4.0/tests/unit/test_omop_emb_adapter.py +336 -0
- groundworkers-0.4.0/tests/unit/test_omop_emb_setup_config.py +163 -0
- groundworkers-0.4.0/tests/unit/test_omop_graph_adapter.py +236 -0
- groundworkers-0.4.0/tests/unit/test_performance.py +65 -0
- groundworkers-0.4.0/tests/unit/test_phase3_overview.py +66 -0
- groundworkers-0.4.0/tests/unit/test_provider_fields.py +66 -0
- groundworkers-0.4.0/tests/unit/test_semantic_projection_service.py +333 -0
- groundworkers-0.4.0/tests/unit/test_semantic_projection_tools.py +119 -0
- groundworkers-0.4.0/tests/unit/test_setup_artifacts_and_coverage.py +134 -0
- groundworkers-0.4.0/tests/unit/test_setup_configuration.py +175 -0
- groundworkers-0.4.0/tests/unit/test_setup_configuration_section.py +68 -0
- groundworkers-0.4.0/tests/unit/test_setup_databases.py +471 -0
- groundworkers-0.4.0/tests/unit/test_setup_embeddings.py +545 -0
- groundworkers-0.4.0/tests/unit/test_setup_provider_conformance.py +197 -0
- groundworkers-0.4.0/tests/unit/test_setup_runtime.py +276 -0
- groundworkers-0.4.0/tests/unit/test_setup_truth.py +185 -0
- groundworkers-0.4.0/tests/unit/test_setup_write_flows.py +498 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_classifier.py +205 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_decomposer.py +134 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_detector.py +46 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_models.py +141 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_normalisation.py +128 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_router.py +277 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_service.py +403 -0
- groundworkers-0.4.0/tests/unit/test_source_planning_tools.py +87 -0
- groundworkers-0.4.0/tests/unit/test_stack_config_fixtures.py +55 -0
- groundworkers-0.4.0/tests/unit/test_system_tools.py +412 -0
- groundworkers-0.4.0/tests/unit/test_text_service.py +262 -0
- groundworkers-0.4.0/tests/unit/test_text_tools.py +399 -0
- groundworkers-0.4.0/tests/unit/test_tui_app.py +732 -0
- groundworkers-0.4.0/tests/unit/test_tui_state.py +475 -0
- groundworkers-0.4.0/tests/unit/test_vector_store_setup.py +208 -0
- groundworkers-0.4.0/tests/unit/test_vocab_service.py +141 -0
- groundworkers-0.4.0/uv.lock +5066 -0
- groundworkers-0.3.3/pyproject.toml +0 -86
- groundworkers-0.3.3/setup.cfg +0 -4
- groundworkers-0.3.3/src/groundworkers/__init__.py +0 -3
- groundworkers-0.3.3/src/groundworkers/adapters/llm.py +0 -177
- groundworkers-0.3.3/src/groundworkers/adapters/omop_emb.py +0 -304
- groundworkers-0.3.3/src/groundworkers/app.py +0 -213
- groundworkers-0.3.3/src/groundworkers/base/__init__.py +0 -14
- groundworkers-0.3.3/src/groundworkers/base/errors.py +0 -22
- groundworkers-0.3.3/src/groundworkers/base/results.py +0 -38
- groundworkers-0.3.3/src/groundworkers/bootstrap.py +0 -120
- groundworkers-0.3.3/src/groundworkers/config.py +0 -276
- groundworkers-0.3.3/src/groundworkers/server.py +0 -133
- groundworkers-0.3.3/src/groundworkers/services/grounding.py +0 -118
- groundworkers-0.3.3/src/groundworkers.egg-info/PKG-INFO +0 -179
- groundworkers-0.3.3/src/groundworkers.egg-info/SOURCES.txt +0 -93
- groundworkers-0.3.3/src/groundworkers.egg-info/dependency_links.txt +0 -1
- groundworkers-0.3.3/src/groundworkers.egg-info/entry_points.txt +0 -5
- groundworkers-0.3.3/src/groundworkers.egg-info/requires.txt +0 -47
- groundworkers-0.3.3/src/groundworkers.egg-info/top_level.txt +0 -1
- groundworkers-0.3.3/tests/test_bootstrap_config.py +0 -151
- groundworkers-0.3.3/tests/test_server_registry.py +0 -419
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/adapters/__init__.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/adapters/cdm.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/criteria-gate-yesno/guidance.md +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/criteria-gate-yesno/manifest.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/diagnosis-role-modifier/guidance.md +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/diagnosis-role-modifier/manifest.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/domain-routing/guidance.md +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/domain-routing/manifest.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/domain-routing/rules.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/drug-concept-granularity/guidance.md +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/drug-concept-granularity/manifest.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/drug-concept-granularity/rules.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/history-of-event/guidance.md +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/history-of-event/manifest.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/standard-concept-preference/guidance.md +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/standard-concept-preference/manifest.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/standard-concept-preference/rules.yaml +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/__init__.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/knowledge/__init__.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/canonical_headers.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposer.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/__init__.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/ddl_.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/json_.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/pdf_.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/xlsx_.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/xml_.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/detector.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/provenance.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/router.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/serialisation.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/base.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/warnings.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/__init__.py +1 -1
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/models.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/__init__.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/__init__.py +0 -0
- {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/rest/__init__.py +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Canonical CAVA pre-commit hook: keeps uv.lock in sync with pyproject.toml.
|
|
3
|
+
#
|
|
4
|
+
# If pyproject.toml is staged, finds the specific dependency line(s) that
|
|
5
|
+
# changed (added, removed, or had their version spec edited) and refreshes
|
|
6
|
+
# only those packages in uv.lock via `uv lock --upgrade-package`. Does not
|
|
7
|
+
# touch any other package -- this is a targeted sync, not a blanket
|
|
8
|
+
# `uv lock`, so it never pulls in an unrelated upstream release.
|
|
9
|
+
set -euo pipefail
|
|
10
|
+
|
|
11
|
+
if ! git diff --cached --name-only | grep -q '^pyproject\.toml$'; then
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if ! command -v uv >/dev/null 2>&1; then
|
|
16
|
+
echo "pre-commit: uv not found on PATH, skipping uv.lock sync" >&2
|
|
17
|
+
exit 0
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
changed_names=$(git diff --cached -- pyproject.toml \
|
|
21
|
+
| sed -nE 's/^[+-][[:space:]]*"([A-Za-z0-9][A-Za-z0-9._-]*).*/\1/p' \
|
|
22
|
+
| sort -u)
|
|
23
|
+
|
|
24
|
+
if [ -z "$changed_names" ]; then
|
|
25
|
+
exit 0
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
upgrade_args=()
|
|
29
|
+
while IFS= read -r name; do
|
|
30
|
+
upgrade_args+=(--upgrade-package "$name")
|
|
31
|
+
done <<< "$changed_names"
|
|
32
|
+
|
|
33
|
+
echo "pre-commit: syncing uv.lock for changed dependencies:"
|
|
34
|
+
echo "$changed_names" | sed 's/^/ - /'
|
|
35
|
+
uv lock "${upgrade_args[@]}"
|
|
36
|
+
git add uv.lock
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Development setup
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
uv sync --all-extras --dev
|
|
7
|
+
uv run pytest -q
|
|
8
|
+
uv run ruff check .
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Opening a pull request
|
|
12
|
+
|
|
13
|
+
1. Apply **exactly one** label before merging:
|
|
14
|
+
|
|
15
|
+
| Label | When to use |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `breaking` | Public API change, backward-incompatible |
|
|
18
|
+
| `feature` | New functionality, backward-compatible |
|
|
19
|
+
| `fix` | Bug fix |
|
|
20
|
+
| `dependencies` | Dependency version update |
|
|
21
|
+
| `chore` | CI changes, refactoring, test additions, docs — anything that does not affect the public-facing package. Bypasses the label gate; excluded from the changelog and does not bump the version. |
|
|
22
|
+
|
|
23
|
+
2. When merging (squash), write a clear extended description in the merge dialog. That text — not the PR's opening description — becomes the changelog entry for this change. Leave it blank for `chore` PRs.
|
|
24
|
+
|
|
25
|
+
## Versioning and releases
|
|
26
|
+
|
|
27
|
+
Versions are derived from git tags; there is no version string in any source file. Releases are triggered by a maintainer publishing the standing draft release on the repository's Releases page. There is no automated commit-back to `main`.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: "🐞 Bug Report"
|
|
2
|
+
description: Report a reproducible bug.
|
|
3
|
+
type: "Bug"
|
|
4
|
+
body:
|
|
5
|
+
- type: checkboxes
|
|
6
|
+
attributes:
|
|
7
|
+
label: Pre-flight
|
|
8
|
+
options:
|
|
9
|
+
- label: I searched existing issues and this is not a duplicate.
|
|
10
|
+
required: true
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: summary
|
|
14
|
+
attributes:
|
|
15
|
+
label: Summary
|
|
16
|
+
description: One or two sentences describing the bug.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: reproduction
|
|
22
|
+
attributes:
|
|
23
|
+
label: Reproduction
|
|
24
|
+
description: Steps and/or a minimal code example that reproduces the issue. Wrap code in triple backticks.
|
|
25
|
+
placeholder: |
|
|
26
|
+
1. Import X and call Y with Z
|
|
27
|
+
2. Observe error
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
# minimal example
|
|
31
|
+
```
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
|
|
35
|
+
- type: textarea
|
|
36
|
+
id: actual
|
|
37
|
+
attributes:
|
|
38
|
+
label: Actual behaviour
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: expected
|
|
44
|
+
attributes:
|
|
45
|
+
label: Expected behaviour
|
|
46
|
+
validations:
|
|
47
|
+
required: true
|
|
48
|
+
|
|
49
|
+
- type: textarea
|
|
50
|
+
id: logs
|
|
51
|
+
attributes:
|
|
52
|
+
label: Error output
|
|
53
|
+
description: Full traceback if applicable. Formatted automatically.
|
|
54
|
+
render: python-traceback
|
|
55
|
+
|
|
56
|
+
- type: textarea
|
|
57
|
+
id: system
|
|
58
|
+
attributes:
|
|
59
|
+
label: System info
|
|
60
|
+
description: |
|
|
61
|
+
Run this in your environment and paste the output:
|
|
62
|
+
|
|
63
|
+
```shell
|
|
64
|
+
python <(curl -s https://raw.githubusercontent.com/AustralianCancerDataNetwork/cava-devops/main/scripts/cava_system_info.py)
|
|
65
|
+
```
|
|
66
|
+
render: shell
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: "🚀 Feature Request"
|
|
2
|
+
description: Propose a new feature or enhancement.
|
|
3
|
+
type: "Feature"
|
|
4
|
+
body:
|
|
5
|
+
- type: checkboxes
|
|
6
|
+
attributes:
|
|
7
|
+
label: Pre-flight
|
|
8
|
+
options:
|
|
9
|
+
- label: I searched existing issues and this has not been requested before.
|
|
10
|
+
required: true
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: problem
|
|
14
|
+
attributes:
|
|
15
|
+
label: Problem or motivation
|
|
16
|
+
description: What are you trying to do that you currently cannot?
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: proposal
|
|
22
|
+
attributes:
|
|
23
|
+
label: Proposed solution
|
|
24
|
+
description: How would you like this to work?
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
|
|
28
|
+
- type: textarea
|
|
29
|
+
id: alternatives
|
|
30
|
+
attributes:
|
|
31
|
+
label: Alternatives considered
|
|
32
|
+
description: Other approaches you considered and why you ruled them out.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: "❗ Something is not working"
|
|
2
|
+
description: Something behaves unexpectedly but you are not sure if it is a bug.
|
|
3
|
+
body:
|
|
4
|
+
- type: checkboxes
|
|
5
|
+
attributes:
|
|
6
|
+
label: Pre-flight
|
|
7
|
+
options:
|
|
8
|
+
- label: I searched existing issues for this problem.
|
|
9
|
+
required: true
|
|
10
|
+
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: summary
|
|
13
|
+
attributes:
|
|
14
|
+
label: Problem summary
|
|
15
|
+
description: 1-2 sentences describing what is not working.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: reproduction
|
|
21
|
+
attributes:
|
|
22
|
+
label: Reproduction
|
|
23
|
+
description: Steps and/or a minimal code example. Wrap code in triple backticks.
|
|
24
|
+
placeholder: |
|
|
25
|
+
1. Import X and call Y with Z
|
|
26
|
+
2. Observe unexpected behaviour
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
# minimal example
|
|
30
|
+
```
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
|
|
34
|
+
- type: textarea
|
|
35
|
+
id: actual
|
|
36
|
+
attributes:
|
|
37
|
+
label: Actual outcome
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
|
|
41
|
+
- type: textarea
|
|
42
|
+
id: expected
|
|
43
|
+
attributes:
|
|
44
|
+
label: Expected outcome
|
|
45
|
+
validations:
|
|
46
|
+
required: true
|
|
47
|
+
|
|
48
|
+
- type: textarea
|
|
49
|
+
id: logs
|
|
50
|
+
attributes:
|
|
51
|
+
label: Error messages
|
|
52
|
+
description: Full traceback if applicable. Formatted automatically.
|
|
53
|
+
render: python-traceback
|
|
54
|
+
|
|
55
|
+
- type: textarea
|
|
56
|
+
id: system
|
|
57
|
+
attributes:
|
|
58
|
+
label: System info
|
|
59
|
+
description: |
|
|
60
|
+
Run this in your environment and paste the output:
|
|
61
|
+
|
|
62
|
+
```shell
|
|
63
|
+
python <(curl -s https://raw.githubusercontent.com/AustralianCancerDataNetwork/cava-devops/main/scripts/cava_system_info.py)
|
|
64
|
+
```
|
|
65
|
+
render: shell
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- What does this PR do? This text becomes the changelog entry — write it for a reader who will see it months from now, not for the reviewer reading the diff. Leave blank for chore PRs. -->
|
|
4
|
+
|
|
5
|
+
## Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Applied exactly one label (`breaking`, `feature`, `fix`, `dependencies`, or `chore`)
|
|
8
|
+
- [ ] Tests pass locally (`uv run pytest -q`)
|
|
9
|
+
- [ ] Lint passes (`uv run ruff check .`)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name-template: 'v$RESOLVED_VERSION'
|
|
2
|
+
tag-template: 'v$RESOLVED_VERSION'
|
|
3
|
+
commitish: main
|
|
4
|
+
|
|
5
|
+
categories:
|
|
6
|
+
- title: Breaking Changes
|
|
7
|
+
labels: ['breaking']
|
|
8
|
+
- title: Features
|
|
9
|
+
labels: ['feature']
|
|
10
|
+
- title: Fixes
|
|
11
|
+
labels: ['fix']
|
|
12
|
+
- title: Dependencies
|
|
13
|
+
labels: ['dependencies']
|
|
14
|
+
|
|
15
|
+
template: |
|
|
16
|
+
$CHANGES
|
|
17
|
+
|
|
18
|
+
change-template: '- **$TITLE** (#$NUMBER) @$AUTHOR'
|
|
19
|
+
|
|
20
|
+
version-resolver:
|
|
21
|
+
major:
|
|
22
|
+
labels: ['breaking']
|
|
23
|
+
minor:
|
|
24
|
+
labels: ['feature']
|
|
25
|
+
patch:
|
|
26
|
+
labels: ['fix', 'dependencies']
|
|
27
|
+
default: patch
|
|
28
|
+
|
|
29
|
+
exclude-labels: ['chore']
|
|
30
|
+
|
|
31
|
+
autolabeler: []
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
branches: [main]
|
|
5
|
+
types: [opened, synchronize, reopened, labeled, unlabeled]
|
|
6
|
+
jobs:
|
|
7
|
+
label-gate:
|
|
8
|
+
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/label-gate.yml@main
|
|
9
|
+
build-test:
|
|
10
|
+
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test.yml@main
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
name: Release Update
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
types: [closed]
|
|
5
|
+
branches: [main]
|
|
6
|
+
permissions:
|
|
7
|
+
contents: write
|
|
8
|
+
pull-requests: read
|
|
9
|
+
jobs:
|
|
10
|
+
draft:
|
|
11
|
+
if: github.event.pull_request.merged == true
|
|
12
|
+
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/release-drafter.yml@main
|
|
13
|
+
secrets: inherit
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ['v*']
|
|
5
|
+
jobs:
|
|
6
|
+
build:
|
|
7
|
+
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/publish.yml@main
|
|
8
|
+
publish:
|
|
9
|
+
# Inline: PyPI OIDC checks job_workflow_ref, which must point to this file.
|
|
10
|
+
# Moving pypa/gh-action-pypi-publish into cava-devops would break the trusted publisher.
|
|
11
|
+
needs: build
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
id-token: write
|
|
15
|
+
environment:
|
|
16
|
+
name: pypi
|
|
17
|
+
url: https://pypi.org/p/groundworkers
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/download-artifact@v4
|
|
20
|
+
with: { name: dist, path: dist/ }
|
|
21
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
.venv/
|
|
4
|
+
.pytest_cache/
|
|
5
|
+
.mypy_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
.DS_Store
|
|
11
|
+
_design/
|
|
12
|
+
*.log
|
|
13
|
+
*.bak
|
|
14
|
+
*.tmp
|
|
15
|
+
.vscode/
|
|
16
|
+
settings.json
|
|
17
|
+
*.local.yaml
|
|
18
|
+
*.local.toml
|
|
19
|
+
site/
|
|
20
|
+
_knowledge/
|
|
21
|
+
data/
|
|
22
|
+
.env
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|